[注] 关于debootstrap的用法
首先从debian9的安装过程日志中提取debootstrap的日志,
# grep \'debootstrap\' /var/log/syslog
如图:-
可以看到,其中使用的debootstrap命令为
# debootstrap --components=main --debian-installer --resolve-deps --no-check-gpg stretch /target file:///cdrom/
–components=main (从main部件中下载deb包)
–debian-installer (设置为debian-installer模式)
–resolve-deps (解决依赖)
–no-check-gpg (不检查gpg签名)
stretch (SUIT名, 这里debian9对应stretch)
/target (目标目录, 在debian安装环境下, 这个目录就是即将安装在硬盘上的debian系统挂载上来的)
file:///cdrom/ (光盘挂载目录, 用作光盘源) -
随后debootstrap开始往这个/target目录下安装各种基础包,构建基础系统
其实用不用debootstrap可以根据系统镜像是否已经包含一个基础系统镜像来取舍
-
如果需求制作一个initramfs.img(或者是initrd.gz)初始化内存镜像时,也可以利用debootstrap来生成一个linux文件系统。然后利用cpio等文件系统打包工具以及gzip等压缩工具来制作初始化内存镜像:
例如:
find . |cpio -oH newc |gzip -9 > ../initrd.gz
- cpio的-o选项表示打包,-H newc表示指定格式为newc
- gzip -9表示压缩比最大化
-
又如果需求制作一个操作系统镜像.iso文件,可以用mkisofs命令(注意redhat/centos 和debian/ubuntu应该不一样):
例如:
# mkisofs -r -T -J -V "demo-tag" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -x lost+found -o /opt/iso/demo.iso .
- -r表示 生成 ISO-9660文件系统的目录信息(貌似就是在每个镜像根目录下生成一个TRANS.TBL文件,里面记录了当前目录的所有文件和目录名,类型等信息)
- -T表示 为不能识别长文件名的系统生成翻译表(应该就是把所有文件名映射到长度适中的名称表以方便识别)
- -J表示 生成一种叫Joliet的目录信息表(emm… Joliet好像是iso 9660规格的一种扩展,应该也是在多种平台上支持长文件名用的)
- -V 设置卷名“demo-tag”
- -b 设置isolinux启动引导程序,即将该iso设置为可引导的镜像
- -no-emul-boot 好像是一种比较古老的引导方式
- -boot-load-size 引导扇区数
- -boot-info-table 为启动镜像创建信息表,好像是校验启动镜像的
- -x 过滤lost+found文件/目录
- -o 输出
- [附]
debootstrap is used to create a Debian base system from scratch, without requiring the availability of dpkg or apt. It does this by downloading .deb files from a mirror site, and carefully unpacking them into a directory which can eventually be chrooted into.
(就是说debootstrap一开始只是从软件仓库下载必要包, 然后小心解压到目标目录直到最终可以进行chroot. 所以一开始是不需要apt\apt-get\aptitude的, 只要wget即可)