全国に14.04のキオスクシステムがあります。これらは恐ろしい小さな統合デバイスです。新しいソフトウェアスタックをサポートするには、それらをすべて16.04にアップグレードする必要があります。 do-release-upgrade
は半分の時間で機能します。残りの半分はインストールを破壊します。さらに、CPUは本当に遅く、一部のサイトのネットワーク接続もかなり見苦しいです。そのため、機能する場合でも、アップグレードには長い時間がかかります。
だから新しい計画。
Virtualbox、LXC、その他何でも、キオスクごとに完全にインストールされたシステムイメージを作成できます。
これらのイメージをシステムに展開する方法が必要です。
ここでの主な問題は、もう一方の端に利用可能な技術者が非常に少ないことです。そして、私はこれを自分で行うために200マイル飛ぶことはしたくない。ほぼ完全に自動化され、キーボードを必要としないものが必要です。
私は次のようなシナリオを想像しています:
私が探しているのは、その「起動可能な要素」です。私はこのような何かが既に存在するかもしれないと思っていました(バルク再インストールの場合)が、私は新しい領域にいる可能性があります。手動で干渉せずにイメージをインストールする(貼り付けて)ものはすべてポイントを取得します。
私の知る限り、Clonezillaのようなオプションを使用するには、キーボードを持っている人に何をすべきかを伝える必要があります。キーボードを必要とせず、ただ乗ってそれを行うものが必要です。
私はbashシェルスクリプトの作成を楽しんでいます。これは、インストール済みのシステムやUbuntuの永続的なライブシステム、Debian Jessieベースの小さな「9w」システムで自動的に実行できます。これがあなただけでなく、将来他の人々にも役立つことを願っています。
このスクリプトは、2つの書き込み可能なドライブ(大容量記憶装置)、ライブドライブとターゲットドライブがあると想定しています。 toramをnot使用しないでください。ライブドライブの識別が損なわれます。
シェルスクリプトはdus-live
を呼び出します。これはmkusbの実行部分です。したがって、インタラクティブなシェルスクリプトdus
を置き換えています。
dus-live
は、次の種類のソースファイルを管理できます。
ターゲットシステムには、MSDOSと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
圧縮されたイメージファイルからインストールできる2つの永続的なライブシステムで動作することをテストしました。
phillw.net/isos/linux-tools/9w/9w-dus_debian-jessie-i686-persist-live_2017-06-07_4GB.img.xz (362 MiB)
このリンクでこの方法の詳細を参照してください。
次のコマンドを使用して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
独自のカスタムシステム(ライブ、永続ライブ、またはUSBドライブまたはメモリカードにインストール)を作成する必要がある場合があります。少なくともインストールするシステムがMSDOSパーティションテーブルを使用している場合は、おそらくdus-live
を単純なdd
コマンドラインに置き換えることができます。
このシェルスクリプトはかなり迅速に作成され、私がテストしたとおりに動作しますが、テストされていない多くのケースがあり、予期しないことが起こる可能性があります。そのため、貴重なデータを含むドライブが存在しない場所で上書きテストを行ってください。
Lubuntuの3つのスクリーンショット
最初の30秒間は、ホットキーの組み合わせctrl + Cを使用してオートクローンを停止できます。
コンソール出力:この段階では、システムは同期しています(バッファーをターゲットドライブにフラッシュ)、
30秒の間、ホットキーの組み合わせctrl + Cを使用して電源オフを回避できます(Lubuntuデスクトップセッションにとどまる場合)。
9wの対応するスクリーンショット
Hak5のUSBラバーダッキーを使用することを検討しましたか? https://hakshop.com/collections/usb-rubber-ducky ツインダックモード。 Ubuntuを7台のマシンにインストールするために使用しました。私のシステムは常にUSBからの起動を優先するため、ゴム製のダッキーをUSBポートに差し込んでシステムを再起動するだけでした。これは簡単でした。しかし、2つのゴム製ダッキーを使用し、1つを使用してBIOS設定を調整し、USBから起動し、もう1つをunetbootin
ブートインストールメニューによって生成される設定スプラッシュ画面をナビゲートするライブブートフラッシュドライブおよびキーボードとして使用できます。少しの忍耐と試行錯誤でそれを行うことができます。また、現場の技術者は必要ないため、準備が整ったゴム製ダッキーを物理的に近く、システムにアクセスできる人に郵送できます。
Twin-Duckモードでは、ゴム製のダッキーはHID(この場合はキーボード)とUSB大容量記憶装置の両方として機能します。したがって、ラバーダッキーのUSB大容量ストレージにunetbootin
のブータブルフラッシュディスクを作成し、OSのインストール中に必要なナビゲーション(キーストローク)を自動化するHID(キーボード)オートメーション-キーストロークインジェクション機能を使用するだけです。 。ヘッドレスシステムでもこれを行うことができます。