想要 ubuntu 系统装好就拥有自己想要的软件、环境?
试试 ubuntu 定制 ISO
步骤
- 准备工作
- 解压 ISO
- 解压 filesystem.squashfs 文件
- 切换至新系统
- 自定义
- 重新压缩新的根文件系统
- 制作新 ISO
1. 准备工作
- 切换至 root 账户
su - root
-
安装 squashfs-tools 和 genisoimage
apt-get install -y squashfs-tools genisoimage
-
下好需要安装的软件(能 yum 的就不用下了)
2. 解压 ISO
root@chocolee-ubuntu:~# pwd
/root
root@chocolee-ubuntu:~# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
root@chocolee-ubuntu:~# cp -v -a /mnt/ newiso
root@chocolee-ubuntu:~/newiso# ls -a
. boot .disk EFI isolinux pics preseed ubuntu
.. casper dists install md5sum.txt pool README.diskdefines
特别注意:复制完成后,看看 .disk
目录有没有拷贝成功,这个隐藏目录必须存在。
3. 解压 filesystem.squashfs 文件
root@chocolee-ubuntu:~/newiso# unsquashfs casper/filesystem.squashfs
Parallel unsquashfs: Using 3 processors
188525 inodes (204212 blocks) to write
[====================================================-] 204212/204212 100%
created 124061 files
created 17766 directories
created 64357 symlinks
created 79 devices
created 0 fifos
## 将解压出来的 quashfs-root 目录放到上一层
root@chocolee-ubuntu:~/newiso# mv squashfs-root ../
root@chocolee-ubuntu:~/newiso# cd ..
root@chocolee-ubuntu:~# pwd
/root
ps. 此时可将本系统的一些配置文件,如:sources.list、resolv.conf 等移至 quashfs-root 中的对应目录中
4. 切换至新系统
chroot squashfs-root/
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
5. 自定义
此时可以在切换到的系统中编译、apt-get安装各种文件,配置环境等
配置完成后退出
exit
pwd
/root
6. 重新压缩新的根文件系统
chmod +w newiso/casper/filesystem.manifest
chroot squashfs-root dpkg-query -W --showformat='${Package} ${Version}\n' > newiso/casper/filesystem.manifest
cp newiso/casper/filesystem.manifest newiso/casper/filesystem.manifest-desktop
sed -i '/ubiquity/d' newiso/casper/filesystem.manifest-desktop
sed -i '/casper/d' newiso/casper/filesystem.manifest-desktop
rm newiso/casper/filesystem.squashfs
mksquashfs squashfs-root newiso/casper/filesystem.squashfs
printf $(sudo du -sx --block-size=1 squashfs-root | cut -f1) > newiso/casper/filesystem.size
(注:最好用cat newiso/casper/filesystem.size查看一下大小)
cd newiso
rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
7. 制作新 ISO
mkisofs -D -r -V "My ubuntu-14.04.1" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-16.04-desktop-customed.iso .
网友评论