|
Pages: [1]
|
 |
|
Auteur
|
Sujet: [Linux] Spécifier un fstab alternatif au démarrage (Lu 698 fois)
|
VIN100
Jr. Member
 
Sexe: 
Messages: 69
Questions? Action!
|
Bonjour,
J'ai récemment installé linux (Ubuntu Breezy) sur un disque amovible pour un cours au collège. J'aimerais pouvoir utiliser ce linux à la maison aussi, cependant ça causerait un petit problème dans les système de fichier. Au collège (là où j'ai effectué l'installation) le disque amovible est le HDA, alors que chez moi je le branche dans le HDD, donc le /etc/fstab de mon Breezy dit que / est du hda1, /home sur hda2, etc. alors que pour le faire marcher chez moi il faudrait que / soit hdd1, /home hdd2, etc.
C'est donc pour cela que je me demandais s'il était possible de préciser, dans GRUB, le fichier fstab à utiliser au démarrage? (par exemple avec un /etc/fstab2) Je n'ai pas trouvé beaucoup d'information sur les Options qu'on peut mettre au démarrage du kernel, et rien sur si c'est possible d'avoir 2 fstab...
Savez vous si c'est possible? Ou bien y a t'il un autre moyen de faire ce que je veux faire?
Merci.
|
|
|
|
|
Journalisée
|
VIN100...:. « Je suis la vie rêvée du gars dans le coin là-bas qui attend l'autobus » - Ohdoudou! -
|
|
|
maxime959
Full Member
  
Sexe: 
Messages: 143
Je suis un lama!
|
un truc que je peux te proposer est de faire 2 scripts que tu lances apres ton login qui vont monter les disques selon ou tu es.
|
|
|
|
|
Journalisée
|
|
|
|
VIN100
Jr. Member
 
