Пункты в GRUB2 для разных ISO?

BlagoYar, пробуй самописный grub.cfg ... как пример
cat /boot/grub/grub.cfg
# по-умолчанию выбран пункт меню 0
#set pager=1
#set debug=all
set default=0
#
# при бездействии пользователя он загрузится через 5 секунд
set timeout=5
##
# пункт меню номер 0
menuentry "ArchLinux" {
 linux /boot/vmlinuz-linux root=/dev/sda3 rw audit=0 mitigations=off i915.mitigations=off intel_pstate=disable
# linux /boot/vmlinuz-linux root=/dev/sda3 rw systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on
 initrd /boot/intel-ucode.img /boot/initramfs-linux.img
}
#
# пункт меню номер 1
menuentry "ArchLinux-lts" {
 linux /boot/vmlinuz-linux-lts root=/dev/sda3 rw audit=0 mitigations=off i915.mitigations=off
 initrd /boot/initramfs-linux-lts.img
}
#
# пункт меню номер 2
menuentry "archlinux-2020.12.01-x86_64.iso" {
 set isofile=/ISO/archlinux-2020.12.01-x86_64.iso
 loopback loop (hd0,3)$isofile
 probe -s root_uuid -u $root
 linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$isofile earlymodules=loop
 initrd (loop)/arch/boot/x86_64/initramfs-linux.img
 boot
}
#
# пункт меню номер 3
menuentry "systemrescuecd-amd64-6.1.5.iso" {
 insmod gzio
 set isofile=/ISO/systemrescuecd-amd64-6.1.5.iso
 loopback loop (hd0,3)$isofile
 probe -s root_uuid -u $root
 linux (loop)/sysresccd/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$isofile archisobasedir=sysresccd
 initrd (loop)/sysresccd/boot/x86_64/sysresccd.img
 boot
}
#
# пункт меню номер 4
menuentry "ArchLinux-backup" {
 set root=(hd0,2)
# linux /boot/vmlinuz-linux root=/dev/sda2 rw
# initrd /boot/initramfs-linux.img
 linux /boot/vmlinuz-linux root=/dev/sda2 rw audit=0 mitigations=off i915.mitigations=off intel_pstate=disable
# linux /boot/vmlinuz-linux root=/dev/sda2 rw systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on
 initrd /boot/intel-ucode.img /boot/initramfs-linux.img
}
#
# пункт меню номер 5
menuentry "Windows 7" {
 set root=(hd0,1)
 chainloader (hd0,1)+1
}

EDIT - в части insmod gzio не прав - для ISO systemrescuecd этот модуль не нужен ... (как он появился - уже не помню)
Ошибки не исчезают с опытом - они просто умнеют
vasek
пробуй самописный grub.cfg … как пример
Что значит самописный?
BlagoYar
Что значит самописный?
Значит сам написал.

vasek
пробуй
Если брать любой ArchLinux, любые сборки (кроме ArchCraft), то проблем нет, а если брать ArchCraft, то я всё перепробовал, на моём компе он не работает. Тут проблема не в Grub2 и не в Arch, тут проблема в ArchCraft.
мои программы
AZJIO
Значит сам написал.
Хммм ...

AZJIO
Grub2 и не в Arch, тут проблема в ArchCraft.
У меня чёт наоборот, как я писал выше, ArchСraft работает даже с тем, с чем не должен.
BlagoYar
У меня чёт наоборот,
Тогда с какой сборкой проблема? Я же давал тему, в которой рабочие конфиги для нескольких Arch-подобных сборок. Да и все они примерно одинаковы, с разницей в пути к ISO и именами ядер.
мои программы
AZJIO
Тогда с какой сборкой проблема? Я же давал тему, в которой рабочие конфиги для нескольких Arch-подобных сборок. Да и все они примерно одинаковы, с разницей в пути к ISO и именами ядер.
Проблема со всеми практически из этого списка

ALCI-Calamares-2024.07.17-x86_64.iso
ALG-Plasma-2024.08-x86_64.iso
ArchBang-2412-x86_64.iso
ArchLinux-2024.12.01-x86_64.iso
ArchLinuxGUI-plasma-2024.04-x86_64.iso
ArcoPlasma-v25.01.01-x86_64.iso
RebornOS-2024.02.16-x86_64.iso
RedHat-9.5-x86_64-boot.iso
Но мучаю пока оф. релиз Arch.
В том то и дело, что из того, что по ссылке не работает.

