LINUX.ORG.RU

GRUB2 не ставится в Ext4, не создаётся файл grub.cfg

 , ,


0

1

Устанавливаю Ubuntu 16.04 в виртуальной машине QEmu. Файловую систему Ext4 для образа .img выбрал как самую шуструю. При установке система не может установить GRUB2, сообщает об unknown ошибке при установке загрузчика. Grub как таковой устанавливается, но не создаётся файл grub.cfg, а если устанавливать систему на Ext3, то всё ставится без ошибок. Такая же проблема с любой ОС Linux. Причину не знаю, возможно какая-то несовместимость QEmu/.img/Ext4.

Сейчас загружаюсь так, ввожу команды в grub вручную:

grub> set root=(hd0)
grub> linux /vmlinuz root=/dev/sda w
grub> initrd /initrd.img
grub> boot

Но необходимо, чтобы оно грузилось само. Что нужно прописать в grub.cfg?


ext3/ext4 для grub2 неразличимы.

Grub как таковой устанавливается, но не создаётся файл grub.cfg

дык сам создай, grub-mkconfig придумали для домохозяек неспособных в текстовом редакторе набрать 4 строки.

На кой тебе grub в qemu, если qemu сам умеет грузить ядро и initrd.

vel ★★★★★
()

Интересно. Я ставил разные Linux в Qemu неоднократно, и никогда такого не было. Можешь процитировать точные команды, как именно ты подготавливаешь виртуальный диск и запускаешь виртмашину?

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от BceM_IIpuBeT

vel

дык сам создай, grub-mkconfig придумали для домохозяек

Запуск grub-mkconfig формирует grub.cfg.new, но при загрузке с ним появляется командная строка grub.

vel

неспособных в текстовом редакторе набрать 4 строки.

Если записать эти четыре строки в grub.cfg, то при загрузке получаю командную строку grub.

vel

На кой тебе grub в qemu, если qemu сам умеет грузить ядро и initrd.

Замечательно, буду знать. Но мне не удобно для каждого образа прописывать ядро и initrd.

Vsevolod-linuxoid

Можешь процитировать точные команды, как именно ты подготавливаешь виртуальный диск и запускаешь виртмашину?

Qemu 2.7.0 для windows:

qemu-img.exe create -f raw C:\1024.img 1024M

Монтирую с помощью ImDisk.exe как A:

Форматирую в WinXP: format A: /fs:fat32

qemu-system-i386w.exe -usb -L «C:\Program Files (x86)\Qemu» -m 512 -vga std -net nic,vlan=0,model=rtl8139,macaddr=00:B5:51:23:1F:FF -net user,vlan=0 -boot c -hda C:\1024.img -cdrom «C:\14.04 Trusty Tahr.iso» -boot menu=on -rtc base=localtime,clock=host

При установке Ubuntu форматирует образ в ext4.

P.S. В версии 14.04 Trusty Tahr файлы лоадера при установке вообще не копируются.

BceM_IIpuBeT

grub-mkconfig -o /boot/grub.cfg

Сделал. При загрузке grub висит black screen минут 15, затем нервишки сдают и выключают виртуалку принудительно.

A27
() автор топика

Обнови пакет grub2-install, хотя у вас он может называться и grub-install, а потом сделай grub2-install /dev/sdX

Что нужно прописать в grub.cfg?

Там кучу всего прописать надо, включая uuid раздела, а один из разделов должен быть стартовым.

Napilnik ★★★★★
()
Последнее исправление: Napilnik (всего исправлений: 1)
Ответ на: комментарий от Napilnik

Napilnik

Обнови пакет grub2-install

Как? Если grub-update, то уже делал.

Napilnik

а потом сделай grub2-install /dev/sdX

Не помогло.

Я сделал следующее. С помощью grub-install/grub-mkconfig создал файл grub.cfg, нашёл в нём пункт меню Ubuntu и закомментировал несколько строк:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d3e866cc-2705-4639-a6dc-5443a5ffa2c2' {
	recordfail
	load_video
	gfxmode $linux_gfx_mode
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod ext4
	set root='hd0'
