Сайт | Скачать | Видео | Wiki

Автор Тема: Установщик для флэшки live дистрибутива linux с ventoy.  (Прочитано 3172 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
  мне пришла идея а что если использовать 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 указывает на размер дополнительного раздела , можете его менять в нужную вам сторону.
« Последнее редактирование: 26 Февраль 2024, 21:36:06 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1729
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
второй скрипт форматирует sdb3
Почему именно sdb3? У меня это жесткий диск.
Мы с вами где-то уже опреднляли usb-устройства. И выбор между ними неплохо бы сделать, если из больше одного
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
Мы с вами где-то уже опреднляли usb-устройства. И выбор между ними неплохо бы сделать, если из больше одного
да в скрипте с Qemu по критерию removable, sdb3 из той логики, что на sda обычно жесткие диски, для выбора я ввёл peco но когда сунул в слот 2 флэшки, скрипт стал путаться,ибо после перезагрузки dev может поменять букву, да и самому легко запутаться, и с этой точки зрения скрипт несовершенен, и требует доработок, если есть у вас или у кого либо еще дельные предложения, я готов их расмотреть, и применить ибо тема полезная, я сегодня применил  к своим флэшкам, если не брать во внимание необходимость перезагрузки (ох уж эти капризы и требования fdisk) то скрипт неплохой, насчет вашего случая можно глянуть выхлоп lsblk -l без и с флэшкой, и скоректировать скрипт под себя, но вы правы необходимо как-то автоматизировать определение флэшки, завтра уже буду думать...

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1729
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
При чем тут qemu? И каким Боком флешка - sdb?

Флешки здесь:
/sys/block/sd*/queue/rotational

https://forum.puppyrus.org/index.php?topic=24103.msg187213#msg187213
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
При чем тут qemu
в другом скрипте для qemu применили определение флэшки,за ссылку спасибо позже гляну.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34063
  • Репутация: +232/-0
    • PuppyRus-A
устанавливает второй скрипт в автозагрузку
Системы из под которой устанавливается вентой?
Если новичок полезет работать в консоли с fdisk и т.п. - закончится :
Капец моей системе, ступил и удалил два раздела,
Для остальных проще подробнее пошагово описать метод. Проще сделать руками, понимая что делаешь

А вообще в моих дистрах есть инсталлятор фругалов и фругала в фул. Тоже не шедевр

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8637
  • Репутация: +187/-2
  • Старый чайник
Для остальных проще подробнее пошагово описать метод
ventoy-1.0.97/README:
Код
========== Ventoy2Disk.sh ===============

sudo bash Ventoy2Disk.sh { -i | -I | -u } /dev/sdX   sdX is the USB device, for example /dev/sdb.

Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX
  CMD:
    -i   install ventoy to sdX (fail if disk already installed with ventoy)
    -I   force install ventoy to sdX (no matter installed or not)
    -u   update ventoy in sdX
   
  OPTION: (optional)
   -r SIZE_MB  preserve some space at the bottom of the disk (only for install)
   -s          enable secure boot support (default is disabled)
   -g          use GPT partition style, default is MBR style (only for install)

Please refer https://www.ventoy.net/en/doc_start.html for details.   


========== VentoyWeb.sh ===============
1. sudo bash VentoyWeb.sh
2. open your browser and visit http://127.0.0.1:24680


========== VentoyPlugson.sh ===============
1. sudo bash VentoyPlugson.sh /dev/sdX
2. open your browser and visit http://127.0.0.1:24681

========== VentoyVlnk.sh ===============
Usage:  sudo bash VentoyVlnk.sh CMD FILE
  CMD:
   -c FILE      create vlnk for FILE
   -l VLNK      parse vlnk file
   -v           print verbose info
   -h           print this help


========= VentoyGUI ===================
VentoyGUI is native GUI program for Linux (GTK/QT)
1. Just double-click the file (e.g. VentoyGUI.x86_64)
2. If it can not startup after double-click, you can open the terminal and just execute the file (e.g.  ./VentoyGUI.x86_64)


========== CreatePersistentImg.sh ===============

sudo bash CreatePersistentImg.sh  [ -s SIZE_IN_MB ] [ -t FSTYPE ] [ -l LABEL ]   for example:

bash CreatePersistentImg.sh                 ---->  persistence.dat in 1GB size and ext4 filesystem and casper-rw label
bash CreatePersistentImg.sh -l MX-Persist   ---->  persistence.dat in 1GB size and ext4 filesystem and MX-Persist label
bash CreatePersistentImg.sh -s 2048         ---->  persistence.dat in 2GB size and ext4 filesystem and casper-rw label
bash CreatePersistentImg.sh -s 4096 -t xfs  ---->  persistence.dat in 4GB size and xfs  filesystem  (ext2/3/4 xfs are supported)  and casper-rw label

Please refer https://www.ventoy.net/en/plugin_persistence.html for details.



========== ExtendPersistentImg.sh ===============
sudo bash ExtendPersistentImg.sh  file size   
For example:
bash ExtendPersistentImg.sh persistence.dat 2048  ---->  Extend persistence.dat by 2048MB
That is to say, persistence.dat file will grow to 3GB size (assume that it is 1GB size before extend)

Please refer https://www.ventoy.net/en/plugin_persistence.html for details.
Всё описано до нас. Я пробовал .sh и GUI, работает как часы.


Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
Я проанализировал еще раз и скрипт, и предложение выбора флэшки используя /sys/block/sd*/queue/rotational и у меня возник такой вопрос, а что будет если устройство хранения ,на компе не вращающееся то есть ssd исходя из /sys/block/sd*/queue/rotational,тоже будет отнесен к флэшке,и потому способ предложенный вами не отделит флэшки от ssd , можно после выбора носителя проверить если он usb продолжить выполнения скрипта нет предложение подключить флэшку и выход из скрипта вот примерный код, спешить не буду , ибо хочу качествено.
Код
#!/bin/bash
#set -x

# Получение списка устройств
#devices=$(lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0)/')
devices=$(lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0|fd0)/')

# Перебор устройств
for device in $devices; do

  # Проверка существования устройства
  if [[ ! -e /dev/"$device" ]]; then
    echo "Устройство $device не существует."
    continue
  fi

  # Проверка USB
  if [[ $(udevadm info -q all -n /dev/"$device" | grep -i "ID_BUS=usb") ]]; then
    PART="$device"
    echo "Найден USB-накопитель: $device"
    break
  fi

done

# Обработка отсутствия USB-накопителя
if [[ -z "$PART" ]]; then
  echo "USB-накопитель не найден."
  echo "Вставте флэшку и запустите скрипт снова"
  read ex
  exit
fi
  что скажете?

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
Системы из под которой устанавливается вентой?
Если новичок полезет работать в консоли с fdisk и т.п. - закончится :
да да было знойно :) но реальность была еще глупее я его Gparted-ом убил  :D

