web-dev-qa-db-fra.com

Comment créer un disque de restauration USB amorçable sans surveillance?

J'ai une charge de 14,04 systèmes de kiosques, à mi-chemin à travers le pays. Ce sont des petits appareils intégrés horribles. Je dois tous les mettre à niveau vers 16.04 pour prendre en charge une nouvelle pile logicielle. do-release-upgrade fonctionne la moitié du temps. L'autre moitié, il détruit l'installation. En outre, les processeurs sont très lents et les connexions réseau sur certains sites sont également assez médiocres. Ainsi, même lorsque cela fonctionne, la mise à niveau prend beaucoup de temps.

Donc nouveau plan.
Je peux créer une image système entièrement installée pour chaque kiosque dans Virtualbox, LXC ou autre.
Il me faut un moyen de récupérer ces images sur les systèmes.

Le principal problème ici est qu'il y a très peu de techniciens disponibles à l'autre bout. Et je ne veux pas parcourir 200 miles pour le faire moi-même. J'ai besoin de quelque chose qui est presque complètement automatisé et ne nécessite pas de clavier.

J'imagine un scénario où:

  • Je crée une image système pour chaque kiosque
  • Je crée un lecteur USB amorçable pour chaque kiosque et le copie sur l’image du kiosque.
  • Je les nomme et les poste.
  • À l’autre extrémité, un membre du personnel disposant d’un accès physique aux ports USB se connecte simplement au bon lecteur et redémarre.
  • L'élément de démarrage de celui-ci écrit et développe ensuite l'image du disque.

C'est cet "élément d'amorçage" que je recherche. Je m'attendais à ce que quelque chose comme cela existe déjà (pour les installations de réimagerie en bloc), mais il est possible que je sois sur un nouveau territoire. Tout ce qui obtient mes images installées sans interférence manuelle (passé de le brancher) obtient des points.

Autant que je sache, des options comme Clonezilla nécessitent que quelqu'un avec un clavier lui dise quoi faire. J'ai besoin de quelque chose qui ne nécessite pas de clavier, mais qui fonctionne.

5
Oli

Shellscript

J'ai aimé créer un script shell bash, qui peut faire son travail automatiquement dans les systèmes installés basés sur Ubuntu ainsi que dans les systèmes persistants, ainsi que dans un petit système '9w' basé sur Debian Jessie. J'espère que cela vous sera utile, ainsi qu'à d'autres personnes dans le futur.

Le script suppose qu'il doit exister deux lecteurs inscriptibles (périphériques de stockage de masse), le lecteur actif et le lecteur cible. Ne pas utilisez toram, cela gâchera l’identification du disque dur.

Les appels au shellscript dus-live, qui est une partie exécutante de mkusb. Donc, il remplace le shellscript interactif dus.

_dus-live_ peut gérer les types de fichiers source suivants,

  • fichier.iso
  • fichier.img
  • fichier.img.gz
  • fichier.img.xz

et le système cible peut avoir à la fois des tables MSDOS et GUID (lorsque le lecteur cible est plus grand que la taille du système d'origine dans l'image).

J'ai utilisé le nom 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
_

Testé dans des systèmes live persistants

J'ai testé qu'il fonctionne sur deux systèmes live persistants, qui peuvent être installés à partir de fichiers image compressés,

Voir plus de détails sur cette méthode sur ce lien,

Autostart

Ce script peut être démarré automatiquement lorsque la ligne suivante est ajoutée à démarrage automatique, dans Lubuntu via la commande suivante,

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

Modifiez-le pour qu'il corresponde à l'image 'dd' réelle _/path/name_ et à l'emplacement réel du shellscript.

La commande correspondante dans 9w est

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

Votre propre système personnalisé

Vous pouvez vouloir ou devoir créer votre propre système personnalisé (live, persistant live ou installé sur un lecteur USB ou une carte mémoire). Vous pouvez probablement remplacer _dus-live_ par une simple ligne de commande dd, du moins si le système que vous souhaitez installer utilise la table de partitions MSDOS.

Avertissement

Ce shellscript a été créé assez rapidement, il fonctionne comme je l’ai testé, mais de nombreux cas ne sont pas testés et des événements inattendus peuvent se produire. Alors, testez-le s'il n'y a pas de lecteur contenant des données précieuses, qui pourraient être écrasées.

Captures d'écran

Trois captures d'écran de Lubuntu

Pendant les 30 premières secondes, vous pouvez utiliser la combinaison de touches ctrl + C pour arrêter l'autocllon,

enter image description here

Sortie de la console: à ce stade, le système se synchronise (vidage des mémoires tampons vers le lecteur cible),

enter image description here

Pendant 30 secondes, vous pouvez utiliser la combinaison de touches ctrl + C pour éviter la mise hors tension (si vous souhaitez rester dans la session de bureau de Lubuntu),

enter image description here

Une capture d'écran correspondante de 9w

enter image description here

3
sudodus

Avez-vous envisagé d'utiliser des duckies en caoutchouc USB de Hak5 https://hakshop.com/collections/usb-rubber-ducky en mode twin-duck. Je les ai utilisées pour installer Ubuntu sur 7 machines. Sur chacun d'entre eux, tout ce que j'avais à faire était de redémarrer les systèmes avec le ducky en caoutchouc branché sur le port USB, car mes systèmes donnaient toujours la priorité au démarrage à partir de l'USB, c'était facile. Mais vous pouvez utiliser deux canards en caoutchouc et en utiliser un pour ajuster vos préférences de BIOS et démarrer à partir d'un périphérique USB tout en utilisant l'autre comme lecteur flash Live Boot et un clavier pour naviguer dans les écrans de démarrage des paramètres produits par le menu d'installation unetbootin boot. Avec un peu de patience et d'essais et d'erreurs, vous pouvez le faire. Et comme aucun technicien n'est nécessaire sur place, vous pouvez envoyer les canards prêts en caoutchouc aux personnes ayant une proximité physique et un accès aux systèmes.

En mode Twin-Duck, le canard en caoutchouc agit à la fois comme un périphérique HID (dans notre cas, un clavier) et un périphérique de stockage de masse USB. Il vous suffit donc de créer un disque flash amorçable avec unetbootin sur le stockage de masse USB du Rubber Ducky et d’utiliser la fonctionnalité d’automatisation HID (clavier) - injection de touches - pour automatiser la navigation (touches) nécessaire lors de l’installation du système d’exploitation. . vous pouvez même le faire sur des systèmes sans tête.

0
endrias