Ubuntu 镜像打包
下载对应版本的iso镜像(本文为lubuntu-18.04.1-desktop-amd64.iso),并且确认是否安装根文件系统解压缩及打包工具,没有则通过命令安装:
(sudo) apt-get install squashfs-tools genisoimage
1、 解压iso镜像文件
(sudo) mkdir oldiso
(sudo) mount -o loop lubuntu-18.04.1-desktop-amd64.iso oldiso
(sudo) cp -rp oldiso newiso
(sudo) umount oldiso
2、 解压filesystem.squashfs文件
(sudo) unsquashfs newiso/casper/filesystem.squashfs
解压出来会生成squashfs-root目录,目录之下就是一个完整的系统文件结构
(sudo) mv squashfs-root iso
更改文件名,可有可无,只是为了后面敲的时候少敲一点
3、 连接网络(如果在chroot中需要网络的话)
(sudo) cp /etc/resolv.conf iso/etc/
(sudo) mount -o bind /run/ iso/run /
(sudo) cp /etc/hosts iso/etc/
4、 设备的挂载exp
(sudo) mount --bind /dev/ iso/dev
(sudo) chroot iso
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
此处需要注意一点,在iso镜像文件制作完成之后。如果需要删除iso文件,在删除之前需要解除这些挂载。不然的话会影响主机系统的正常使用,直到重启主机。
5、 参数设置
export HOME=/root
export LC_ALL=C
6、 更新软件源(可选)
Ubuntu系统的软件源文件为/etc/apt/source.list
mv /etc/apt/source.list /etc/apt/source.list_bak
vi /etc/apt/source.list
apt-get update
7、 安装需要软件
apt-get install xxx
本次软件安装如下:
apt-get install python-pyqt5
apt-get install net-toolsapt apt-
apt-get install openssh-server
apt-get install virt-manager
apt-get install qemu-kvm libvirt-bin bridge-utils
手动安装方法:
1.在主机系统之中,复制软件包:
(sudo) cp xxx iso/var
- 进入iso系统
(sudo) chroot iso
- 进入var,安装软件
cd /var
Xxxxxxxxx
8、 根据需要修改系统配置(根据需要修改,以下修改只针对于虚拟机透传)
在此次的iso制作之中的修改如下:
vi /etc/modules
在文件之后添加以下三行:
vfio-pci
vfio
vfio_iommu_type1
vi /etc/modprobe.d/kvm.conf
添加:
options kvm ignore_msrs=1
options kvm allow_unsafe_assigned_interrupts=1
options kvm_intel emulate_invalid_guest_state=0
options vfio_iommu_type1 allow_unsafe_interrupts=1
注意,在iso安装时动态生成的文本,这样的修改是不生效的。在系统安装的时候,文本将会直接被覆盖(如/boot/grub/grub.cfg)。
10、卸载无用软件
可以使用dpkg命令查看,搜索已安装软件,使用autoremove命令卸载无用软件。
dpkg -l
dpkg-query -W --showformat='${Installed-Size} ${Package} ' | sort -nr | less
apt-get autoremove xxx
为了系统的精简,可以将系统中无用软件一一删除。
apt-get autoremove galculator abiword gnumeric xpad fcitx leafpad firefox sylpheed mtpaint simple-scan audacious guvcview xfburn system-config-printer
11、清除安装包以及临时文件
apt-get clean
apt-get autoremove
rm -rf /tmp/* ~/.bash_history
rm /etc/resolv.conf
rm /etc/hosts
cd /var
rm xxx
12、删除挂载
umount /proc
umount /sys
umount /dev/pts
exit
(sudo) umount iso/dev
(sudo) umount iso/run
在umount /proc命令失败的情况之下,使用umount -lf /proc
13、iso打包
1)重新生成manifest及manifest-desktop文件:
(sudo) chmod +w newiso/casper/filesystem.manifest
(sudo) chroot iso dpkg-query -W --showformat='${Package} ${Version} ' > newiso/casper/filesystem.manifest
(sudo) cp newiso/casper/filesystem.manifest newiso/casper/filesystem.manifest-desktop
(sudo) sed -i '/ubiquity/d' newiso/casper/filesystem.manifest-desktop
(sudo) sed -i '/casper/d' newiso/casper/filesystem.manifest-desktop
2)压缩文件系统:
(sudo) rm newiso/casper/filesystem.squashfs
(sudo) mksquashfs iso newiso/casper/filesystem.squashfs
(sudo) printf $(du -sx --block-size=1 iso | cut -f1) >newiso/casper/filesystem.size
3)删除旧的md5sum.txt文件并计算新的md5码
(sudo) cd newiso
(sudo) rm md5sum.txt
find -type f -print0 | (sudo) xargs -0 md5sum | grep -v isolinux/boot.cat | (sudo) tee md5sum.txt
4)创建ISO
(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 ../my_lubuntu18.04.1-desktop-amd64.iso .