Sexe: 
Messages: 69
Questions? Action!
|
Je ne comprends pas trop ce que tu veux dire? Le montage des partitions système (/, swap et /home) se fait lors du démarrage du kernel non? Donc je ne pense pas arriver à me loguer et exécuter les scripts si linux de démarre pas (kernel panic je crois, mais j'ai pas essayé en fait). Peut-être qu'un petit shéma pourrait aider : À l'école : HDA : disque amovible (boot sur lui, sinon sur le HDC) . . . . . Contient Grub en MBR et Linux (Breezy) (hda1, hda2, hda3) HDC : Windows À la maison : HDA : mon disque contenant Ubuntu Warty et Grub HDB : Disque de données HDC : Disque de données HDD : disque "amovible", où je brancherais Breezy le problème étant que je suppose que le kernel de Breezy (sur lequel je veux travailler puisqu'il est plus à jour), en se chargeant, va aller voir sont /etc/fstab, qui lui dit que "/" est sur hda1, "/home" sur hda3 et "swap" sur hda2, ce qui est correct au Cégep, mais pas à la Maison  Bien sûr je pourrais faire simple et reconfigurer mon Ubuntu Warty (celui de la maison) pour le mettre sur le HDD, et brancher mon Breezy sur le HDA, mais ça cause des problèmes de fils dans mon ordi et ça devient compliquer à brancher/débrancher... Je pourrais aussi me faire un script sur Warty (hdA maison) qui interchangerait 2 fichier fstab sur le hdD (Breezy), un pour le Cégep et l'autre pour la Maison. Le problème est que ça implique que : je branche le disque dur, je démarre sur Warty, j'interchange les fichiers, je redémarre sur Breezy, puis lorsque j'ai fini je redémarre sur Warty pour ré-interchanger les fichiers, pour ensuite débrancher le disque et l'ammener à l'école. C'est un peu chiant. Alors c'est pour ça que je me demandais si c'était possible de soit spécifier le fstab au kernel à partir de Grub? (sachant que c'est le Grub de mon Warty qui démarre à la maison et le Grub de mon Breezy qui démarre au Cégep). Voilà, c'est peut-être un peu plus clair... maxime959 : j'ai peut-être mal compris ce que tu as voulu dire, peut-être que tu avais la solution?
|
|
|
|
|
Journalisée
|
VIN100...:. « Je suis la vie rêvée du gars dans le coin là-bas qui attend l'autobus » - Ohdoudou! -
|
|
|
|
snihf
|
l'emplacement du / est passé en paramètre au noyau lors du boot je crois, en tout cas c'est le cas avec lilo, par exemple : image = /boot/vmlinuz-2.6.13.1-gr root = /dev/hda1 label = Linux-2.6.13.1 read-only
indique que ton / est sur /dev/hda1. Donc tu peux déjà régler le pb au moment du boot en mettant deux entrées différentes dans le /etc/lilo.conf. Par contre à ce moment là ta partosh / est montée en read only, et elle est ensuite remontée avec les autres partoshs à partir des informations lues dans le /etc/fstab, donc là tu as un problème. Je n'ai pas trouvé d'options dans mount permettant de lui faire lire un autre fichier que le /etc/fstab, mais tu peux éventuellement aller hacker tes fichiers de démarrage pour faire changer un lien symbolique selon tes besoins. Après, il faut que tu trouves un moyen de savoir au boot dans quel cas tu te trouves, je te conseille d'utiliser une variable d'environnement initialisée lors du boot. Exemple une variable LOCATION=chezmoi dans le premier cas LOCATION=ecole dans le second, et tu vérifies ça dans le script pour créer le bon lien symbolique vers ton fstab. Pour initialiser une variable d'environnement au boot, c'est la même chose que pour passer un paramètre au noyau, tu ajoutes un LOCATION=pouet dans les paramètres du noyau, comme ce n'est pas un paramètre reconnu, c'est automatiquement déclaré comme variable d'environnement. PS : je viens de voir que tu utilises grub, donc exemple grub : title Linux-2.6.13.1-gr root (hd0,1) kernel /boot/vmlinuz-2.6.13.1-gr ro root=/dev/hda1
edit : en me relisant je trouve pas ça très clair, donc plus d'infos là : http://www.tldp.org/HOWTO/BootPrompt-HOWTO-2.html#ss2.5 
|
|
|
|
« Dernière édition: 17 Septembre 2005, 23:11:13 par snihf »
|
Journalisée
|
|
|
|
|
VERSUS2000
|
Sinon plutot que de passer les partoches /dev/bidule. Y aurrais pas moyen d'utiliser udev ? Il me semble que udev est capable de reconnaitre un disque meme s'il change d'emplacement sur les napes. Faudrais creuser ça. Je crois que timid s'y connais un peu mieux que moi en udev...
|
|
|
|
|
Journalisée
|
Il existe des gens qui sont Hyperactifs. Les fous. Moi je me contente juste d'être Larveactif ^_^
|
|
|
maxime959
Full Member
  
Sexe: 
Messages: 143
Je suis un lama!
|
VIN100 > oublie j'ai di de la merde 
|
|
|
|
|
Journalisée
|
|
|
|
VIN100
Jr. Member
 
Sexe: 
Messages: 69
Questions? Action!
|
maxime959 : c'est correct, tu m'as fait chercher un peu plus sur le problème  snihf : Ça serait une idée intéressante oui, mais je viens de lire ça : Le noyau du système chargé et décompressé, s'exécute et s'initialise : réservation mémoire, prise en compte de la zone d'échange (swap), détection du matériel et chargement des pilotes des périphériques, montage du système de fichiers et enfin lance le 1er processus /sbin/init (à quelque part dans http://www.ac-creteil.fr/reseaux/systemes/linux/demarrage-linux.html) Donc si le montage du système de fichiers se fait avant même l'exécution d'inittab (ce que j'ai remarqué aussi en regardant les messages au boot de la machine), je ne vois pas trop comment faire un script qui changerait un lien symbolique.  Versus : je vais regarder udev plus en détail, même si juste avec le man j'ai pas trop compris encore ce que ça fait... Je suis quand même assez débutant en linux hein! Autre idée non fondée que j'ai eue : peut-être que "/etc/fstab" est précisé à quelque part dans les headers du noyau. Je pourrais donc modifier les sources et compiler un 2eme "vmlinuz" et spécifier ce kernel dans grub quand je suis chez moi, et booter sur l'ancien quand je suis au collège. Remarquez que je n'ai jamais compilé linux, que je n'ai aucune idée comment faire et que je sais pas si ce que j'ai dit est possible ou fonctionnel... 
|
|
|
|
|
Journalisée
|
VIN100...:. « Je suis la vie rêvée du gars dans le coin là-bas qui attend l'autobus » - Ohdoudou! -
|
|
|
|
snihf
|
snihf : Ça serait une idée intéressante oui, mais je viens de lire ça : (à quelque part dans http://www.ac-creteil.fr/reseaux/systemes/linux/demarrage-linux.html) Donc si le montage du système de fichiers se fait avant même l'exécution d'inittab (ce que j'ai remarqué aussi en regardant les messages au boot de la machine), je ne vois pas trop comment faire un script qui changerait un lien symbolique.  non, c'est / qui est monté en read only avant l'exécution d'inittab, et ce à partir des infos données par grub ou lilo, comme je l'ai plus ou moins expliqué plus haut. Autre idée non fondée que j'ai eue : peut-être que "/etc/fstab" est précisé à quelque part dans les headers du noyau. Je pourrais donc modifier les sources et compiler un 2eme "vmlinuz" et spécifier ce kernel dans grub quand je suis chez moi, et booter sur l'ancien quand je suis au collège. Remarquez que je n'ai jamais compilé linux, que je n'ai aucune idée comment faire et que je sais pas si ce que j'ai dit est possible ou fonctionnel...  /etc/fstab n'est pas lu par le noyau, mais par mount. Donc si tu dois recompiler quelque chose c'est mount, et tu en reviens au problème de modifier tes fichiers pour utiliser une version différente de mount selon l'endroit où tu te trouves. Mais de toute façon versus a raison, udev te permet de régler ton problème de façon beaucoup plus propre. Avec udev tu peux assigner un "device" (/dev/hda par exemple) à un périphérique donné à partir de son ProductId. Autrement dit le même disque dur sera toujours considéré comme /dev/hda quelque soit sont emplacement sur les nappes. Plus d'infos là : http://www.reactivated.net/udevrules.php
|
|
|
|
|
Journalisée
|
|
|
|
Popiet
Newbie

Sexe: 
Messages: 40
Mangue.org : mangez-en
|
je ne sais pas si c'est applicable dans ton cas, mais il me semble qu'on peut dire à grub quel disque doit être quoi. je m'explique : à la maison, j'avais linux sur un disque en master (hda) et win sur le slave (hdb). win refusait de booter dessus. pour le faire marcher, j'ai mis dans grub.conf, au debut de la section correspondant à win :
map (hd0,hd1) map (hd1,hd0)
ce qui je crois à pour effet de faire croire au systeme que hd1 (slave sur napper ide 0, hda) est en fait hd0 (master sur nappe ide 0, hdb), et vice-versa. donc peut-être qu'avec des map subtils tu peux t'en sortir. bon j'espère que j'ai pas dit trop de bêtises, cette manip je l'ai faite il y a assez longtemps quand même, et une seule fois.
|
|
|
|
|
Journalisée
|
Your american beer, guys, it's a bit like makin' love in canoe : it's fucking close to water
|
|
|
VIN100
Jr. Member
 
Sexe: 
Messages: 69
Questions? Action!
|
Merci les gars. Intéressant ce udev, je crois bien que c'est ce qu'il me faut. Le problème, c'est que je ne vois pas ce qui caractérise de façon définitive mes disques. ### Ma partition "/" pour mon Ubuntu Breezy (celui qui doit changer d'endroit) vin100@ubuntuV:/ $ udevinfo -a -p /sys/block/hdc/hdc1
udevinfo starts with the device the node belongs to and then walks up the device chain, to print for every device found, all possibly useful attributes in the udev key format. Only attributes within one device section may be used together in one rule, to match the device for which the node will be created.
looking at class device '/sys/block/hdc/hdc1': SYSFS{dev}="22:1" SYSFS{size}="7807527" SYSFS{start}="63" SYSFS{stat}=" 268 338 8 64"
### Et d'autres infos qui ne changent pas vraiment entre les différents disque/partitions (infos des connecteurs ide et pcimachins je crois)
### Directement mon disque avec Breezy
vin100@ubuntuV:/ $ udevinfo -a -p /sys/block/hdc
#...
looking at class device '/sys/block/hdc': SYSFS{dev}="22:0" SYSFS{range}="64" SYSFS{removable}="0" SYSFS{size}="16514064" SYSFS{stat}=" 83 2524 3931 1144 6 2 64 13 0 1154 1157"
### Ma partition "/" de Warty
vin100@ubuntuV:/ $ udevinfo -a -p /sys/block/hda/hda1 ... looking at class device '/sys/block/hda/hda1': SYSFS{dev}="3:1" SYSFS{size}="8191953" SYSFS{start}="63" SYSFS{stat}=" 5393 196362 5390 43120"
### Mon disque hda (Warty)
vin100@ubuntuV:/ $ udevinfo -a -p /sys/block/hda ... looking at class device '/sys/block/hda': SYSFS{dev}="3:0" SYSFS{range}="64" SYSFS{removable}="0" SYSFS{size}="40021632" SYSFS{stat}=" 5213 1180 201353 55446 1896 3688 44672 58575 0 46301 114021"
Dommage, il me donne pas de numéro de série ou de model... Et je n'ai aucune idée si size ou stat change au fil du temps. Je vais regarder plus en détail l'utilisation de script externe, je devrais pouvoir utiliser l'idée de snihf de mettre une variable d'environnement à partir de Grub, et de l'utiliser dans les règles de udev. À moins que je puisse faire plus simple directement avec les informations ci-haut. Et pendant ce temps la mes devoirs avancent pas 
|
|
|
|
|
Journalisée
|
VIN100...:. « Je suis la vie rêvée du gars dans le coin là-bas qui attend l'autobus » - Ohdoudou! -
|
|
|
|
TiMiD
|
Dans ton cas tu pourrasi toujours faire matcher udev sur size (tous tes disques ont l'air d'être de taille différente) dans le cas général, je n'ai pas trouvé comment faire pour obtenir un identificateur unique pour les disques IDE si tu as du temps, regarde du côté de http://source.mvista.com/sde/, c'est un remplacant de udev qui a l'air de gérer ca, et plein d'autres trucs que udev gère pas ...
|
|
|
|
|
Journalisée
|
|
|
|
|
|
Pages: [1]
|
|
|
 |