web-dev-qa-db-ja.com

Ubuntu Desktop 16.04.1 LTSの完全無人インストールを作成するにはどうすればよいですか?

目的

Ubuntu Desktop 16.04.1 LTSを完全に無人でインストールしたい。 ISO CDを挿入して、立ち去ります。

課題

  • ブートパラメータが正しくありません
  • まだ質問されており、マウスクリックが必要な質問
  • キックスタート/プレシードを使用した複雑な回答
  • 特にpartmanおよびubunutuからの、説明どおりに機能しないドキュメントの例

私はこの投稿に出会いました ここ それは私が必要としていたものに近かったが、Ubuntu Serverのためだったので私が必要としていたものを完全には達成しなかった。この投稿では、「非グラフィカル」Ubuntuインストールの使用を推奨していますが、Ubuntuデスクトップ用の非グラフィカルインストールは見つかりませんでした。 Ubuntu Desktop 16.04.1 LTSで手順を調整し、動作させようとしました。

使用されるドキュメント

次のリソースをすべて使用しました...

Askubuntuは2つ以上のリンクを許可しないため、リソースをすべて含めることはできません。それはあまり役に立たないので、ここにリストを示します。

  • AskUbuntu
  • Ubuntu install.en.pdf
  • 種子の例
  • Ubiquity Installerドキュメント
  • Partmanのドキュメントと例
  • パーティションレシピ3つの数字とその重みの説明
  • より複雑なPreseedの例

現在のソリューション

現在、無人インストールを作成しましたが、それが正しいかどうかはわかりません。つまり、isolinux/isolinux.cfgを編集したはずです。

私がリンクした投稿とUbuntu Desktopイメージには多くの違いがありました。ここに私の解決策があります:

ステップ1

内容を別のディレクトリにコピーし、関連ファイルを編集できるように、Ubuntu ISOをマウントしました。

mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso

ステップ2

次に、ISOファイルを別のディレクトリにコピーして編集しました。

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

ステップ3

isolinux/isolinux.cfgファイルを編集し、内部のすべてを次のものに置き換えました。

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

追加行は非常に長いため、読みやすくするために、使用したすべてのオプションを以下に示します。

file=/cdrom/ks.preseed 
auto=true 
priority=critical 
debian-installer/locale=en_US 
keyboard-configuration/layoutcode=us 
ubiquity/reboot=true 
languagechooser/language-name=English 
countrychooser/shortlist=US 
localechooser/supported-locales=en_US.UTF-8 
boot=casper 
automatic-ubiquity 
initrd=/casper/initrd.lz 
quiet 
splash 
noprompt 
noshell

完全に無人インストールを行うには、これらすべてのブートパラメータが必要であることがわかりました。 Ubuntu Serverの場合、異なる場合があります。

ステップ4

多くのpreseedファイルを使用して作成しようとしましたが、複雑になるほどエラーが発生する可能性が高くなります。これは現在、上記のisolinux.cfgファイルで動作する単純なpreseedファイルです。

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-AMD64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop

# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands

暗号化されたパスワードは含めなかったため、このpreseedファイルを試してみる場合は、暗号化されたパスワードに変更してください。 ここ は、パスワードを作成する3つの方法です。

ステップ5

/opt/ubuntuiso/ディレクトリから新しいISOを作成しました。

mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

ステップ6

最終的にVirtualboxでテストし、完全無人インストールを作成しました。

ご質問

isolinux/isolinux.cfgファイルを編集する必要がありますか?

他の投稿では、彼らはisolinux/txt.cfgファイルを編集し、それを機能させることができるようです。 isolinux/txt.cfgを使用しようとして1時間ほど試しましたが、うまくいきませんでした。

パーティションを直接指定するより複雑なパートマンレシピがありますか?または、機能するLVMセットアップですか?単純なLVMセットアップを使用しようとしましたが、再起動後に起動せず、黒い画面が表示されるだけでした。また、ドキュメントにリストしたpreseedの例のいずれも機能しませんでした。

助けてくれてありがとう。

40
Brandon Authier

返事

私はもともと他の解決策があるかどうかを確認するために質問をしてからしばらく時間を与えましたが、待機中に思いついた解決策がこれまで見てきた唯一の実行可能な解決策のようです。

誤解

これが多くの混乱の原因だったので、私はそれを解決しようとします。私が特に無人のUbuntu 16デスクトップイメージインストールを作成しようとしたときに、いくつかの答えがUbuntu 16 Serverイメージを使用しようとしたようです。この問題は、d-i(debianインストーラー)とユビキタスの実装の違いが原因で発生します。サーバーイメージは注意を払ってpreseedファイル内のすべてのd-iコマンドを使用するため、私が尋ねた質問のほとんどはサーバーイメージとは無関係です。ただし、デスクトップイメージのインストーラーとしてのユビキタスの実装により、多くのd-iコマンドは無視され、非常に制限され、多くのドキュメントが欠落しています。