Основная проблема пока - это device не может обозначить (device not found).

Нашёл на stackoverflow такую конфигурацию (попробовать с другого диска запустить)

menuentry "Boot LINUX FROM ISO FILE" {
  insmod ntfs
  set root='(hdX,Y)'
  linux /in_ntfs/vmlinuz-linux root=UUID=*GPT_UUID_OF_ROOTFS_ON_DISK_IMAGE* image_path=*path_to_disk_image_on_NTFS* image_hd=*GPT_UUID_OF_NTFS_DISK*
  initrd /in_ntfs/initrd.img
}
Только не пойму, что это "GPT_UUID_OF_ROOTFS_ON_DISK_IMAGE" и как его узнать.
BlagoYar
что это "GPT_UUID_OF_ROOTFS_ON_DISK_IMAGE" и как его узнать.
lsblk -o +UUID
UUID тот, где лежит vmlinuz.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE
BlagoYar
ALG-Plasma-2024.08-x86_64.iso
Вообще без проблем, он у меня лежит на отдельном разделе диска, как спасательный образ, что бы флешку с live арча не искать.

menuentry 'Archlinux.iso' {
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        insmod loopback
        root_uuid=2d4fdc0d-7eac-4d84-a4ee-bbee681c7f33
        search -s root -u $root_uuid
        set imgdevpath='/dev/disk/by-uuid/2d4fdc0d-7eac-4d84-a4ee-bbee681c7f33'
        set isofile='/archlinux.iso'
        loopback loop $isofile
        linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
        initrd (loop)/arch/boot/x86_64/initramfs-linux.img
}

Оброз переименовал в archlinux.iso, что бы много букв не печатать.
https://t.me/arch_linuxru
BlagoYar
device not found
А зачем указывать диск явно? Делаешь поиск и получаешь диск вне зависимости каким он подключен к системе. Если не хочешь подключить iso с флешки при наличии его на hdd, клади в разные папки: на винде в папку "b", на флешке в папку "z", на линуксе в "boot". При загрузке можно поменять одну букву, чтобы изменить источник загрузки при тесте.
Команда probe возвращает uuid в переменную и загрузчик уже грузит используя точный идентификатор диска.

insmod ntfs
Это лучше снаружи делать, чтобы не прописывать для каждого пункта.
мои программы
AZJIO
А зачем указывать диск явно?
Ну потому что как говорил "танцы с бубном", потому что пробовал и поиском, например так

		insmod part_msdos
		echo output insmod part_msdos
		echo ls (hd1,msdos1)
		search.fs_uuid 2024-12-01-05-48-32-00
		echo output search -n -u 2024-12-01-05-48-32-00
		search.fs_label 2024-12-01-05-48-32-00
		echo output search -n -l 2024-12-01-05-48-32-00
		search.fs_label E2B root (hd1,msdos1)
		echo output search -n -l E2B
		set iso_path=(hd1,msdos1)/_ISO/LINUX/ArchLinux-2024.07.01-x86_64.iso
		echo output set iso_path=(hd1,msdos1)/_ISO/LINUX/ArchLinux-2024.07.01-x86_64.iso
		export iso_path
		echo output export iso_path
		search --set=root --file "$iso_path"
		echo output search --set=root --file "$iso_path"
		loopback loop "$iso_path"
		echo output loopback loop "$iso_path"
		root=(loop)
		echo output root=(loop)
		configfile /boot/grub/loopback.cfg
		echo output configfile /boot/grub/loopback.cfg
		loopback --delete loop
		echo output loopback --delete loop
или так

	search --no-floppy --label E2B --set=root
    	isofile=/_ISO/LINUX/ArchLinux-2024.07.01-x86_64.iso
    	export isofile
    	loopback loop $isofile
    	root=(loop)
    	source (loop)/loader/loader.cfg
	loopback -d loop
	linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=UUID=$imgdevuuid img_loop=$isofile
	initrd (loop)/arch/boot/x86_64/initramfs-linux.img
Или может по-другому поиск делать?

AZJIO
insmod ntfs
Это лучше снаружи делать,
И так пробовал тоже :)
RusWolf
он у меня лежит на отдельном разделе диска
Раздел того же диска? В какой ФС раздел? С какой таблицей?
 
Зарегистрироваться или войдите чтобы оставить сообщение.