мне пришла идея а что если использовать ventoy в качестве универсального загрузчика, и написать cli инсталятор live usb для своего кастомного респина Debian12, сказано сделано. Инсталятор состоит из двух скриптов:
Первый скрипт подготавливает флэшку, устанавливает на неё разделы Ventoy, VENTOIEFI, дополнительный раздел, также с помощью fdisk подготавливает дополнительный раздел к форматированию в ext4. И делает перезагрузку .Также устанавливает второй скрипт в автозагрузку чтоб после перезагрузки продолжить процесс установки дистрибутива на флэшку.В более раней версии использовал peco, в финальной версии он уже не нужен.
------------
третье обновление и последнее код оптимизирован
использует cat /sys/block/$devices/events
убрал лишние диалоги
------------
Привожу код скриптов.
ВНИМАНИЕ СКРИПТЫ ПРИМЕНЯТЬ С ОСТОРОЖНОСТЬЮ и С ПОНИМАНИЕМ ТОГО ЧТО ОНИ ДЕЛАЮТ
ЕСТЬ РИСК ПОТЕРИ ДАННЫХ И ДЕЛАЕТЕ ВЫ ВСЁ ЭТО НА СВОЙ СТРАХ И РИСК!
ФЛЭШКУ в USB Слот ВТЫКАЕМ ОДНУ!
1.--Ve2usb-3.sh
#!/bin/bash
#set -x
devices=$(lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0|fd0)/ {print $1; exit}')
echo "Устройство /dev/""$devices"
PART="$devices"
if [[ "$(cat /sys/block/$devices/events)" == "media_change" ]]; then
echo "Флешка вставлена."
# здесь можете выполнить дополнительные действия
else
echo "Флешка не вставлена."
exit
fi
read -p " Для продолжения жмем ВВОД"
cd "$PWD"/ventoy-1.0.97/
sudo ./Ventoy2Disk.sh -i -r 4000 /dev/"$PART"
printf 'n\np\n3\n\n\nw\n' | sudo fdisk /dev/"$PART"
echo "СЕЙЧАС ВАШ КОМПЬЮТЕР БУДЕТ ПЕРЕЗАГРУЖЕН"
echo "После перезагрузки СКРИПТ ЕДИНОРАЗОВО продолжит свою работу"
read -p "Для продолжения нажжмите ВВОД"
sleep 3
# Создание desktop-файла для автозапуска второго скрипта
cat > ~/.config/autostart/ventoy_copy.desktop << EOF
[Desktop Entry]
Type=Application
Exec=xfce4-terminal --window -e "/home/live/ol/copy_files.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Terminal=true
Name=Ventoy Copy Files
Comment=Copy files to Ventoy partition after reboot
EOF
sudo reboot
2.--copy_files.sh
#!/bin/bash
devices=$(lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0|fd0)/ {print $1; exit}')
echo "Устройство /dev/""$devices"
PART="$devices"
if [[ "$(cat /sys/block/$devices/events)" == "media_change" ]]; then
echo "Флешка вставлена."
else
echo "Флешка не вставлена."
exit
fi
echo "Будет создан новый раздел" "/dev/""$PART"3
read -p "Для продолжения жмем ВВОД"
sudo mkfs.ext4 /dev/"$PART"3
# Создание временного каталога для монтирования
sudo mkdir /mnt/temp
# Монтирование раздела
sudo mount /dev/"$PART"3 /mnt/temp
echo "Копирую файлы дистрибутива на флэшку"
echo "..."
sudo cp -r /home/live/ol/oldwave_7_1 /mnt/temp
# Отмонтирование раздела
sudo umount /mnt/temp
# Удаление временного каталога
sudo rmdir /mnt/temp
echo "Каталог с дистрибутивом oldwave скопирован"
sudo mkdir /mnt/fat16
sudo mount -t vfat /dev/"$PART"2 /mnt/fat16
# Переменная с содержимым для вставки в конец файла grub.cfg
new_config="
menuentry \"---Old-Wave-linux_7---\" {
set d=oldwave_7_1
export d
search --set=root --no-floppy --file /\${d}/boot/met9
linux /\${d}/boot/vmlinuz dir=\${d} linux.flags=perch quiet enable_services=ssh,firewalld
initrd /\${d}/boot/initrfs.img
}"
# Добавляем содержимое в конец файла grub.cfg
echo "$new_config" | sudo tee -a /mnt/fat16/grub/grub.cfg > /dev/null
# Удаление desktop-файла из ~/.config/autostart
rm ~/.config/autostart/ventoy_copy.desktop
echo "ВСЕ НЕОБХОДИМЫЕ ОПЕРАЦИИ ВЫПОЛНЕНЫ"
echo "ВЫ СТАЛИ ОБЛАДАТЕЛЕМ live USB респином DEBIAN12---Oldwave linux"
sleep 6
второй скрипт форматирует sdb3 в ext4 , далее копирует каталог с ресурсами live usb на sdb3 , и прописывает в конец grub.cfg конфигу для меню на sdb2
Структура каталога ~/ol его содержимое
каталог oldwave_7_1 --каталог с ресурсами live usb linux
каталог ventoy-1.0.97--тут понятно и так
скрипты Ve2usb-3.sh , copy_files.sh , рядом с перечислеными каталогами,всё это в каталоге ol в $HOME
upd: в строке первого скрипта sudo ./Ventoy2Disk.sh -i -r 4000 /dev/"$PART" цифра 4000 указывает на размер дополнительного раздела , можете его менять в нужную вам сторону.