Upgrade to x86_64 - словил 'grub_rescue' [Решено]

bobart, тут проще.
У мну так:
menuentry 'Arch linux ISO' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos2'
        set isofile="/serj/downloads/iso/archlinux-2018.06.17-x86_64.iso"
        loopback loop $isofile
        linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201806 img_dev=/dev/disk/by-uuid/5b2e2be7-dc9f-480f-83fd-67e06a452829 img_loop=$isofile earlymodules=loop
        initrd (loop)/arch/boot/x86_64/archiso.img
}
bobart
ты это делал по вики или каким-то другим образом?
Так как пользуюсь этим довольно редко, то раньше прописывал это в ручную. Как прописывать, описано в этом топике - да основа Wiki + советы Natrio.
На настоящий момент выкинул оттуда указание на archisolabel=\…. (вычитал в одном из форумов на BBS, что сейчас это лишнее, проверил, действительно работает и без этого).
У меня grub.cfg самописный, а потому загрузка образа, расположенного в корне /dev/sda3, прописана так
# пункт меню номер 2
submenu "archlinux-2017.07.01-x86_64.iso" {
 set root=(hd0,3)
 loopback loop (hd0,3)/archlinux-2017.07.01-x86_64.iso
 probe -s root_uuid -u $root
 linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$root_uuid img_loop=archlinux-2017.07.01-x86_64.iso earlymodules=loop
 initrd (loop)/arch/boot/x86_64/archiso.img
 boot
}
Если прописывать в ручную, то будет то же самое, начиная с set root=(hd0,3) и кончая boot
Проверено на образе archlinux-2017.07.01-x86_64.iso, который использовал больше года назад при переходе на x86_64, все работает.
Ошибки не исчезают с опытом - они просто умнеют
Лично мне больше нравится самописный grub.cfg - просто (всего один файл), и ничего не меняется (защищено от записи и обновления) при обновлении.
Привожу пример своего grub.cfg, вдруг кому понадобится (здесь 2 ядра Arch, образ archiso, Ubuntu, используемая в качестве Live CD, Windows 7)
# по-умолчанию выбран пункт меню 0
set default=0

# при бездействии пользователя он загрузится через 5 секунд
set timeout=5

# пункт меню номер 0
menuentry "Arch Linux" {
 linux /boot/vmlinuz-linux root=/dev/sda3 rw
 initrd /boot/initramfs-linux.img
}

# пункт меню номер 1
menuentry "Arch Linux-lts" {
 linux /boot/vmlinuz-linux-lts root=/dev/sda3 rw
 initrd /boot/initramfs-linux-lts.img
}

# пункт меню номер 2
submenu "archlinux-2017.07.01-x86_64.iso" {
 set root=(hd0,3)
 loopback loop (hd0,3)/archlinux-2017.07.01-x86_64.iso
 probe -s root_uuid -u $root
 linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$root_uuid img_loop=archlinux-2017.07.01-x86_64.iso earlymodules=loop
 initrd (loop)/arch/boot/x86_64/archiso.img
 boot
}

# пункт меню номер 3
submenu "Ubuntu" {
 set root=(hd0,2)
 linux /boot/vmlinuz-3.2.0-39-generic-pae  root=/dev/sda2 rw quiet
 initrd /boot/initrd.img-3.2.0-39-generic-pae
}

# пункт меню номер 4
menuentry "Windows 7" {
 set root=(hd0,1)
 chainloader (hd0,1)+1
}
Ошибки не исчезают с опытом - они просто умнеют
Vasek, Aivar, спасибо. Конечно, прописывать это вручную - это исключительно для любителей прописывать вручную. Тем более, если образ в корне на ПМЖ (как раз то, чего мне так не хватало в моих недавних приключениях)

По "науке", конечно, для всего этого создаются разные "ХХ_custom" в /etc/grub.d, типа /etc/grub.d/40_custom и пр., куда и прописываются доп. пункты/параметры для загрузчика. Таким образом, при обновлении груба они автоматом считываются и добавляются в grub.cfg.
Например (это со старой, 32-битной версии)
#!/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 'Arch Linux : Linux kernel : Boot to Console' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-ba0967b2-78b8-40c8-a0f0-df606d2decb1' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  2c6f38b6-a30c-4eaf-9924-98dcd118a1b1
	else
	  search --no-floppy --fs-uuid --set=root 2c6f38b6-a30c-4eaf-9924-98dcd118a1b1
	fi
	linux	/vmlinuz-linux root=UUID=ba0967b2-78b8-40c8-a0f0-df606d2decb1 ro 3 quiet
	initrd	/initramfs-linux.img
}
Но это всё для слабаков. Я понял. Реальные пацаны редактируют напрямую, затем лочат grub.cfg от изменений и не парятся. В принципе, верно. KISS на практике.
Правда, тут есть один потенциально-неприятный момент: если с обновлением груба разрабы как-то кардинально изменят grub.cfg или ещё чего удумают, то.... возможен внезапный пи-и-и-и... И при обновлении важно не прощелкать grub.cfg.pacnew. Хотя груб обновляется и не часто.
Что думаете? Из личного опыта, естественно. Просто раньше я добавлял кастомы, а тут, с новоиспеченным арчем вдруг задумался...
bobart
Что думаете? Из личного опыта, естественно. Просто раньше я добавлял кастомы, а тут, с новоиспеченным арчем вдруг задумался…
Самописный grub.cfg ,имхо, не сработает при загрузке только в случае уж очень кардинальных изменений, когда не будут работать команды, прописанные там, но о таком изменении, точнее, переходе на новый загрузчик, будет известно заранее.
Пока проблем не было, самописный grub.cfg использую более 2-х лет. По рекомендации Wiki (ru) защитил от изменений.
Основная защита от внесения изменений
chattr +i /boot/grub/grub.cfg
Дополнительно, на всякий случай, (хотя, в принципе, и излишнее) защита от возможных конфликтов при обновлении (файл grub.cfg никогда не будут затронут во время установки/обновления пакета grub, а будет установлен grub.cfg с расширением .pacnew) - добавить строчку в файл /etc/pacman.conf
NoUpgrade   = boot/grub/grub.cfg