#	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0  d3e866cc-2705-4639-a6dc-5443a5ffa2c2
#	else
#	  search --no-floppy --fs-uuid --set=root d3e866cc-2705-4639-a6dc-5443a5ffa2c2
#	fi
        linux	/boot/vmlinuz-4.4.0-119-generic root=UUID=d3e866cc-2705-4639-a6dc-5443a5ffa2c2 ro  quiet splash $vt_handoff
	initrd	/boot/initrd.img-4.4.0-119-generic
}

Я не знаю за что отвечают данные строки, но выделил три варианта:

  1. если оставить незакомментированной вторую строку search, то получаю blackscreen.
  2. если оставить первую строку search, то система пару минут подумав начинает грузиться.
  3. если закомментировать обе, то система начинает грузиться почти без задержек.

Если затем дать системе команду на выключение, то в процессе выключения система стопорится с сообщением:

Kernel panic - not syncing: Fatal exception in interrupt

Kernel Offcet: disabled

Методом тыка определил, чтобы этого не происходило, в строке загрузки ядра вместо «ro» поставил «w». Не понимаю как и почему это влияет.

И ещё при загрузке всегда имеются пара ошибок:

[FAILED] Failed to start Flush Journal to Persistant Storage.

[FAILED] Failed to start getty tty2-tty6 ...us and logind are not available

See 'systemctl status getty-static.service' for details.

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

Если grub-update, то уже делал.

Пакеты в разных дистрах называются по разному. Наверно это оно и есть.

Я сделал следующее.

Если работает, то норм. А так, есть ещё 1 вариант: создать ещё один раздел с ext3, сделать его стартовым и поставить на него загрузчик.

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

Napilnik

Если работает, то норм.

Работает. Но при загрузке grub показывает список вариантов (меню) загрузки и отсчитывает таймер в 30 секунд. Весь grub.cfg перерыл, нигде не вижу таймера в 30 секунд и соответственно как его отключить.

Napilnik

создать ещё один раздел с ext3, сделать его стартовым и поставить на него загрузчик.

Не хочу изобретать велосипед.

A27
() автор топика

А что мешает сделать нормальную таблицу разделов и не насиловать мозг себе и окружающим?

В grub и ext* поддерживается работа без неё, но мне кажется этим никто не пользуется и никто не тестирует. В результате - нужно многое делать руками.

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

Но при загрузке grub показывает список вариантов (меню) загрузки и отсчитывает таймер в 30 секунд. Весь grub.cfg перерыл, нигде не вижу таймера в 30 секунд и соответственно как его отключить.

Где-то в начале кода, до вариантов меню, надо вкорячить

set timeout=1
или
set timeout=0

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

mironov_ivan

А что мешает сделать нормальную таблицу разделов и не насиловать мозг себе и окружающим?

А что мешало разработчикам qemu/grub/linux сразу делать нормально и проверять работу своего ПО, чтобы вообще никому не приходилось насиловать мозг?

И почему так трудно найти корректный manual по linux'у? А те, которые есть - будто написаны школьником для школьников, с кучей ошибок? К примеру в справке help.ubuntu.ru только 20% соответствует действительности, остальное банально не работает или работает не так как описано, будто на деле никто не проверял приведённый материал, либо он написан для ОС старых версий.

Napilnik

в начале кода, до вариантов меню, надо вкорячить

Благодарю.

Напишу как решил проблему. В Windows создал файл grub.cfg в кодировке UTF8 и записал в него:

set root=(hd0)
linux /vmlinuz root=/dev/sda ro
initrd /initrd.img
boot
Затем перенёс файл в раздел ext4 /boot/grub/. Ubuntu стала загружаться нормально, без blackscreen, без стопов, без таймера. Проверял несколько раз.

Почему тоже самое не удавалось сделать из под linux не знаю, возможно из-за некорректно установленного grub система не могла нормально примонтировать раздел для записи и корректно записать grub.cfg. Это только догатка.

A27
() автор топика
6 декабря 2019 г.
Ответ на: комментарий от Napilnik

У меня стоит вначале - «GRUB_TIMEOUT=3», но всё равно при загрузке отсчитывает стандартные 10 секунд. Куда воткнуть «set timeout=1»?

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

Вау ты такой брутальный… Со стопроцентной уверенностью могу сказать, что ты не чех и не русский. Может встретимся с тобой?

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

Хочу ощутить твою силу в себе.

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

я доминирую своим говном над твоим языком, мне не нужны союзники.

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