Bug 20292 - Не корректно создаёт /etc/lilo.conf
Summary: Не корректно создаёт /etc/lilo.conf
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: alterator-lilo (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Anton V. Boyarshinov
QA Contact: qa-sisyphus
URL:
Keywords: distro-blocker
Depends on:
Blocks: 19564
  Show dependency tree
 
Reported: 2009-06-03 14:50 MSD by Andriy Stepanov (stanv)
Modified: 2009-06-05 17:09 MSD (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andriy Stepanov (stanv) 2009-06-03 14:50:43 MSD
Не возможно загрузить установленную систему.

alterator-lilo-1.6-alt2


При первом старте установленной системы:


[    0.952557] Executing init=/init
Loading, please wait...
[    0.960327] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
Begin: Starting udevd ...
Done.
Begin: Loading essential drivers ...
[    2.688223] SCSI subsystem initialized
[    2.862541] Driver 'sd' needs updating - please use bus_type methods
[    3.138105] scsi0 : ata_piix
[    3.138937] scsi1 : ata_piix
[    3.139708] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc000 irq 14
[    3.140006] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc008 irq 15
[    3.296684] ata1.00: ATA-7: QEMU HARDDISK, 0.10.0, max UDMA/100
[    3.298035] ata1.00: 14680064 sectors, multi 16: LBA48 
[    3.300373] ata1.00: configured for MWDMA2
[    3.301987] scsi 0:0:0:0: Direct-Access     ATA      QEMU HARDDISK    0.10 PQ: 0 ANSI: 5
[    3.304194] sd 0:0:0:0: [sda] 14680064 512-byte hardware sectors: (7.51 GB/7.00 GiB)
[    3.306056] sd 0:0:0:0: [sda] Write Protect is off
[    3.307169] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    3.308142] sd 0:0:0:0: [sda] 14680064 512-byte hardware sectors: (7.51 GB/7.00 GiB)
[    3.309933] sd 0:0:0:0: [sda] Write Protect is off
[    3.310999] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    3.312007]  sda: sda1 sda2 sda4 < sda5 >
[    3.318590] sd 0:0:0:0: [sda] Attached SCSI disk
[    3.476679] ata2.00: ATAPI: QEMU DVD-ROM, 0.10.0, max UDMA/100
[    3.478540] ata2.00: configured for MWDMA2
[    3.480542] scsi 1:0:0:0: CD-ROM            QEMU     QEMU DVD-ROM     0.10 PQ: 0 ANSI: 5
Done.
Begin: Finishing udevd initialization ...
Done.
Begin: Mounting root file system ...
/init: 176: cannot open /dev/root: No such device or address
Usage: modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [-o <modname>] [ --dump-modversions ] <modname> [parameters...]
modprobe -r [-n] [-i] [-v] <modulename> ...
modprobe -l -t <dirname> [ -a <modulename> ...]
Usage: mount [-r] [-w] [-o options] [-t type] [-f] [-i] [-n] device directory
Unable to mount /dev/root as . Dropping to a shell!
(initramfs)


<vsu> cat /proc/cmdline там посмотри
<stanv> cat /proc/cmdline
BOOT_IMAGE=ALTLinuxS ro root=302 console=ttyS0

<vsu> откуда root=302 берётся? lilo поганое?
<vsu> и запись root=/dev/disk/by-uuid/... тоже не работает
<vsu> а вот by-path уже не попользуешься
<vsu> как и by-id

в созданном /etc/lilo.conf содержатся как раз строки:

boot="/dev/disk/by-id/ata-QEMU_HARDDISK_QM00001"
        root="/dev/disk/by-uuid/84eca964-2fd1-4bdd-93d3-c52dcc4532a6"

С /etc/fstab кажись все впорядке:
proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
UUID=84eca964-2fd1-4bdd-93d3-c52dcc4532a6       /       ext3    defaults        1       1
UUID=732d8b98-ba6d-447b-bfe6-1074e3a1012b       /home   ext3    nosuid  1       2
UUID=23e2f0b8-f810-40ee-9ee9-0aaafd6417e4       swap    swap    defaults        0       0

<vsu> работает root="UUID=84eca964-2fd1-4bdd-93d3-c52dcc4532a6"

т.е. необходимо поправить генерацию lilo.conf
Comment 1 Sergey Vlasov 2009-06-03 14:58:09 MSD
Причина проблемы в том, что lilo при установке загрузчика преобразует любую форму записи параметра root, кроме root="UUID=..." и root="LABEL=...", в номер устройства, используемый в загруженной в этот момент системе. В результате при последующей загрузке до скриптов в initramfs доходит лишь что-то типа root=302, и загрузка проходит только в случае, если номера устройств в новой и старой системе совпадают (и устройство определяется без задержек - ожидание появления устройства в этом случае тоже не работает).
Comment 2 Vladislav Zavjalov 2009-06-03 14:59:37 MSD
В /proc/mounts появился некий /dev/root. alterator-lilo оказался не готов к
такому сюрпризу. Кто виноват - непонятно... В любом случае
можно брать root device из fstab...
Comment 3 Andriy Stepanov (stanv) 2009-06-03 15:10:38 MSD
Может поможет сгенеренный 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
Comment 4 Vladislav Zavjalov 2009-06-03 15:19:21 MSD
(В ответ на комментарий №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@ на этом сейчас налетел...
Comment 5 Sergey Vlasov 2009-06-03 15:41:47 MSD
Поведение текущей версии 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}.
Comment 6 Repository Robot 2009-06-03 19:53:41 MSD
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
Comment 7 Vladislav Zavjalov 2009-06-05 12:45:31 MSD
А в чем проблема с LABEL?

Казалось бы, надо все странные символы преобразовать так же, как это делает  udev, создавая свои симлинки. Или тут никакой принципиальной трудности нет, а просто пока не сделано?