ドキュメントリンクが見つかりました

  • ここ は、preseed/late_commandを無視するUbiquityのリンクです(preseed/early_commandも無視すると思います)
  • ここ は、Ubiquityで使用されないインストーラコンポーネントについて説明しているUbiquityドキュメントですが、このドキュメントでもわかるように、preseed/early_commandと書かれていますが、それを検証するために徹底的にテストします私のために働いていないようでした(私は私が間違っているかもしれないので、early_commandを厳密にテストしなかったことを認めます)。

成功したプロセス

無人Ubuntuデスクトップ16.04 LTS isoを正常に作成するためのプロセスを次に示します。

Ubuntu ISOをマウントする

関連ファイルを編集できるように、ISOファイルをマウントする必要があります。

mkdir -p /mnt/iso
mount -o loop ~/Downloads/ubuntu-16.04.1-desktop-AMD64.iso /mnt/iso

ISOファイルをコピーする

マウントされたISOのファイルを別のディレクトリにコピーして、編集できるようにする必要があります。好きなディレクトリを自由に使用してください。別のハウツーのために/ optディレクトリを選択しましたが、/ tmpも簡単に使用できます。

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Txt.cfgファイルを編集します

ここでは、/ opt/ubuntuiso/isolinux/txt.cfgファイルを編集し、ブートパラメーターをカスタマイズして、preseedファイルを含む完全無人インストールを取得します。任意のエディターを使用します。

#default live
#label live
#  menu label ^Try Ubuntu without installing
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
#label live-install
#  menu label ^Install Ubuntu
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
#label check
#  menu label ^Check disc for defects
#  kernel /casper/vmlinuz.efi
#  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash ---
#label memtest
#  menu label Test ^memory
#  kernel /install/mt86plus
#label hd 
#  menu label ^Boot from first hard disk
#  localboot 0x80

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

いくつかのことに注意してください。

  • ファイル内のすべての元のテキストをコメント化しました。
  • 「default live-install」を含むすべてのテキストを下部に追加しました
  • Preseedファイルに「ks.preseed」という名前を付けました。これはISOの最上位ディレクトリ(/ opt/ubuntuiso)にあります。

Preseedファイルを使用または作成する

既存のpreseedファイルは注意して使用してください!うまく機能するものは見つかりませんでした。これは、それらが存在しないと言っているのではなく、かなり多くの検索で何も見つかりませんでした。 preseedファイルを設定するには多くの方法がありますが、多くのオプションが無視されることがわかりました。これについては、上でリンクしたUbiquity Documentationおよびpreseed/late_command vs ubiquity/success_commandのリンクで説明しました。上記のtxt.cfgファイルで動作する簡単な作業preseedファイルを含めています。

netcfg/get_hostname stringおよびnetcfg/get_domain stringの場合は、任意の名前を付けることができます。スクリプトプロセスを使用して後で変更するため、unassigned-hostnameとunassigned-domainを使用しました。

インストール後に実行するカスタムコマンドについては、次を使用する必要があります。

ubiquity ubiquity/success_command string

実行するコマンドが続きます。 "; \"で文字列を継続し、インストールされた新しいシステムに関連するものを変更するために"/ target"を使用することに注意してください。

# Partitioning
# Old style using d-i command
#d-i partman-auto/disk string /dev/sda
#d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-auto/choose_recipe select atomic

# Newer ubiquity command
ubiquity partman-auto/disk string /dev/sda
ubiquity partman-auto/method string regular
ubiquity partman-lvm/device_remove_lvm boolean true
ubiquity partman-md/device_remove_md boolean true
ubiquity partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i mirror/country string US
d-i apt-setup/multiverse boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# Users
d-i passwd/user-fullname string User
d-i passwd/username string user
d-i passwd/user-password-crypted password yourEncryptedPasswd
d-i passwd/user-default-groups string adm audio cdrom dip lpadmin Sudo plugdev sambashare video
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password rootEncryptedPasswd
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands
ubiquity ubiquity/success_command string \
  sed -i -e 's/dns=dnsmasq/#dns=dnsmasq/' /target/etc/NetworkManager/NetworkManager.conf ;\
  cp -a /cdrom/scripts/ /target/root/ ;\
  cp -a /cdrom/salt/ /target/root/

説明のために残したこれらのことに注意してください。これらは、preseedコマンドでは異なる可能性があります。

  • ユーザー/ルートパスワードはあなたが追加する必要があります。 ここ は、暗号3パスワードを作成する3つの異なる方法を示すリンクです。
  • ユーザーが割り当てられているグループを変更できます。
  • Success_commandを必ず変更する必要があります。それをどのようにフォーマットし、/ target環境を使用するかを示すために残しました。

新しいISOを作成する

ISOを作成して、preseedファイルをテストできるようにします。使用する場合や独自に作成する場合は、これがテストされる必要があります_ _はプロセスが失敗する場所です。簡単なテスト用のスクリプトを作成しましたが、http://でホストされているpreseedファイルにpreseedファイルを指定して、そのようにすばやくテストすることができます。

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu16-desktop-unattended-install.iso /opt/ubuntuiso

出力名と保存先のディレクトリを自由に変更してください。

ISOを焼く

Virtualboxなどでテストし、それが機能したら、DVDに書き込むことをお勧めします。これで、動作する無人のUbuntu Desktop 16.04 LTSインストールDVDができました。

