关于debootstrap在Debian/Ubuntu系统安装过程中的作用及其他

时间:2024-03-19 18:43:27

[注] 关于debootstrap的用法


  • 首先从debian9的安装过程日志中提取debootstrap的日志,# grep \'debootstrap\' /var/log/syslog
    如图:
    关于debootstrap在Debian/Ubuntu系统安装过程中的作用及其他

  • 可以看到,其中使用的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

    1. cpio的-o选项表示打包,-H newc表示指定格式为newc
    2. 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 .

    1. -r表示 生成 ISO-9660文件系统的目录信息(貌似就是在每个镜像根目录下生成一个TRANS.TBL文件,里面记录了当前目录的所有文件和目录名,类型等信息)
    2. -T表示 为不能识别长文件名的系统生成翻译表(应该就是把所有文件名映射到长度适中的名称表以方便识别)
    3. -J表示 生成一种叫Joliet的目录信息表(emm… Joliet好像是iso 9660规格的一种扩展,应该也是在多种平台上支持长文件名用的)
    4. -V 设置卷名“demo-tag”
    5. -b 设置isolinux启动引导程序,即将该iso设置为可引导的镜像
    6. -no-emul-boot 好像是一种比较古老的引导方式
    7. -boot-load-size 引导扇区数
    8. -boot-info-table 为启动镜像创建信息表,好像是校验启动镜像的
    9. -x 过滤lost+found文件/目录
    10. -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即可)