Portál AbcLinuxu, 3. května 2025 22:52
Nedávno jsem narazil na informaci, kterou kdybych znal dříve, by mi mohla ušetřit pár nepříjemných starostí.
Na svém domácím počítači jsem na tento problém nenarazil, ale na jednom PC v práci mi kernel přecházel do panického stavu téměř po každém svém upgradu. Problémy vycházely z „ideální“ kombinace libata, dvou IDE řadičů, a jejich nepodpoře a následné podpoře v jádře. Přitom jsem si mohl všechny problémy odpustit, kdybych použil stabilní pojmenování blokových zařízení, čili persistent block device naming.
Genialita spočívá opět v jednoduchosti. Prostě není nutné adresovat zařízení pomocí /dev/sda1
, což se může různě měnit, ale pomocí popisku (label), UUID, ID (unikátního jména odvozeného dle výrobního čísla), a dle cesty (path - jméno vytvořené dle fyzické cesty k zařízení).
S ID a PATH může být problém, že se jejich název změní, protože jejich název označuje i subsystém, ve kterém se nacházejí. Myslím ale, že například pro flashdisky by mělo být použití bezproblémové.
/dev/disk/by-id/-Kingston_DataTraveler_II+_5B49182B099F-0:0-part1 /dev/disk/by-id/-Corsair_Voyager_GT_A300000000000571-0:0-part1
Pro disky jsou tedy zajímavé možnosti by-label a by-uuid. Z výše uvedeného příkladu je vidět, čím nahradit cestu /dev/sd*. Jsou to cesty
/dev/disk/by-id/ /dev/disk/by-label/ /dev/disk/by-path/ /dev/disk/by-uuid/
V praxi to pak může vypadat takto:
/etc/fstab ========================= /dev/disk/by-label/koren / reiserfs defaults,notail,noatime 0 0 /dev/disk/by-uuid/a4181f52-d226-466e-a63e-f2c18cb129b4 /disky/sata200gb jfs defaults 0 2 /boot/grub/menu.lst ========================= kernel /vmlinuz26 root=/dev/disk/by-uuid/3aef1fd0-b485-43e6-8870-0a971d0c6a0d ro
A pokud bych chtěl, aby se mi flashdisk připojil pokaždé do /mnt/corsair, mohu do /etc/fstab doplnit něco takového:
/dev/disk/by-id/-Corsair_Voyager_GT_A300000000000571-0:0-part1 /mnt/corsair vfat user,noauto 0 0
Doufám, že to některým z vás pomůže vyřešit některé problémy, a těm, kteří to už dávno znali, se omlouvám za ztracený čas.
Filip (filbar) v diskuzi poznamenal, že v systému adresář /dev/disk nemá - takže upřesním, že používám Arch Linux. Tak nějak naivně jsem předpokládal, že to funguje podobně i v ostatních distribucích. Měla by fungovat i syntaxe UUID=a4181f52-d226-466e-a63e-f2c18cb129b4
, nebo LABEL=koren
, ale nemám to kde otestovat.
Tiskni
Sdílej:
/dev/disk/neco
nemámTo ale patrně asi nebude pravda, protože Arch to měl už v červnu 2006.
Ještě doplním, že to neměla být óda na Arch, spíš jsem se leknul, že píšu o něčem, co je pro ostatní distribuce irelevantní. Nemám rád tady ty žabomyší války mezi distribucemi. Je nás mizivé procento, a přesto mají mnozí potřebu dohadovat se, jestli je lepší Ubuntu, Mandriva, Arch, či Gentoo (každý ať si doplní další hromadu distribucí)
LABEL=boot /boot ext2 defaults,noatime 1 1 LABEL=swap swap swap defaults 0 0 LABEL=root / ext3 defaults,noatime 1 1
je vnitrne nekonzistentni a vede k problemum.
Tohle by ale mělo sloužit právě k odstranění problémů. Údajně, pokud je v počítači více diskových řadičů, je pořadí, ve kterém jsou disky přidávány, náhodné. Takže se může stát, že při jednom bootu je root na /dev/sda3, a po dalším nabootování je root na /dev/sdb3. Na zmiňovaném počítači v práci mi disk záhadně přeskakoval mezi /dev/hda a /dev/hde.
Pokud jde o to, že se jedná jen o identifikaci filesystému, zase tak velký problém bych v tom neviděl, protože se obvykle při provozu filesystém nemění, každopádně se nezmění sám od sebe (pokud nedojde k nějaké chybě)
Jde o to, ze ten label nebo to UUID neidentifikuji blokove zarizeni, ale filesystem, ktery je na nem.A právě to je účelem, protože na současném linuxovém desktopu/notebooku/PDA vám nikdo nezaručí, že na
/dev/sdxy
naleznete pokaždé ten stejný filesystém.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.