LINUX.ORG.RU

LFS 7.0, проблема загрузки


0

1

Здравствуйте. Постараюсь быть кратким но информативным ;)
Собрал LFS по последней stable версии (7.0). Читал в оригинале. Во время тестов после компиляции всех пакетов ошибок не было или если и были то только ожидаемые, о которых говорилось в книге.
Первый раз система не запустилась, видимо что-то не так указал в конфиге ядра, собрал через mkiniramfs хост-системы initrd. Теперь система загрузилась прекрасно, без каких-либо сообщений об ошибках. Попробовал некоторые базовые команды, (по папкам побродил, дату посмотрел, локализацию проверил и тд.) и вышел.
Из хост-системы через chroot собрал и установил links, снова перезагрузился в LFS. Потестировал браузер, погуглил, перезагрузился обратно в хост.
Далее установил bash-конфиги отсюда http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html через chroot из хост-системы. Перезагрузился и получаю пачку сообщений об ошибках следующего содержания: фото. Извините за качество, иначе никак :(
Пробовал следующее: скопировал ядро со всеми причандалами с хост системы, LFS загрузился на ура.
Заранее благодарен за любую помощь.

Некоторые подробности:

  • Хост -система: Debian Squeeze
  • /boot/grub/grub.cfg:
    #
    # DO NOT EDIT THIS FILE
    #
    # It is automatically generated by grub-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    #
    
    ### BEGIN /etc/grub.d/00_header ###
    if [ -s $prefix/grubenv ]; then
      load_env
    fi
    set default="0"
    if [ "${prev_saved_entry}" ]; then
      set saved_entry="${prev_saved_entry}"
      save_env saved_entry
      set prev_saved_entry=
      save_env prev_saved_entry
      set boot_once=true
    fi
    
    function savedefault {
      if [ -z "${boot_once}" ]; then
        saved_entry="${chosen}"
        save_env saved_entry
      fi
    }
    
    function load_video {
      insmod vbe
      insmod vga
      insmod video_bochs
      insmod video_cirrus
    }
    
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set e68b8df2-fc7e-420d-8812-cdd076d00827
    if loadfont /usr/share/grub/unicode.pf2 ; then
      set gfxmode=1024x768
      load_video
      insmod gfxterm
    fi
    terminal_output gfxterm
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set e68b8df2-fc7e-420d-8812-cdd076d00827
    set locale_dir=($root)/boot/grub/locale
    set lang=uk
    insmod gettext
    set timeout=5
    ### END /etc/grub.d/00_header ###
    
    ### BEGIN /etc/grub.d/05_debian_theme ###
    set menu_color_normal=cyan/blue
    set menu_color_highlight=white/blue
    ### END /etc/grub.d/05_debian_theme ###
    
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686' --class debian --class gnu-linux --class gnu --class os {
    	insmod part_msdos
    	insmod ext2
    	set root='(hd0,msdos1)'
    	search --no-floppy --fs-uuid --set e68b8df2-fc7e-420d-8812-cdd076d00827
    	echo	'Loading Linux 2.6.32-5-686 ...'
    	linux	/boot/vmlinuz-2.6.32-5-686 root=UUID=e68b8df2-fc7e-420d-8812-cdd076d00827 ro   splash vga=791
    	echo	'Loading initial ramdisk ...'
    	initrd	/boot/initrd.img-2.6.32-5-686
    }
    menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
    	insmod part_msdos
    	insmod ext2
    	set root='(hd0,msdos1)'
    	search --no-floppy --fs-uuid --set e68b8df2-fc7e-420d-8812-cdd076d00827
    	echo	'Loading Linux 2.6.32-5-686 ...'
    	linux	/boot/vmlinuz-2.6.32-5-686 root=UUID=e68b8df2-fc7e-420d-8812-cdd076d00827 ro single 
    	echo	'Loading initial ramdisk ...'
    	initrd	/boot/initrd.img-2.6.32-5-686
    }
    ### END /etc/grub.d/10_linux ###
    
    ### BEGIN /etc/grub.d/20_linux_xen ###
    ### END /etc/grub.d/20_linux_xen ###
    
    ### BEGIN /etc/grub.d/30_os-prober ###
    menuentry "Microsoft Windows XP Professional RU (on /dev/sda3)" {
    	insmod part_msdos
    	insmod ntfs
    	set root='(hd0,msdos3)'
    	search --no-floppy --fs-uuid --set 04209f53209f4b16
    	drivemap -s (hd0) ${root}
    	chainloader +1
    }
    menuentry "LFS (on /dev/sdb1)" {
    	insmod part_msdos
    	insmod ext2
    	set root='(hd1,msdos1)'
    	search --no-floppy --fs-uuid --set b9b93ad9-6c30-47d9-99f0-08410c73f3c1
    	linux /boot/vmlinuz-3.1-lfs-7.0 root=UUID=b9b93ad9-6c30-47d9-99f0-08410c73f3c1 ro vga=791
    	initrd /boot/initrd.img-3.1-lfs-7.0
    }
    ### END /etc/grub.d/30_os-prober ###
    
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    
    ### BEGIN /etc/grub.d/41_custom ###
    if [ -f  $prefix/custom.cfg ]; then
      source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    
  • /boot/grub/device.map
    (hd0)	/dev/disk/by-id/ata-ST340014A_5JXBT5BM
    (hd1)	/dev/disk/by-id/usb-JetFlash_Transcend_8GB_JRKSRVW7-0:0
  • вывод fdisk -l
    Disk /dev/sda: 40.0 GB, 40020664320 bytes
    255 heads, 63 sectors/track, 4865 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x42c942c9
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1        1020     8192000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2            1021        1147     1020127+  82  Linux swap / Solaris
    /dev/sda3            1148        4865    29864835    7  HPFS/NTFS
    
    Disk /dev/sdb: 8032 MB, 8032092160 bytes
    248 heads, 62 sectors/track, 1020 cylinders
    Units = cylinders of 15376 * 512 = 7872512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00009b95
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1   *           1        1020     7841729   83  Linux
    
  • fstab LFS-системы
    # Begin /etc/fstab
    
    # file system  mount-point  type   options         dump  fsck
    #                                                        order
    
    /dev/sdb1      /            ext3   defaults        1     1
    /dev/sda2      swap         swap   pri=1           0     0
    /dev/sda3      /mnt/ntfs    ntfs   defaults,user,nls=utf8 0 1
    proc           /proc        proc   defaults        0     0
    sysfs          /sys         sysfs  defaults        0     0
    devpts         /dev/pts     devpts gid=4,mode=620  0     0
    tmpfs          /run         tmpfs  defaults        0     0
    /dev/scd0      /media/cdrom0   udf,iso9660 user,noauto     0       0
    # End /etc/fstab


