web-dev-qa-db-ja.com

マニフェストからUbuntu ISOを構築できますか?

この答え ISOマニフェストについて話します- 例はこちら

マニフェストファイルからISOを構築することは可能ですか、それともマニフェストファイルはdpkg --get-selectionsだけをテキストファイルに入れますか?

関連、sorta:

13
jrg

Filesystem.manifestは次のコマンドで生成されます:

dpkg-query -W --showformat='${Package} ${Version}\n' > casper/filesystem.manifest

したがって、構文はpackage_name version、Exampleです。

 xserver-xorg-video-nouveau  1:0.0.16+git20110411+8378443-1

dpkg --get-selectionsの形式はわずかに異なり、package_name install

xserver-xorg-video-nouveau  install 

そのため、おそらく1つ以上の方法でファイルを使用できます。

apt-get install -y $(awk '{print $1}' filesystem.manifest)

正直に言うと、長年にわたっていくつかのカスタムisoを作成した後、その仕組みについて学習曲線があります。ひとたびいくつかのことを理解すれば、それほど難しくはありません。ただ単に必要な知識が適度に多く、最新の単一の情報源がないということです。

2つのビルドディレクトリを使用します

~/custom - build directory for the iso
~/rootfs - build directory for the root file system.

custom-このディレクトリには、最終ISOに移動するすべてのファイルが含まれます。ルートファイルシステム、カーネル、initramfs、およびisolinuxが含まれています。

rootfs-このディレクトリにはライブCDファイルシステムが含まれており、このディレクトリを圧縮して(mksquashfsを使用)、CDに含めます。これをdebootstrapでビルドする(ライブDを最初から作成する)か、ubuntu-desktop.isoからファイルシステムを抽出する(ライブCDをカスタマイズする)。詳細については、以下のubuntu wikiリンクをご覧ください。

キーポイント

1)mksquashfsを理解する-mksquashfsを使用して、ルートファイルシステムをcasper/filesystem.squashfsに圧縮します。

Sudo mksquashfs /home/bodhi/rootfs custom/casper/filesystem.squashfs

2)isolinuxを理解する-これにより、iso(およびCD(ブート)メニュー)がブート可能になります。 Arch Linux Wiki syslinux を参照してください。

Isolinuxの代替としてgrub2を使用できますが、grub2の動作を理解する必要があります;)。ほとんどのライブCDはまだisolinuxを使用しています。

3)initramfsの作り方。 initramfsは、ブートに使用される2番目のファイルシステムです。多くの場合、問題(カスタムブートイメージが機能せず、カーネルモジュールがロードされない)があり、ルートファイルシステムを見た理由がわからない場合、その答えはinitramfsにある可能性が非常に高いです。

#extract to a working_directory , I use ~/initrd
cd ~/initrd
lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

# Make your edits / adjustments
# Package
cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../custom.initrd.lz

次に、新しいinitrd.lzをカスタムビルドディレクトリcustom/casper/initrd.lzに移動します

4)キャスパー。キャスパーとキャスパースクリプトは3つの場所にあり、3つすべてが役割を果たすことができます。これらはすべてbashスクリプトであり、ある時点でほとんど間違いなくそれらを調べたいと思うでしょう。

A.ホスト-/usr/share/initramfs-tools/scripts/casper

B.ルートファイルシステム-custom/usr/share/initramfs-tools/scripts/casper

C. initramfs内-/ scriptsディレクトリを参照してください。

buntu man casper を参照してください

5)/usr/share/usr/share/gnome*のユーザーインターフェイス/アプリケーションをカスタマイズします。たとえば、リリースによって正確な場所は異なりますが、 /usr/share/gnome-background-properties/ubuntu-wallpapers.xmlはクラシックであり、バージョン間でかなり標準です。

6)/usr/share/でカスタマイズできない場合は、/etc/skelを使用します。ここでは/etc/skel/.bashrcはクラシックですが、そのファイルは〜/ .bashrcにコピーされます。 firefoxやgnomeなど、さまざまなconfgファイルをそこに置くことができますが、可能な場合は/ usr/shareの方が優れています(設定によって異なります)。

