Моей подруге понадобился быстрый жесткий диск, поэтому я дал ей свой маленький 64 ГБ SDD. На этом SSD была установлена моя Linux. Я использовал dd для создания образа раздела (boot, root и home на одном разделе).

Этот раздел теперь находится на традиционном 500 ГБ отформатированном диске EXT4.

Есть ли способ заставить GRUB просто загрузиться, используя этот файл .img, который у меня есть? Я не вернул свой SSD, и я не могу пройти через все трудности, связанные с настройкой установки Linux с нуля. Я наткнулся на поддержку обратной петли в GRUB для образов ISO. Это также поддерживает EXT4? Кажется, я не могу найти что-то конкретное и не хочу ничего портить.

Приветствия.

1 ответ1

0

даже если файл содержит таблицу разделов, grub2 может тем временем загрузиться, где (hd0,1) - это местоположение файла, а (loop, 1) - это раздел внутри файла. однако, это только загрузит initramfs, файл на самом деле не смонтирован.

/etc/grub.d/40_custom

menuentry "My bootable disk image" {
    set isofile="hdd_ext4.img"
    loopback loop (hd0,1)/${isofile}
    linux (loop,1)/boot/vmlinuz-3.16.0-4-amd64 root=/dev/sda1 loop=/${isofile} ro
    initrd (loop,1)/boot/initrd.img-3.16.0-4-amd64
}

напишите свой собственный скрипт монтирования, chmod a+x и скопируйте в папку local-premount. используйте initramfs-tools для создания своего собственного "initrd.img-3.16.0-4-amd64" и скопируйте его в файл изображения. не нужно жестко кодировать, просто используйте переменные из записи grub $ {ROOT} и $ {loop} внутри скрипта.

/ И т.д. / initramfs-инструменты / скрипты / местного premount

#!/bin/sh

modprobe loop
modprobe ext4

# mount /dev/sda1 (file location)
mkdir /host
mount -n -t ext4 -o rw,data=ordered ${ROOT} /host

# kpartx add partition devmappings for hdd_ext4.img
loop_pt=$(kpartx -av /host${loop} 2>&1 | grep loop | cut -f3 -d" ")

# mount hdd_ext4.img (image file)
mount -n -t ext4 -o loop,rw,data=ordered /dev/mapper/${loop_pt} ${rootmnt}

Примечание: это будет работать только если kpartx установлен в initramfs

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