всё делаю для брата(старшой) , в своей области он близок к богу(микроэлектроника) а вот когда дело доходит до системного администрирования он окисляется и ему лениво, ни читать ни с конфигами дело иметь не хочет, скрипты запускать может и работать с ними тоже (прогает Arduin-ки) , лень ему дальше двигатся, а передо мной стоит задача его заинтересовать live дистрибутивами, а то он на своих mx и mint-ах застрял , он пока преимуществ не видит перед большими, и в эту причину хочу написать скрипт который сделает всё , в принципе скрипт то и написан, работает но как правильно заметил imp нужно исключить работу скрипта на hdd и sdd , и работает только по флэшкам.  А так да руками и проще и надёжней... но иногда красивая обёртка заставляет с открытым ртом  застыть перед прилавком, в магазине детских игрушек...
« Последнее редактирование: 26 Февраль 2024, 11:13:27 от totiks2012 »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
Системы из под которой устанавливается вентой?
да из Системы из под которой устанавливается вентой
« Последнее редактирование: 26 Февраль 2024, 11:14:48 от totiks2012 »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34063
  • Репутация: +232/-0
    • PuppyRus-A
да из Системы из под которой устанавливается вентой
По мне это жесточайший изврат

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
По мне это жесточайший изврат
почему? просто автомат. То что опасный , да но если проработать то его можно обезопасить.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34063
  • Репутация: +232/-0
    • PuppyRus-A
Хотя бы потому, что ставят дистр, обычно не фругала без сохраненки
Жесть , короче. Чего тут обсуждать. Сработает только у автора в его уникальном окружении (пк, флэшки)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 909
  • Репутация: +24/-0
  • Автор темы
Хотя бы потому, что ставят дистр, обычно не фругала без сохраненки
Жесть , короче. Чего тут обсуждать. Сработает только у автора в его уникальном окружении (пк, флэшки)
Да делается строго под ось созданую с помощью  Live Kit, родственную похожую на minios, и это фругал с сохраненкой, способ рабочий, ибо ventoy и потому универсальный, если скоректировать  запись в grub.cfg  то например можно приспособить этот установщик на usb носитель дистрибутива от gumanzoy, либо другие Debian Dog, ну по вашему Жесть ну жесть так жесть , от этого же ведь скрипт не перестанет работать,...я просто предложил  на рассмотренние, да-да, нет-нет, просто поделился и ни на что не претендую.
Но как тему завершу, конечный вариант опубликую. ибо прочтения есть , значит есть интерес, правда помечу скрипт требующий внимания при выполнении и осторожность.
« Последнее редактирование: 26 Февраль 2024, 13:23:32 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1729
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
что скажете?
"Вращающееся устройство" либо cd*, либо sr*
Компьютер имеет то преимущество перед мозгом, что им пользуются.