フィードバック、修正、エラー

私はこれをすべて一度に書きましたが、途中でエラー、タイプミス、または混乱したものがあるかもしれません。誰かがこれを試みた場合、プロセスでエラーが発生した場合はお知らせください。独自のpreseedファイルを作成する場合、ユビキタスはpreseedファイル内の特定のことを無視して実行することを好むため、無人インストールが壊れて動作しない理由におそらく答えられないことを覚えておいてください。これが誰かに役立つことを願っています。

19
Brandon Authier

ご覧ください: https://github.com/core-process/linux-unattended-installation

このプロジェクトは、Linuxの最小セットアップの無人インストールを作成するために必要なすべてを提供しますが、最小は、OpenSSHサービスとPythonを含む最も軽量なセットアップに変換されます。 Linuxディストリビューション。アイデアは、最小限のセットアップが完了したら、Ansibleまたは同様のツールを使用して、構成とサービスのすべての展開をさらに行うことです。

1
Niklas

Brandon Authierの素晴らしい仕事とあなたの投稿と指示、あなたは私を大いに助けてくれました。

ただし、この方法には1つの問題がありました。インストールが完了してPCが再起動すると、GRUBがハングすることがわかりました。

そこで、ks.preseedに次を追加しました。

# Due notably to potential USB sticks, the location of the MBR can not be
# determined safely in general, so this needs to be specified:

d-i grub-installer/bootdev  string /dev/sda

# To install to the first device (assuming it is not a USB stick):
#d-i grub-installer/bootdev  string default

これにより、USBスティックを削除しない場合にgrubインストールがクラッシュするのを防ぎます。これは https://www.debian.org/releases/stable/example-preseed.txt から取得しました

1
RomanuX

私の以前の方法が機能しなかったと聞いて申し訳ありません。幸いなことに、Rinck Sonnenbergが設計したスクリプト( netson )がGitHubでUbuntu Serverの無人AMD64 ISOを作成するスクリプトを見つけて、フォークしました。次に、I386 ISOを作成する機能を追加して、スクリプトを改善しました。また、OSをUbuntu ServerからUbuntu Desktopに変更しました。 GitHubリポジトリにアクセスする必要はありません。次の手順に従ってください。

次のコマンドを実行します。

$ wget https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh
$ chmod +x create-unattended-iso.sh
$ Sudo ./create-unattended-iso.sh

wgetが利用できない場合があります。この場合、curlを使用します。

$ curl -O https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh

これらのnoneが動作する場合は、ダウンロードしてホームフォルダーに移動します。

次に、インストールするUbuntuのバージョンを尋ねられます。次に、手動インストールを行う場合にUbuntuが尋ねる質問が表示されます。スクリプトは、Ubuntu ISOをダウンロードし、要求された変更を適用します。これで、無人インストールの準備が整ったISOができました!

これはあなたの質問に答えるはずです。なぜなら私にとってはうまくいったからです。また、この方法が以前の答えよりもはるかに簡単であることも良いことです。私たちと同じように機能することを願っています。

1
iplustech.net

この方法を試さないでください。動作しない(時間を殺そうとしない限り):

私はこれに対する答えをずっと見てきました。最も一般的なソリューションを紹介します。私は自分で試したことがないので、時代遅れかもしれません。手動でインストールするだけの方が簡単なので、私はそれのポイントを本当に理解していませんが、とにかく...

ルートとしてログインするか、$ Sudo su -を実行します

ISOをダウンロードしてマウントします。 Ubuntu Webサイトから手動でこれを実行しないでください。

# mkdir -p /mnt/iso
# mount -o loop ubuntu.iso /mnt/iso

関連ファイルをバックアップして移動します。

# mkdir -p /opt/ubuntuiso
# cp -rT /mnt/iso /opt/ubuntuiso

GUIの言語部分が表示されないようにする

# cd /opt/ubuntuiso
# echo en >isolinux/lang

「キックスタート」ファイルを追加します。

# apt install system-config-kickstart
# system-config-kickstart

[オプション]インストール用のパッケージを追加します

# vim /path/to/ks.cfg #[OPTIONAL]

または、ファイルで検索して直接編集します。 %packagesセクションを追加し、パッケージをその下に配置します。

%packages
# Add your packages below. Example:
@ ubuntu-server
Apache2
mysql-server
php7.0
php-pear
libapache2-mod-php7.0 
php7.0-mysql
php7.0-curl
php7.0-json
php7.0-cgi

私が言ったように、私はこれを自分でやったことがないので、上記のような設定があった場合、実際にはLAMPスタックをインストールしない可能性があり、後で手動で行う必要があります。

「preseed」ファイルで質問を抑制します。

# echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

ファイルをアクティブにします。

# vi isolinux/txt.cfg

次に検索:

label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --

次に、ks=cdrom:/ks.cfgpreseed/file=/cdrom/ks.preseedを追加する必要があります。単語quietvga=788を削除すると、次のようになります。

append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --

これで、新しい回答を作成できます。

# mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

そして、あなたはそこに行きます!

0
iplustech.net