web-dev-qa-db-ja.com

完全にオフラインでインストールするためのカスタムUbuntu ISOを作成するにはどうすればよいですか?

私はインドに拠点を置いており、どこにも信頼できるインターネットがありません。次の機能を備えたUbuntuインストーラーISOを構築したいと思います。

  • すべてのプロプライエタリドライバーはオフラインで利用できるはずです
  • 少なくとも1つの完全な言語パック(たとえば、英語/米国)をオフラインで利用できるようにする必要があります
  • 特定の追加パッケージ
  • 最後に、インストール中にWebからデータをダウンロードするflashinstallerやChromeなども機能するはずです。

このようなものを構築するにはどうすればよいですか? -

4
curiousboy

テスト:UbuntuデスクトップCDをカスタマイズする必要なツールをインストールする

Sudo su

apt-get install squashfs-tools genisoimage

http://releases.ubuntu.com/ から公式のデスクトップCDをダウンロードします。空のディレクトリにコピーします。

mkdir ~/livecdtmp

mv ubuntu-14.04.1-desktop-i386.iso ~/livecdtmp

cd ~/livecdtmp

デスクトップ.isoをマウントする

Sudo su

mkdir mnt

mount -o loop ubuntu-14.04.1-desktop-i386.iso mnt

.isoコンテンツをdir 'extract-cd'に抽出します

Sudo su

mkdir extract-cd

rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

デスクトップシステムとSquashFSファイルシステムを抽出する

Sudo su

unsquashfs mnt/casper/filesystem.squashfs

mv squashfs-root edit

準備とchroot

Sudo su

cp /etc/resolv.conf edit/etc/

cp /etc/hosts edit/etc/

mount --bind /dev/ edit/dev

chroot edit

mount -t proc none /proc

mount -t sysfs none /sys

mount -t devpts none /dev/pts

export HOME=/root

export LC_ALL=C

カスタマイズパッケージをインストールまたはアップグレードする前に、実行する必要があります

dbus-uuidgen > /var/lib/dbus/machine-id

dpkg-divert --local --rename --add /sbin/initctl

ln -s /bin/true /sbin/initctl

パッケージの削除、インストール、アップグレード。

カーネル、initスクリプトを変更した、または新しいカーネルモジュールを追加した場合は、initrd.lzファイルを再構築し、それをcasperディレクトリに置き換える必要があります。

Sudo su

chroot edit mkinitramfs -o /initrd.gz 3.13.0-25-generic

(カーネルバージョンをCDでブートするバージョンに置き換えます-これはedit/lib/modulesにあります)

Chroot jailを終了し、このファイルをextract-cd/casperに移動します。

exit

mv edit/initrd.lz extract-cd/casper/

不要になった一時ファイルを削除します。

apt-get clean
Or
rm -rf /tmp/* ~/.bash_history

ソフトウェアをインストールした場合は、必ず実行してください

rm /var/lib/dbus/machine-id
&
rm /sbin/initctl

dpkg-divert --rename --remove /sbin/initctl

特別なファイルシステムをアンマウントし、chrootを終了します

umount /proc || umount -lf /proc

umount /sys

umount /dev/pts

exit

Sudo su 

umount edit/dev

CDイメージの作成とファイルシステムの圧縮

Sudo su

chmod +w extract-cd/casper/filesystem.manifest

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

cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop

sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop

sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop

rm extract-cd/casper/filesystem.squashfs

mksquashfs edit extract-cd/casper/filesystem.squashfs -comp xz -e edit/boot

printf $(Sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size

nano extract-cd/README.diskdefines

cd extract-cd

rm md5sum.txt

find -type f -print0 | Sudo xargs -0 md5sum | grep -v isolinux/boot.cat | Sudo tee md5sum.txt

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-14.04.1-desktop-i386-custom.iso .

イメージをCDに書き込む

cdrecord dev=/dev/cdrom ubuntu-14.04.1-desktop-i386-custom.iso
9
kyodake