7)mkisofs-mkisofsを使用してビルドディレクトリをisoに変換します

cd ~/custom
Sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-12.04-custom.iso .

8)永続性。永続性は、ubuntu-desktop cdやカスタムcdを含む多くのライブCDで使用できます。これはcasperによって実装されます。

A. root-casperはcasper-rwとラベル付けされたパーティションまたはファイルを/に牛のオーバーレイとしてマウントします。その後、パッケージをインストールするか、構成ファイルを変更すると、変更は再起動後も保持されます。

これは控えめに使用してください。すべてのパッケージを更新すると、多くのスペースが必要になります。この方法は時々バグがあることもわかりました。

B.ホーム-casper sillはaas home-rwというラベルの付いたパーティションまたはファイルを/ homeに牛のオーバーレイとしてマウントします。

これは、Firefoxのブックマークとプライベートデータがブート後も保持され、信頼性が高いためです。

永続的ホーム(永続的/の場合はcasper-rwに変更)

# this is a 1 Gb file, increase or decrease the count to make it larger or smaller
dd if=/dev/zero of=home-rw bs=1M count=1000

# make a file system
mkfs.ext4 home-rw
mke2fs 1.41.14 (22-Dec-2010)
home-rw is not a block special device.
Proceed anyway? (y,n) y <-- ANSWER 'y' here

#tune the file system to remove reserved blocks and label it 'home-rw'
tune2fs -m 0 -L home-rw home-rw

home-rwを/(パーティションのルートディレクトリ内)またはフラッシュドライブ(サブディレクトリ内ではない)に配置します。

ライブCDを起動したら、 F6 キー、彼ら Esc、オプションpersistentをブートパラメーターの '-'の前に追加します

quiet splash persistent --

Casperブートスクリプトは、マウントを自動的に検出します。

buntu wiki Persistence を参照してください-ubuntu wikiページではcasper-rwについてのみ説明しましたが、home-rwはcasperスクリプトで参照され、同じように機能し、名前のみが変更されています。

スクリーンショットのウォークスルーについては、Ubuntuフォーラムの この投稿 を参照してください(ただし、オプションは異なります)。

C.いくつかのグラフィカルツール、たとえばunetbootinで永続性を有効にできます。グラフィカルツール(私の知る限り)はcasper-rwを使用します。

OK、今、あなたはすべてを理解したら、これらの2つのページはより意味を持ち始めます

buntu wikiライブCDをゼロから

buntu wikiカスタマイズライブCD

グーグル

グーグルにする必要があります。インターネット上でアドバイスの断片を見つけるでしょう。

例: ライブCDスプラッシュ画面の変更方法

Debian Live

すべてを理解したら、 Debian Live スクリプトを使用してください。名前にだまされてはいけません。これらのスクリプトは、MintやUbuntuを含むすべての.debシステムで正常に動作します。

インストールする

Sudo apt-get install live-build

グラフィカルインターフェイスがあります

Sudo apt-get install live-magic

live-magic

Remastersysやその他のGUIが失敗するのと同様に、ライブマジックGUIが失敗する可能性があることを理解してください。その場合、live-buildスクリプトにフォールバックします(live-magicはビルドディレクトリを生成します)。

ライブビルドスクリプトとディレクトリレイアウト/構造を学習するには時間がかかります

Debian Live Manuel を参照してください。そうです、それは長く、一度に1つのisoだけを処理します。

ライブビルドスクリプトの利点は、ライブCDのコンポーネントを理解すると、スクリプトはビルドの90%以上を自動化し、変更を加えることは、構成ファイル(通常)を簡単に編集するか、initramfsをビルドすることです。

長すぎる

それが長すぎる場合は、深呼吸をしてリラックスし、情報を一度に1つずつ調べます。私はそれが何らかの意味を成し始め、あなたがその時間に十分価値があることに気付くことを約束します。

別のツールセットから開始する場合は、このツールセットに戻ってください。いくつかのisoの後、この一連の指示に感謝します;)

私のカスタム12.04ビルドは、gma500、2dのみ(3dなし)をそのままサポートします(今後数日でgma 500群衆がisoを公開する予定です)。

gma 500

21
Panther