我住在印度,我们并不是到处都有可靠的互联网。我想构建具有以下功能的 Ubuntu 安装程序 ISO:
- 所有专有驱动程序都应可离线使用
- 至少有一个完整的语言包(例如英语/美国)应可离线使用
- 某些额外套餐
- 最后,像 flashinstaller 或 Chrome 这样在安装时从网络下载数据的东西也应该可以工作。
我该如何构建这样的东西? -
答案1
测试一下:自定义 Ubuntu 桌面 CD 安装所需的工具
sudo su
apt-get install squashfs-tools genisoimage
从以下网址下载官方桌面 CDhttp://releases.ubuntu.com/ 将其复制到空目录中
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 内容提取到目录“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