SquashFS
. . .
Ставлю необходимые пакеты:
apt update
apt install squashfs-tools
...
Создаю каталог для монтирования рабочей файловой системы:
mkdir /mnt/root
...
Монтирую рабочую файловую систему в созданный каталог:
mount /dev/sda1 /mnt/root
...
Создаю SquashFS образ файловой системы:
apt install lz4
mksquashfs /mnt/root /tmp/out.squashfs -comp lz4 -noappend -no-fragments
...
После чего размонтирую рабочую файловую систему:
umount /mnt/root
. . .
Загрузочная флешка:
. . .
Узнаю физическое расположение флешки:
lsblk (в моем случае sdb)
...
Форматирую в FAT32:
apt install dosfstools mtools
mkfs.vfat /dev/sdb
...
Иду в /usr/lib/grub/ и смотрю какие каталоги там лежат.
В моем случае только /usr/lib/grub/i386-pc/
...
Устанавливаю GRUB:
grub-install --target=i386-pc --boot-directory=/mnt/flash/boot /dev/sdb
...
Создаю конфигурационный файл GRUB:
grub-mkconfig -o /mnt/flash/boot/grub/grub.cfg
...
Копирую образ SquashFS в корень флешки:
cp /tmp/out.squashfs /mnt/flash/
...
Добавляю в файл конфигурации grub (nano /mnt/flash/boot/grub/grub.cfg - в секцию menuentry) загрузку из образа:
linux /out.squashfs
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9322dd9e-2a03-469a-8c4d-64c840ae1edb' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
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 9322dd9e-2a03-469a-8c4d-64c840ae1edb
else
search --no-floppy --fs-uuid --set=root 9322dd9e-2a03-469a-8c4d-64c840ae1edb
fi
linux /out.squashfs
echo 'Loading Linux 5.10.0-20-amd64 ...'
linux /boot/vmlinuz-5.10.0-20-amd64 root=UUID=9322dd9e-2a03-469a-8c4d-64c840ae1edb ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.10.0-20-amd64
}
...
Копирую файлы vmlinuz-5.10.0-20-amd64 и initrd.img-5.10.0-20-amd64 из директории /boot в директорию /mnt/flash/boot на флешке.
cp /boot/vmlinuz-5.10.0-20-amd64 /mnt/flash/boot/
cp /boot/initrd.img-5.10.0-20-amd64 /mnt/flash/boot/
...
Размонтирую флешку:
umount /mnt/flash
...
Файлы на флешке:
root@debian:/mnt/flash# find ./ -type f
./boot/initrd.img-5.10.0-20-amd64
./boot/grub/i386-pc/load.cfg
./boot/grub/fonts/unicode.pf2
./boot/grub/grubenv
./boot/grub/grub.cfg
./boot/vmlinuz-5.10.0-20-amd64
./out.squashfs
root@debian:/mnt/flash#