Adott egy (PXE-ről, CD/DVD-ről, vagy USB mass storage-ról) bootoló live Linux "disztribúció", amin egy archiváló/helyreállító szoftver fut, előregyártott feladatlistával, felhasználói interakció nélkül.
Az a feladat, hogy a gépben található, elsődleges merevlemezről (desktop gépek, a többségükben 1 darab SATA eszköz van) adatokat gyűjtsünk be. (vagy adatokat írjunk ki kötegelten)
Ez a feladat 1995-től 2013-ig nem jelentett problémát, mert az elsődleges merevlemezt mindig /dev/sda-nak hívták (PATA estében egy időben /dev/hda-nak) tehát, ha az volt a kérés, hogy mondjuk a harmadik partíció tartalmát olvassuk be, akkor megcsócsáltuk a /dev/sda3-at, és mindenki boldog volt.
Jött azonban a nagyszerű 3.6+ kernel, ahol párhuzamosították egyes blokk eszközök drájverének betöltését, így már többet nem a /dev/sda az elsődleges diszk, hanem mondjuk a bootolásra használt pendrájv. Vagy éppen a gépben lévő SD kártya olvasó. Vagy akármi.
A net ugye azzal van tele, hogy a fájlrendszerek csatolására, és a bútlóder konfigurálására használj UUID-ot/GUID-ot/PARTUUID-ot/LABEL-t/mittudoménmit. Ez oké, de ez azt feltételezi, hogy tudom, hogy az adott gépben mik ezek az egyedi azonosítók. Én meg nem tudom, mert ugyanazt az image-et bootolom fel 350 gépen, ahol minden azonosító egyedi. Sőt, ad abszurdum, lehet, hogy a diszk töküres, mert épp az a feladat, hogy írjak rá image-ből egy rendszer partíciót. Na, de melyik eszközbe, ha nem ő a /dev/sda?
initrd/initramfs és udev van, de mit mondjak neki, mit mappeljen le /dev/őkellnekem névre?
Van az a nagyon workaround ötletem, hogy modularizálni az összes nem-SATA/SAS block device drivert, és utólag betölteni (vagy egyáltalán be sem tölteni, csak ha épp tényleg kell) de tetszene valami korrektebb metódus. Ja, a kernel jelenleg monolitikus, történelmi okok miatt... (Tecciktudni, beágyazott rendszer, ami régen 1 floppyról ment, csak azóta kicsit kinőtte magát)
Ötletek are welcome.
Kösz!