поставь сусю и не мучайся

ipwww ★★ ()

Судя по фото, какие-то проблемы с разделами.
Или неправильно прописаны или ещё что.

saahriktu ★★★★★ ()

Там ругается на отсутствующий /dev/sdb1
Скопируй содержимое /dev в свой lfs статически.

imul ★★★★★ ()
Ответ на: комментарий от imul

2 imul

Подскажите, пожалуйста, как это сделать. Не могу додуматься. Максимум, что пришло в голову это

mount -v --bind /dev /mnt/lfs/dev
Но это явно не то...

shurrock ()
Ответ на: комментарий от shurrock

Это монтирование твоего /dev в новую точку дерева.
А нужно создание спецфайлов в /dev после чрута
http://archive.linuxfromscratch.org/lfs-museum/5.1-pre1/LFS-BOOK-5.1-PRE1-HTM...
Разумеется это уже давно устарело и работать должно без статических файлов.
Кстати, mc прекрасно выполняет то же самое, копируя сами файлы устройств, а не их содержимое.

На самом деле конечно там все устройства не нужны. Так как их потом перекроет tmpfs и udev сделает новое содержимое. Реально иногда нужно два статических устройства. /dev/null и /dev/console. Но, судя по всему, либо ядро как-то не так собрано, либо в стартовых скриптах какие-то ошибки. Поэтому на первое время, пока не починишь, можно сделать полный список устройств статически.

imul ★★★★★ ()
Ответ на: комментарий от imul

Нет, не помогает. Впринципе, я до этого пробовал из-под chroot

# mknod -m 660 /dev/sdb b 8 16
mknod -m 660 /dev/sdb1 b 8 17
Тоже безрезультатно.

Ну, то, что с другим «стыренным» с Дебиана ядром работает, наврное, указывает на то, что проблема в ядре. Но, тогда, почему оно сначала работало и вообще не подавало каких-либо признаков неполадок? И могут ли вообще такую реакцию вызвать конфиги bash, ведь проблема появилась именно после их установки, как я указал в первом посте? Наверное, не могут...

shurrock ()
Ответ на: комментарий от shurrock

А если их убрать, то грузится нормально?
Пользуйтесь дебиановским ядром и модулями, раз с ними работат. Ничего зазорного в этом нет. А с ядром и инитрд потом разберётесь.

imul ★★★★★ ()
Ответ на: комментарий от imul

Убрал конфиги, ничего не изменилось, как я и предполагал.

А насчет дебиановского ядра, я согласен с Вами, но все же хотелось бы найти причину неполадки, разобраться, научиться делать так, чтобы все работало :)

shurrock ()

В логах видно segfault в libc при запуске mountpoint. Что вполне логично, если initramfs собран для другой системы с другим ядром. Странно что оно вообще загрузилось.

Если действительно нужен initramfs, сделай его ручками. Собери все нужные программы статически, тем же тулчейном которым собирал LFS, скопируй файлы устройств, напиши init-скрипт и конфиги. Даже если не заработает, натрахаешься вдоволь.

anonymous ()
Ответ на: комментарий от anonymous

В общем, я сделал вывод, что мне нужно просто правильно сконфигурировать ядро, так, чтобы initramfs не требовался. Как, собственно, в книге и задумано. Но что-то не получается. LFS на флешке, вроде все включил монолитно нужное, а всеравно не работает без initramfs.

shurrock ()
Ответ на: комментарий от shurrock

Скорее всего, проблема не в ядре, а в конфиге grub2. Тем более ты с флешки загружаешься, а это вроде как не по книге. Там инструкции по настройке grub2 очень хрупкие, чуть что не так - не грузится.

У меня была похожая проблема, когда я делал образ LFS в файле, смонтировав его через loopback. В итоге так и не понял, в чем была проблема, просто воспроизвел процедуру из книги в точности и все заработало.

anonymous ()
Ответ на: комментарий от anonymous

Я по книге и делал. 1 в 1. Просто флешку использовал как жесткий диск. А GRUB у меня дебиановский, потому LFS-совский я и не настраивал вовсе. Но я не думаю, что проблема в этом.

shurrock ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.