Summary: | Не корректно создаёт /etc/lilo.conf | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Andriy Stepanov (stanv) <stanv> |
Component: | alterator-lilo | Assignee: | Anton V. Boyarshinov <boyarsh> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | critical | ||
Priority: | P3 | CC: | boyarsh, cas, rom_as, vsu |
Version: | unstable | Keywords: | distro-blocker |
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 19564 |
Description
Andriy Stepanov (stanv)
2009-06-03 14:50:43 MSD
Причина проблемы в том, что lilo при установке загрузчика преобразует любую форму записи параметра root, кроме root="UUID=..." и root="LABEL=...", в номер устройства, используемый в загруженной в этот момент системе. В результате при последующей загрузке до скриптов в initramfs доходит лишь что-то типа root=302, и загрузка проходит только в случае, если номера устройств в новой и старой системе совпадают (и устройство определяется без задержек - ожидание появления устройства в этом случае тоже не работает). В /proc/mounts появился некий /dev/root. alterator-lilo оказался не готов к такому сюрпризу. Кто виноват - непонятно... В любом случае можно брать root device из fstab... Может поможет сгенеренный lilo.conf. root="/dev/disk/by-uuid/84eca964-2fd1-4bdd-93d3-c52dcc4532a6" что соответствует /dev/hda2. Т.е. запись логически правильная. Упоминаний о /dev/root в lilo.conf нету. Как /dev/root (что является образом squashfs) вносит сбой в работу alterator-lilo ? cat /etc/lilo.conf map="/boot/map" lba32 prompt compact vga="0x314" boot="/dev/disk/by-id/ata-QEMU_HARDDISK_QM00001" timeout="100" install="menu" message="/boot/splash/message" append="panic=30 splash=silent" default="ALTLinux" image="/boot/vmlinuz" label="ALTLinux" initrd="/boot/initrd.img" root="/dev/disk/by-uuid/84eca964-2fd1-4bdd-93d3-c52dcc4532a6" read-only image="/boot/vmlinuz" label="failsafe" initrd="/boot/initrd.img" root="/dev/disk/by-uuid/84eca964-2fd1-4bdd-93d3-c52dcc4532a6" addappend="failsafe" vga="normal" read-only (В ответ на комментарий №3) > Может поможет сгенеренный lilo.conf. > > root="/dev/disk/by-uuid/84eca964-2fd1-4bdd-93d3-c52dcc4532a6" что соответствует > /dev/hda2. Т.е. запись логически правильная. Значит тут дело не в alterator-lilo, а где-то глубже... > Как /dev/root (что является образом squashfs) вносит сбой в работу > alterator-lilo ? Ну вот у меня в системе почему-то в /proc/mounts сплошной несуществующий /dev/root и никаких реальных устройств. Соответственно, alterator-lilo не ставит загрузчик в раздел. И cas@ на этом сейчас налетел... Поведение текущей версии initramfs в зависимости от вида параметра root=..., полученного ядром при загрузке: 1) root=UUID=${uuid} - преобразуется в /dev/disk/by-uuid/${uuid}, и в таком виде попадает в /proc/mounts. 2) root=LABEL=${label} - в текущей версии в этом случае в /proc/mounts будет /dev/root (а не /dev/disk/by-label/${escaped_label} - просто сунуть ${label} в имя нельзя, поскольку варианты вида LABEL=/ тоже должны работать). 3) root=/dev/${path} (имя файла в любом виде) - в /proc/mounts будет имя устройства в том виде, как оно было записано в параметре root=...; при использовании lilo этот вариант получить не удастся, поскольку любое явно указанное имя файла устройства будет переведено в номер. 4) root=${hex_number} (результат саботажа со стороны lilo) и прочие форматы записи номера устройства - в /proc/mounts будет /dev/root, ожидание появления устройства не работает. При формировании lilo.conf следует отлавливать имена устройств, записанные в виде /dev/disk/by-uuid/${uuid}, и заменять их на UUID=${uuid}. alterator-lilo-1.8-alt1 -> sisyphus: * Wed Jun 03 2009 Vladislav Zavjalov <slazav@altlinux> 1.8-alt1 - lilo-disk.sh: use /etc/fstab instead of /proc/mounts for finding device mountpoints - lilo-conf.sh: use "UUID=..." instead of "/dev/disk/by-uuid/..." for root parameter (closes: #20292) - avoid more error messages А в чем проблема с LABEL? Казалось бы, надо все странные символы преобразовать так же, как это делает udev, создавая свои симлинки. Или тут никакой принципиальной трудности нет, а просто пока не сделано? |