Как я могу создать загрузочный, автоматический диск восстановления USB?

У меня загружено 14,04 киосковых системы на полпути по всей стране. Это ужасные маленькие интегрированные устройства. Мне нужно обновить их до 16.04 для поддержки нового программного стека. do-release-upgrade работает в половине случаев. Другая половина разрушает установку. Кроме того, процессоры действительно работают медленно, а сетевые подключения в некоторых местах также довольно плохие. Так что даже когда это работает, обновление занимает много времени.

Итак, новый план.
Я могу сделать полностью установленный образ системы для каждого киоска в Virtualbox, или LXC, или что-то еще.
Мне нужен способ распаковки этих изображений в системы.

Главная проблема здесь в том, что на другом конце очень мало технических специалистов. И я не хочу летать 200 миль, чтобы сделать это сам. Мне нужно что-то, что почти полностью автоматизировано и не требует клавиатуры.

Я представляю себе сценарий, в котором:

  • Я создаю образ системы для каждого киоска
  • Я создаю загрузочный USB-накопитель для каждого киоска и копирую образ киоска.
  • Я отмечаю каждый и публикую их.
  • С другой стороны, сотрудник с физическим доступом к USB-портам просто подключает нужный диск и перезагружается.
  • Загрузочный элемент этого затем записывает и расширяет образ диска.

Это тот самый "загрузочный элемент", который я ищу. Я ожидал, что что-то подобное может уже существовать (для массовых установок повторного создания изображений), но возможно я на новой территории. Все, что устанавливает мои изображения без ручного вмешательства (после его подключения), получает очки.

Насколько я знаю, такие опции, как Clonezilla, требуют, чтобы кто-то имел клавиатуру, чтобы сказать ей, что делать. Мне нужно то, что не требует клавиатуры, просто включается и делает это.

5
задан 29 June 2017 в 05:58

2 ответа

Вы рассмотрели использование резиновых голубчиков USB от Hak5 https://hakshop.com/collections/usb-rubber-ducky в режиме двойной утки. Я использовал их для установки Ubuntu на 7 машин. На каждом все, что я должен был сделать, было перезапустить системы с резиновым голубчиком, включил USB-порт, так как мои системы всегда уделяют первостепенное значение начальной загрузке от USB, это было легко. Но Вы могли использовать двух резиновых голубчиков и использовать для корректировки предпочтений BIOS и начальной загрузки от USB при использовании другого в качестве Живого диска Флэш-памяти начальной загрузки и Клавиатуры для навигации по экранам-заставкам установки, произведенным unetbootin загрузите меню установки. С небольшим количеством терпения и метода проб и ошибок можно сделать это. И с тех пор не на техническом персонале сайта необходимы, можно отправить готовых резиновых голубчиков по почте людям с физической близостью и доступом к системам.

Когда в режиме Twin-Duck, резиновый голубчик действует как оба HID (в нашем случае Клавиатура) и устройство массового хранения USB. Таким образом, только необходимо сделать Загрузочный диск флэш-памяти с unetbootin на Массовое хранение USB Резинового Голубчика и используют HID (Клавиатура), автоматизация - нажимает на инжекцию - функциональность для автоматизации навигации (нажатия клавиш), необходимые при установке ОС. можно даже сделать это в бездисплейных системах.

0
ответ дан 23 November 2019 в 10:26

Сценарий оболочки

Я любил делать сценарий оболочки удара, который может сделать его вещь автоматически в установленном, а также в персистентных живых основанных на Ubuntu системах и также в маленьком '9w' система на основе Debian Jessie. Я надеюсь, что это будет полезно для Вас, а также для других людей в будущем.

Сценарий предполагает, что должно быть два перезаписываемых диска (устройства массового хранения), живой диск и целевой диск. Не используйте toram, он испортит идентификацию живого диска.

Вызовы сценария оболочки dus-live, который является выполняющейся частью mkusb. Таким образом, это заменяет интерактивный сценарий оболочки dus.

dus-live может управлять следующими видами исходных файлов,

  • file.iso
  • file.img
  • file.img.gz
  • file.img.xz

и целевая система может иметь и MS-DOS и таблицы разделов GUID (когда целевой диск является более крупным, чем размер исходной системы в изображении).

Я использовал имя autoclone:

#!/bin/bash

# Date        Sign     Comment
# 2017-06-30  sudodus  Created
# 2017-07-01  sudodus  checking that there is 1 possible target drive

wait=30

read -t "$wait" -p "WARNING: After $wait seconds '$0' will CLONE AUTOMATICALLY;
from the file given as parameter to the first detected drive
(except the live drive), so it will be overwritten.
If this is not what you want or if you are not sure, PRESS {ctrl + C} NOW !
...
"

