web-dev-qa-db-ja.com

Ubuntuインストーラーのカスタマイズの詳細ガイド

preseeding および customization のガイドを読んでみましたが、どのオプションをどのように変更するかを理解できませんでした。私はこの質問をする実際的な例を通して楽に学ぶことができます。

いくつかの特定のタスクを実行するためのpreseedおよびカスタマイズソリューションを検討しています。

  • 最小限のインストールと--no-install-recommendsフラグのapt-getのように、デフォルトでインストールされたパッケージを完全に書き換えます。
  • いくつかの専用アプリケーションをデフォルトのインストールリストに追加する
  • インストールおよびライブセッションで独自のドライバーを自動的にインストールしてマウントする
  • デフォルトでインストールされるアプリケーションのデフォルト構成ファイルを編集します
  • 許可とともにパーティションを指定する
  • できればapt-getおよびaptitudeと同様のコマンドラインツールを使用して、インストーラーメディア(CD/DVD/USB)のパッケージプールを変更します。

誰でも上記を行うためだけにpreseedオプションを設定する方法を教えてもらえますか?

NBプールでパッケージを追加/削除した後、GPGパーツがわかりません。

PS3番目のポイントは特に重要です。

9
Oxwivi

リファレンスpreseedについては、次のサンプルpreseedを含むinstallation-guide-i386を参照できます。

  /usr/share/doc/installation-guide-i386/example-preseed.txt.gz
  • 最小インストールのように、デフォルトでインストールされるパッケージを完全に書き換えます
  • いくつかの専用アプリケーションをデフォルトのインストールリストに追加する

インストールするパッケージのリストを提供するには、次の行を探してください。

  tasksel tasksel/first   multiselect ubuntu-desktop

「ubuntu-desktop」は、任意の数のパッケージまたはメタパッケージに対して変更できます。

  • インストールおよびライブセッションで独自のドライバーを自動的にインストールしてマウントする

必要なパッケージ(専用ドライバー用)を指定すること以外、これがどのように達成されるかはわかりません。サイドノートとして、パーティションを「マウント」し、カーネルモジュール/ドライバーを「ロード」します。

  • デフォルトでインストールされるアプリケーションのデフォルト構成ファイルを編集します

このようなスクリプト化された変更を行うには、おそらく次の点を検討する必要があります。

  d-i preseed/late_command string ...

「...」は、たとえばsed -iなどの任意のコマンドに置き換えることができます。

  • 許可とともにパーティションを指定する

上記のpreseedの例にはパーティションセクションがあります。

種子とユビキタス

キャスパーはpreseedをサポートしており、ユビキタスはpreseedされた多くの値を持つことができます。ユビキタスに関連して事前シードできる変数の一部を次に示します。

ubiquity countrychooser/shortlist select US
ubiquity languagechooser/language-name select English
ubiquity localechooser/supported-locales multiselect en_US.UTF-8
ubiquity ubiquity/summary note
ubiquity ubiquity/reboot boolean true
ubiquity ubiquity/poweroff boolean true
ubiquity ubiquity/success_command string ...

「...」には上記のlate_commandと同じものが含まれますが、success_commandはubiquityによって読み取られ、late_commandはd-iによって読み取られます。

5
komputes

以下は、変更されたブートイメージを作成します。 CDに書き込むか、VMにISOを挿入してテストします。 cpiogenisoimage(パッケージと実行可能ファイルの名前)が必要です。

以下はMakefileの形式ですが、インタラクティブに入力できます。 ${IN_ISO}は元のISOイメージ(-alternativeバージョンを使用し、同じことをお勧めします)、${OUT_ISO}は目的のISO名を指します。

# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
    mkdir -p mount
    Sudo mount -o loop ${IN_ISO} mount
    mkdir cdroot
    cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
    Sudo umount mount && rm -r mount
    chmod -R a+rw cdroot

# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
    cp isolinux.cfg cdroot/isolinux/isolinux.cfg
    test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
    mkdir -p initrd
    cd initrd && gunzip <../initrd.orig.gz | Sudo cpio -i && cd ..
    cp preseed.cfg initrd/preseed.cfg
    cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
    Sudo rm -rf initrd

# Create the ISO image. Make sure to use extensions for lower-case filenames    
iso: cdroot prepare
    genisoimage -o ${OUT_ISO} \
        -force-rr -J \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        cdroot

いくつかの追加ファイルが必要です。

isolinux.cfgはブートローダーを設定します。起動するだけで、自動的にインストールプロセスが実行されます。次のようになります。

default install
label install
  menu label ^Install my custom Ubuntu
  kernel /install/vmlinuz
  append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
Prompt 1
timeout 20

インストールを実際に構成する前に必要な準備はこれですべてです。 preseedの例をダウンロード にpreseed.cfgという名前を付けます。それを調べて、好きなものを編集します。重要なオプションは次のとおりです。

# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern

# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/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

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true

# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard

#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.

ただし、上記の例をサンプルとして使用することはお勧めしませんが、Ubuntuのサンプルをダウンロードし、late_commandを使用してニーズに合わせて構成します。インストールと構成を行うスクリプトのダウンロードと実行など、カスタムソフトウェア。たとえば、これをlate_commandとして使用します。

d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'

または、上記のinitrdにinstall.shを配置して直接実行することもできます。その内容は次のようになります。

#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh

独自のドライバーインストールルーチンがどのように機能するかに大きく依存します。

2
phihag