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


13

この回答では、ISOマニフェストについて説明しています - 例はこちらです。

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

関連、sorta:

回答:


21

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

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

したがってpackage_name version、構文は、例:

 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.

カスタム -このディレクトリには、最終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スクリプトであり、ある時点で、ほぼ確実にそれらを調べたいと思うでしょう。

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

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

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

Ubuntu 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.ホーム-キャスパーシルはhome-rw、/ homeにaasというラベルの付いたパーティションまたはファイルを牛のオーバーレイとしてマウントします。

これは、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ブートスクリプトは、マウントを自動的に検出します。

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

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

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

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

Ubuntu WikiライブCDをゼロから作成

Ubuntu wikiはライブCDをカスタマイズします

グーグル

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

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

Debian Live

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

インストールする

sudo apt-get install live-build

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

sudo apt-get install live-magic

ライブマジック

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

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

Debian Live Manuel Ayeをご覧ください。長いので、一度に1つずつisoで作業してください。

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

長すぎる

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

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

私のカスタム12.04ビルドは、gma500をサポートしています。2dのみ(3dなし)ですぐに使用できます(今後数日でgma 500の観客がisoを公開する予定です)。

gma 500


1
ああ。これは素晴らしい答えです。私は今夜​​何をしているか知っています。
jrg

いいね これで40票が得られない場合、誰も得てはいけません;)
Rinzwind

興味のある方は、リスピンを利用可能にします。詳細とダウンロードについては、私のブログ(Ubuntu Planetにも掲載されています)をご覧ください。blog.bodhizazen.net/linux/ubuntu-gma500-live-cd
パンサー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.