UPD - забыл отметить, что всякие параметры загрузки, которые важны и нужны, можно прописать на постоянку в этом же файле в конце строки
linux /boot/vmlinuz-linux root=/dev/sda3 rw
а временные лучше прописывать при загрузке из меню grub, войдя в консоль grub.
Ошибки не исчезают с опытом - они просто умнеют
А вы не рассматриваете вариант невозможности загрузки grub.cfg?
В таком случае все эти пункты бесполезны.
Даже в этом топике граб выпал в консоль восстановления.
Lupus pilum mutat, non mentem.
jim945, возможно все, а потому нужно иметь и запасные варианты загрузки, например, всегда должна быть наготове загрузочная флешка, включающая как arhiso, так и другой инструмент для восстановления.
UPD - хотя, по честному, все эти recovery флешки, CD уже не использовались несколько лет и лежат мертвым грузом. И до сих пор лежат даже загрузочные самодельные BCDW BOOT CD, загрузочные флешки с Grub4Dos, с Grub2 и даже загрузочный CD с образом floppy (1,44M) и все это лежит мертвым грузом и жаль выкинуть … но похоже придется принять 1-2 стакана да и навести порядок.
Сама система не падает уже много лет, валю ее только сам при экспериментах, но для исправления вполне хватает старенькой Ubuntu, используемой для этого в качестве LiveCD.

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

EDIT 1 - желаю всем в Новом Году успехов в использовании ArchLinux, пусть Ваша система работает успешно и не падает, а если вдруг, зараза, и упадет, но чтобы без проблем и починилась.
Ошибки не исчезают с опытом - они просто умнеют
jim945
А вы не рассматриваете вариант невозможности загрузки grub.cfg?
Когда то ради интереса сделал загрузочную флешку с Grub2 без инсталяции загрузчика, чисто ручной способ установки - прописывал используя dd и boot.img и core.img и нужные файлы закидывал в /boot/grub. На флешке разместил образ archiso. Все загрузилось.
Конечно, извращение, но интересно то, что руками получилось, а вот с автоматической установкой не получилось с 1-го раза.

EDIT 1 - уже как то описывал и ручной способ установки Grub4Dos.
Ошибки не исчезают с опытом - они просто умнеют
vasek
прописывал используя dd и boot.img и core.img
Как? Если не секрет. И откуда их брал?
vasek
а вот с автоматической установкой не получилось с 1-го раза.
Что именно?
Lupus pilum mutat, non mentem.
jim945
vasek
а вот с автоматической установкой не получилось с 1-го раза.

Что именно?
Что конкретно уже и не помню, где то сам накосячил в спешке. Через день повторил, все получилось. Но потом эту же флешку сделал загрузочной, как для BIOS, так и для UEFI, накатав на нее archiso и pmagic - так до сих пор так и лежит.

jim945
Как? Если не секрет. И откуда их брал?
Описывать долго, лучше дам ссылку на статью, которую использовал как основу.
Основные нюансы
- grub компилил сам, исходники качал отсюда. Сразу не скомпилилось, нужно было патчить, а потом еще и отключать ошибки gcc.
- не стал заморачиваться, что кидать в папку /boot/grub/i386-pc закинул почти все, что было в папке grub-core (с минимальным набором не взлетел).
Делал просто ради интереса, чтобы понять сам смысл.

EDIT 1 - забыл отметить, что grub можно и не компилить. Я пробовал использовать установленный grub - пришлось только сгенерить свой core.img (ипользовал команду, приведенную в статье с некоторыми изменениями), который и записал на флеш после MBR (в MBR записал имеющийся в системе boot.img - он всеравно одинаков). А вот в папку (на флеш) /boot/grub/i386-pc перекинул все из аналогичной системной папки. Тоже все нормально загрузилось.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.