function power_off {
read -t "$wait" -p "WARNING: After $wait seconds '$0' will POWEROFF automatically;
If this is not what you want or if you are not sure, PRESS {ctrl + C} NOW !
...
"
sudo poweroff
}

user=$(whoami)
if [ "$user" != "root" ]
then
 echo "run $0 with sudo or as root"
 exit
fi
if [ "$1" == "" ] || ! test -s "$1"
then
 echo "Usage:   sudo $0 <with an iso file or image file as parameter>"
 echo "Example: sudo $0 \"file.iso\""
 echo "Example: sudo $0 \"file.img\""
 echo "Example: sudo $0 \"file.img.xz\""
 exit
fi

source="$1"

livedrive=$(lsblk -lo name,type,mountpoint | \
grep -m1 -e /$ -e /cdrom$ -e /lib/live/mount/medium -e /lib/live/mount/persistence)
#echo "$livedrive"
livedrive=${livedrive:0:3}
echo "livedrive=/dev/$livedrive"

number_of_targets=$(lsblk -ldo name,type|grep -v "$livedrive"|grep -v zram|grep disk|wc -l)
           target=$(lsblk -ldo name,type|grep -v "$livedrive"|grep -v zram|grep disk)

#echo "target=$target"
# echo "number_of_targets=$number_of_targets"
# sudo lsblk -o name,model,size,type,fstype,label,mountpoint | \
#  grep -v "$livedrive"|grep -v zram| grep -v loop|grep -v ' rom '
####

if [ $number_of_targets -ne 1 ]
then
 echo '--------------------------------------------------------'
 sudo lsblk -o name,model,size,type,fstype,label | \
  grep -v "$livedrive"|grep -v zram| grep -v loop|grep -v ' rom '
 echo "$number_of_targets possible target drives found, but
1 possible target drive should be found
for '$0' to work correctly."
 if [ $number_of_targets -gt 1 ]
 then
  echo "--------------------------------------------------------
- Please remove every other possible target drive!
- Or are you running in the wrong computer?"
 fi
 echo "--------------------------------------------------------"
 wait=60
 power_off
 exit
fi
target=/dev/${target:0:3}

echo "target=$target"

umount "$target"?*

paramfromfile=$(mktemp)

echo "$source
$target" > "$paramfromfile"

# do it with dus-live, which comes with mkusb version 12-

echo "calling 'dus-live' ..."
dus-live pff:"$paramfromfile"

power_off

Протестированный в персистентных живых системах

Я протестировал это, это работает в двух персистентных живых системах, которые могут быть установлены от сжатых файлов изображений,

Посмотрите больше деталей об этом методе в этой ссылке,

Автоматический запуск

Этот сценарий может быть автоматически запущен, когда следующая строка добавляется для автозапуска в Lubuntu через следующую команду,

echo 'xterm -fa default -fs 12 -title autoclone -e sudo /home/lubuntu/autoclone dd_no-biggie-68MB.img.xz' >> ~/.config/lxsession/Lubuntu/autostart

Измените его для соответствия фактическому изображению 'dd' /path/name и фактическое местоположение сценария оболочки.

Соответствующая команда в 9w

echo '@xterm -fa default -fs 12 -title autoclone -e sudo /root/autoclone /root/dd_no-biggie-68MB.img.xz' >> ./.config/lxsession/LXDE/autostart

Ваша собственная система

Можно хотеть или иметь для создания собственной системы (живой, персистентный живой или установленный в Карте памяти или карте памяти). Можно, вероятно, заменить dus-live с простым dd командная строка, по крайней мере, если система Вы хотите установить, использует таблицу разделов MS-DOS.

Отказ от ответственности

Этот сценарий оболочки был сделан скорее быстро, он работает, как протестировано мной, но существует много случаев, которые не тестируются, и неожиданные вещи могут произойти. Поэтому протестируйте его, где нет никакого диска с ценными данными, которые могли бы быть перезаписаны.

Снимки экрана

Три снимка экрана Lubuntu

В течение первых 30 секунд можно использовать комбинацию горячей клавиши ctrl + C, чтобы прекратить автоклонироваться,

enter image description here

Консоль произвела: на данном этапе система синхронизирует (сбрасывание буферов к целевому диску),

enter image description here

В течение 30 секунд можно использовать комбинацию горячей клавиши ctrl + C для предотвращения выключения питания (если Вы хотите остаться на настольной сессии Lubuntu),

enter image description here

Соответствующий снимок экрана 9w

enter image description here

3
ответ дан 23 November 2019 в 10:26

Другие вопросы по тегам:

Похожие вопросы: