
ご存じのように、
Ubuntu Linuxは、ほとんどのオフィスワーカーの作業に必要なツールの完全なセットでした。 含まれていないものは、たとえば
FreeRDPとRemminaを使用して、サーバーから再インストールまたは実行できます。 その結果、コストが削減され、顧客管理が大幅に簡素化されます。 多くの企業はすでに、フリートをシンクライアントと、Linuxを備えた本格的なコンピューターに徐々に置き換え始めています。 また、いくつかの部門をUbuntuに移行したい場合は、時間を節約できるかもしれません。
この記事では、
Ubuntu (および
Ubuntu Severを含むその修正)または
Debianに基づいて、事前に構成され、自動的にインストールされるシステムを作成する方法を説明します。 以下で説明するかなり単純な資料を理解したら、必要なアプリケーションと設定を使用して独自のUbuntuアセンブリを作成できます。これは、ディスクとネットワークの両方で完全自動モードでインストールできます。 その結果、必要に応じて、コンピューターの電源を入れてお茶を飲むだけで十分であることを達成できます。そのため、戻ってくると、インストールして完全にカスタマイズされたシステムと作業に必要なすべてのソフトウェアが表示されます。

最初に、この記事にはUbuntu固有の事項がいくつか含まれていますが、
Debain Installerのインストールに使用できるディストリビューションについては、一般的なポイントが当てはまります。 また、ネットワーク経由でコンピューターの読み込みを構成する方法については説明しません(これには
TFTPサーバーが必要で、通常2分で展開できます)。ディスクからの起動に焦点を当てます。 ただし、最後に、説明したすべての方法を使用してコンピューターのネットワークを開始する方法を説明します。
そのため、最初に
Debain Installerを使用してシステムの初期イメージを取得する必要があります。
Ubuntu Desktop LiveCDは別のインストーラーを使用するため、動作しません。 UbuntuファミリーのLiveCD以外のディスクは、非常に静かに使用できます。 以降のすべての手順は
Ubuntu Alternate向けに書かれていますが、システムの他のバージョンでは少なくとも多少異なることはほとんどありません。
isoを使用する
目的のisoイメージをダウンロードしたら、それを解凍する必要があります。 このためにこのスクリプトを使用します。
実行後、イメージのコンテンツ全体が
isoディレクトリに格納されます。 その後、必要な変更を加えて、イメージを圧縮して戻すことができます。 すぐにパッキングスクリプトを提供します。
組み込みのディスク整合性チェックを機能させるには、すべてのファイルのMD5合計を再計算する必要があります。
インストールプロセスの自動化
ここで、インストールプロセスを自動化する必要があります。
isolinuxブートローダーは、ディスクからインストーラーを起動するために使用され、このセクションではその構成に専念します。 記事の最後で、ネットワーク経由でダウンロードする機能について説明します。
それまでの間、順番に行きましょう。 まず、Ubuntu CDからコンピューターを起動すると、言語を選択するように求められます。 このリクエストが表示されないようにするには、
isolinux /フォルダーに
langという名前のファイルを作成する必要があります。このファイルの内容全体が、目的の言語のアルファベットコードを表します。 たとえば、私は
langファイルでロシア語を選択しました:
ru
利用可能なすべての言語オプションは、
isolinux / langlistファイルにあります 。
次に、しばらくしてからブートローダーが自動的に目的のメニュー項目を選択する必要があります。 私たちの場合、このアイテムは自動インストールになります。 デフォルトでは、Ubuntuはユーザーの選択を待機し、アクションを実行しません。 この動作を変更するには、
isolinux / isolinux.cfgファイルの
タイムアウトパラメーターの値をゼロ以外の値に変更する必要があります。 時間はそれぞれ10分の1秒単位で測定され、2秒のタイムアウトを設定するには、このファイルに次のレコードが含まれている必要があります。
timeout 20
デフォルトで起動されるメニュー項目を選択するだけです。 すべてのメニュー項目は
isolinux / text.cfgファイルで設定されてい
ますが 、ここで変更します。 自動インストールの場合、「OEM Install」という独自のメニュー項目を作成して、通常のインストールオプションを引き続き使用できるようにします。 インストールプロセス自体は、ディスク上の対応するディレクトリにあるいわゆる
preseedファイルによって制御されることをすぐに言わなければなりません。 それらについては、しばらくしてから、標準メニュー項目の説明をコピーし、その名前とそのpreseedファイルの名前を変更し、デフォルトで実行することもできます。 ここに私が終わったものがあります:
default oem label oem menu label ^OEM install kernel /install/vmlinuz append file=/cdrom/preseed/oem.seed initrd=/install/initrd.gz quiet --
これで準備フェーズが終了しますが、今は
preseedテクノロジーに直接対処する必要があります。
種子
Preseedテクノロジーを使用すると、インストール中に尋ねられる質問への回答を事前に指定できるため、手動で回答する必要がなくなります。 これにより、必要なすべての設定を備えた完全自動スクリプトを作成できます。
もう少し掘り下げると、
Debian Installerは
debconfシステムを使用してインストールプロセスを制御し、
preseedテクノロジーは必要な答えを
debconfデータベースに事前に追加するだけであることがわかります。 したがって、
preseedを使用
すると 、インストーラーだけでなく、
debconfを使用する他のアプリケーションも構成できますが、この機能は役に立たない可能性があります。
各
preseedステートメント
は、通常 、所有者、パラメーター名、パラメーターのタイプと値の4つの部分で構成されます。 パーツ間には
正確に1つのスペースが必要です。 インストーラーの名前は
diで 、ほとんどの指示の最初のフィールドに表示されるのはこの値です。
preseedステートメントを指定するには、次の3つの方法があります。
- カーネル起動オプションを通じて。
- ネットワーク経由でダウンロードされた指示を含むファイルを指定する。
- 手順付きのローカルファイルを使用。
最初の2つの方法は汎用であり、どのブートにも適していますが、3番目の方法は
isolinuxを使用してディスクからインストールする場合にのみ機能し
ます 。
もう1つの重要な違いがあります:カーネルパラメーターを介して送信される指示は、インストーラーの起動前にデータベースに追加され、言語および地域オプションを設定した後のローカルファイルからの指示、およびネットワークのセットアップ後のネットワークファイルからの指示です したがって、完全自動インストーラーを作成するには、いずれの場合でも、カーネルのパラメーターを指定する必要があります。 それらから始めましょう。
isolinux / text.cfgファイルを
少し変更して、OEMインストール項目にいくつかのブートオプションを追加する必要があります。 結果は次のようになります。
default oem label oem menu label ^OEM install kernel /install/vmlinuz append file=/cdrom/preseed/oem.seed debian-installer/locale=ru_RU.UTF-8 console-setup/layoutcode=ru localechooser/translation/warn-light=true localechooser/translation/warn-severe=true console-setup/toggle=Alt+Shift initrd=/install/initrd.gz quiet --
一般に、これらのパラメーターが何であり、ここで何を変更できるかは明らかです。 今残っているのは、
preseedの指示を含むメインファイルを作成することです。おそらく既に推測されているように、私の場合は
preseed / oem.seedと呼ばれます。 ファイル名をインストーラーに転送するために
fileパラメーターが使用されていることにすぐに注意し
ます 。 このオプションは
isolinuxを使用してディスクから起動する場合にのみ機能し、その中の
/ cdromパスを使用してディスクの内容を参照できます。
以下に、私のpreseedファイルのコメント付きコンテンツを示します。
一般的に、オプションの名前によって、オプションの責任を理解できますが、いくつかの興味深い点についてはまだコメントします。
最初に、自動インストール用のスクリプトを記述するために、手動モードでのインストール、特にどの質問、いつ、どのような場合に回答する必要があるかを明確に想像する必要があることに留意してください。
preseedを使用すると、手動モードとまったく同じ方法でシステムを配置できます。 唯一の制限は、自動モードではコンピューターの既存のパーティションにインストールできないことです。 私のシナリオでは、最も単純なアプローチを使用してスペースを割り当てます。つまり、システムの最初のハードディスク全体をクリーニングして自動的にマークアップします。
さらに、自動インストールでは、手動モードでは利用できない多くの機能を使用できます。 たとえば、rootのパスワードを設定してシステムの非特権ユーザーを作成することもできますし、デフォルトの動作を使用して最初のユーザーを管理者にして、
sudoを介してシステム設定にアクセスすることもできます。
前者の場合、
passwd / root-loginパラメーターを
trueに設定し、rootのパスワードを指定する必要があります。
後者の場合、このパラメーターを
preseedファイルに追加しないでください。 ちなみに、パスワードは明示的に(非常に推奨されません)、および
/ etc / shadowファイルのハッシュと同様のハッシュとして指定できます。 2番目のケースでは、実行中のシステムのユーザーに必要なパスワードを設定し、そのパスワードのハッシュ値を
/ etc / shadowファイルから
preseedファイルにコピーできます。 私のファイルで使用されるハッシュは、
Passw0rdパスワードに対応して
います。
有用な
preseedオプションのほとんどは、
Ubuntuの
公式ドキュメントに記載されて
います 。 ところで、注意してください:いくつかの項目の1つを選択する必要がある質問に
preseedスクリプトで回答を示すには、目的の項目のテキストを英語で書くだけです(実際、開始することはできますが、英語ではできません。でも)。 したがって、目的のオプションの名前がわかっている場合は、システムを手動モードにして、このオプションに必要な値のテキストを書き込み、その自動構成を
preseedファイルに追加できます。 たとえば、私のシナリオでは、パラメータ
netcfg / dhcp_optionsに値が設定されています。
この値は、ネットワークを自動的に構成できない場合のアクションを担当します。
ドキュメントに必要なオプションが見つからなかった場合は、システムを手動でインストールし、インストール後すぐに新しいシステムで次の2つのコマンドを実行できます。
sudo apt-get install debconf-utils sudo debconf-get-selections --installer > seedlog.txt
その結果、
seedlog.txtファイルには、インストール中に使用された
debconfデータベースのすべての値が含まれます。 その中で、必要なパラメーターを見つけることはかなり可能です。
インストールプロセスを自動化する方法がわかったようですが、インストールされたシステム自体をどのように構成できるかについて少し説明しました。
システムのセットアップ
最初に、基本システムの上にインストールするパッケージのセットをインストーラーに伝えるために、
taskselタスクが
使用されることに注意してください。 上記のシナリオでは、
ubuntu-desktopジョブ、つまり Ubuntuのベースデスクトップシステム。 次の記事では、インストール済みパッケージのリストを変更し、
taskselタスクを管理する方法について説明します。 それまでの間、私たちは基本的なUbuntuに非常に満足しており、私たちがする必要があるのは私たちのニーズに合わせて設定することだけだと仮定しています。 ところで、Ubuntuのさまざまなバリエーションの代替ディスクには、1つの特定の
taskelタスクのみのパッケージのセットが含まれています。 つまり、たとえば、Xubuntu代替ディスクには、
xubuntu-desktopタスクをインストールするためのパッケージのみがあります。したがって、CDの
preseed /ディレクトリにある標準ファイルから
preseedスクリプトのタスク名をコピーして、変更しないでください。
しかし、インストールされたシステムを構成する方法は? これらの目的のために、
preseedはシステムのインストール完了後に任意のコマンドを実行する機能を提供します。 このコマンドは
preseed / late_commandパラメータで指定され、すべての基本的なユーティリティへの呼び出しが含まれる場合があります。 この場合、2つの特別なディレクトリが利用可能です:
/ cdromは 、ご
想像のとおり、インストールディスクの内容を参照し、
/ targetは 、ハードディスクに既にインストールされているシステムのルートを参照します。
インストールされたシステム内の何かを変更するには、簡単なトリックを使用できます
。chrootを使用してこのシステムに入り、事前に準備されたスクリプトを実行します。
chrootを介して入力する場合、サービスは開始されないことに注意してください。 したがって、たとえば、インストールプロセス中にMySQLサーバーへのアクセスを必要とするパッケージをこの方法でインストールしないでください。
私のスクリプトには次のコマンドが含まれています。
mkdir /target/install/; cp -R /cdrom/extra/* /target/install/; chroot /target chmod +x /install/postinstall.sh; chroot /target bash /install/postinstall.sh
ご覧のとおり、
インストールされたシステムのルートに
install /ディレクトリを作成し、
extra /フォルダーの内容全体をディスクからコピーして、
chrootを使用して新しいシステムにログインした後、
postinstall.shスクリプトを実行します。
postinstall.shスクリプトには、必要なものをすべて含めることができますが、上記の制限があります。 例:
合計で、ディスクから無人インストール用のスクリプトを作成し、インストールされたシステムを構成する方法を学びました。 ほとんどの場合、これは企業のニーズに合わせて独自のディストリビューションを作成するには十分です。 次の記事では、標準の
taskselタスクを変更して必要なものだけをインストールする方法と、システムに追加のパッケージを正しく追加する方法を説明します。
pxelinuxを使用したネットワークインストール
上記の手順はすべて、
pxelinuxブートローダーを使用してネットワーク経由でインストールを整理するためにも使用できます。 ただし、いくつかの重要な違いがあります。
- 言語とキーボードのパラメーターに加えて、preseedネットワーク構成オプションも明示的なカーネルパラメーターとして渡す必要があります。
- カーネルオプションでfileパラメーターを使用してpreseedファイルをロードすることはできません。代わりにurlパラメーターを使用する必要があります。 さらに、DHCPを介してファイル名を取得できます。詳細については、公式ドキュメントを参照してください。
- preseedパラメータ、特にpreseed / late_commandで / cdromディレクトリを使用することはできません。 したがって、構成スクリプトとそれに必要なすべてのデータもネットワーク経由でダウンロードする必要があります。
それ以外の場合、すべては上記とまったく同じになります。 幸いなことに、
pxelinuxは
isolinuxの兄弟であり、ディスクからではなくネットワーク経由で起動するように設計されています。
PSすべてがメモリから書き込まれた、多分私は何かを言及するのを忘れて、十分にはっきりしない何かを説明した。 したがって、追加やコメントを強くお勧めします。
PPS CDのリポジトリを変更し、ニーズに合わせてtaskelタスクを変更することに関する2番目の記事があります。