1

Я запускаю Debian Xfce на виртуальной коробке (ОС хоста: Ubuntu 12.04 LTS).В Debian я скачал исходный код ядра Linux-2.6.32.61 с https://www.kernel.org/, настроил и успешно скомпилировал.Я следовал за этими шагами (с su):

  1. сделать defconfig
  2. делать
  3. сделать модули
  4. сделать install_modules

После этого я отредактировал файл /etc/grub.d/40_custom и запустил grub-mkconfig. Затем я поместил файлы config, initrd.img, System.map, vmlinuz в папку /boot /, и, таким образом, я установил новое ядро на тот же диск и тот же раздел, где ядро Debian было установлено в виртуальной коробке. Затем я перезапустил виртуальную коробку и загрузился со встроенного ядра, но процесс загрузки остановился, выдав приглашение, как показано на рисунке:

Скриншот
(извините, у меня недостаточно очков репутации для публикации изображения.)

/boot/grub/grub.cfg Debian:

 #
# 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,msdos5)'
search --no-floppy --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  load_video
  insmod gfxterm
  insmod part_msdos
  insmod ext2
  set root='(hd0,msdos5)'
  search --no-floppy --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
  set locale_dir=($root)/boot/grub/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
insmod png
if background_image /usr/share/images/desktop-base/joy-grub.png; then
  set color_normal=white/black
  set color_highlight=black/white
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-686-pae' --class debian --class gnu-linux --class gnu --class os {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos5)'
    search --no-floppy --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
    echo    'Loading Linux 3.2.0-4-686-pae ...'
    linux   /boot/vmlinuz-3.2.0-4-686-pae root=UUID=33cee34f-8bec-4f6a-963f-d26bdffda28c ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.2.0-4-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-686-pae (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos5)'
    search --no-floppy --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
    echo    'Loading Linux 3.2.0-4-686-pae ...'
    linux   /boot/vmlinuz-3.2.0-4-686-pae root=UUID=33cee34f-8bec-4f6a-963f-d26bdffda28c ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.2.0-4-686-pae
}
### 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 ###
### 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.

menuentry 'Saurabh GNU/Linux, with Linux 2.6.32.61' --class gnu-linux --class gnu --class os{
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos5)'
    search --no-floppy  --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
    echo 'Loading Saurabh Linux 2.6.32.61... '
    linux /boot/vmlinuz-2.6.32.61 root=/dev/sda5  ro quiet
    echo 'Loading initial ramdisk ...'
    initrd /boot/initrd.img-2.6.32.61
}
### 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 ###

40_пользовательский файл:

#!/bin/sh
exec tail -n +3 $0
# 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.

menuentry 'Saurabh GNU/Linux, with Linux 2.6.32.61' --class gnu-linux --class gnu --class os{
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos5)'
    search --no-floppy  --fs-uuid --set=root 33cee34f-8bec-4f6a-963f-d26bdffda28c
    echo 'Loading Saurabh Linux 2.6.32.61... '
    linux /boot/vmlinuz-2.6.32.61 root=/dev/sda5  ro quiet
    echo 'Loading initial ramdisk ...'
    initrd /boot/initrd.img-2.6.32.61
}

/etc/fstab Debian

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda5 during installation
UUID=33cee34f-8bec-4f6a-963f-d26bdffda28c /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda1 during installation
UUID=faa1c54b-4e9f-4af6-9b1e-8fdceffb321f none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

(Я делаю все эти эксперименты только в виртуальной коробке)
Plesae кто-нибудь, помогите мне, почему я получаю эту ошибку?

1 ответ1

0

Возможно, это было очевидно, но проблема не в том, что вы заходили в BusyBox (initramfs). Проблема в 10 строках над этим приглашением, где вы видите, что почти каждая попытка монтирования ресурсов ядра терпит неудачу одна за другой.

Вероятно, один из ваших set root='(hd0,msdos5)' or --set = root 33cee34f-8bec-4f6a-963f-d26bdffda28c` неправильный.

Когда grub заглянул в ваш /boot, он обнаружил ядро, но когда он загрузил ядро, одно из ваших корневых объявлений фактически изменило местоположение /boot, так что теперь ядро не может смонтировать то, что ему нужно, из initrd (или того, или ваш initrd был неправильно скомпилирован, чтобы соответствовать вашему ядру).

Я считаю, что ваше ядро загружается нормально, но не может найти остальную часть пространства пользователя, поэтому оно возвращается к grub.

Попробуйте быть менее подробным с UID вашего диска, посмотрите, как далеко вы доберетесь до настроек по умолчанию. Рассматривая запуск mkinitrd для вашего ядра снова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .