chroot环境搭建

1.wiki

  参考  第 6 章 构建软件包

  sudo apt install dpkg-dev

Chroot环境搭建
跳到导航跳到搜索
第一步,安装工具

sudo apt install debootstrap

第二步,下载debian10资源包

sudo debootstrap --arch $(dpkg-architecture -qDEB_TARGET_ARCH_CPU) stable /mnt/debian10 http://ftp.cn.debian.org/debian

第三步,配置资源

sudo mount --bind /dev /mnt/debian10/dev

sudo mount --bind /sys /mnt/debian10/sys

sudo mount --bind /proc /mnt/debian10/proc
第四步,进入chroot

sudo chroot /mnt/debian10
View Code

名词解释

当我们需要将一个软件从源码或其他包格式打包为.deb格式时,需要一个纯净的操作系统环境,即系统安装后的初始状态,此时系统文件/目录没有经过修改,在此环境中进行测试,与所有用户的测试环境理论上保持一致,这就是净室环境。如果不使用净室环境进行开发和测试,会出现如下问题:

1-如果当前系统安装了一些仓库之外的动态链接库或头文件,则编译出的二进制文件调用的api与仓库中类库提供的不一致

2-如果当前系统安装了一些仓库之外的动态链接库,则由于api兼容性问题,可能导致可执行程序无法运行,会影响测试结果

3-如果已经安装了某些依赖,则开发或测试中,就无法得知这些依赖是否需要在其他用户的系统中安装

因此,在debian包格式的开发和测试中,必须使用净室环境。

搭建净室环境

有多种方式搭建净室环境,例如:

通过debootstrap生成一份debian基础系统,通过chroot进入

通过搭建虚拟机,生成一份净室环境

通过创建docker容器,生成一份净室环境

在硬件上安装新的操作系统镜像,生成一份净室环境

debootstrap/chroot

debootstrap是debian/ubuntu下的一个工具,用来构建一套基础的debian系统。可以通过chroot进入系统,在里面进行打包构建工作(类似docker),而不会破坏宿主系统。

安装debootstrap

sudo apt update
sudo apt install -y debootstrap

安装净室环境

debootstrap的命令结构为

debootstrap 指定架构 指定系统版本 指定安装目录 指定仓库镜像(可选)

由于生成的uos系统环境存在一些问题,因此以搭建debian环境为例:

#i686
sudo debootstrap --arch i386 buster /mnt/debian10_i386 https://mirrors.163.com/debian/

#X86_64
sudo debootstrap --arch amd64 buster /mnt/debian10_amd64 https://mirrors.163.com/debian/

#AArch64
sudo debootstrap --arch arm64 buster /mnt/debian10_arm64 https://mirrors.163.com/debian/

#MIPS64el
sudo debootstrap --arch mips64el buster /mnt/debian10_mips64el https://mirrors.163.com/debian/

请注意,本文暂时不涉及在本机下搭建不同cpu架构的净室环境的操作说明(即交叉开发环境)。

进入净室环境

#以X86_64为例
sudo chroot /mnt/debian10_amd64

此时你会惊奇的发现,类似ssh登录其他机器一样,你进入了另一个系统,而这个系统实际上是你本机上的一个文件目录,这也体现出了Linux一切皆文件的思路。

使用如下命令即可退出

exit

卸载净室环境

#删除该目录即可
sudo rm -rf /mnt/debian10_amd64

路径挂载

由于debootstrap构成的系统比较简陋,因此需要从宿主系统挂载几个目录过来,进行系统信息共享。

#存放驱动信息
sudo mount --bind /sys /mnt/debian10_amd64/sys

#存放设备节点信息
sudo mount --bind /dev /mnt/debian10_amd64/dev

#存放系统信息,例如内存信息,cpu信息等
sudo mount --bind /proc /mnt/debian10_amd64/proc

命令总结

sudo apt update
sudo apt install -y debootstrap
sudo debootstrap --arch amd64 buster /mnt/debian10_amd64 https://mirrors.163.com/debian
sudo mount --bind /sys /mnt/debian10_amd64/sys
sudo mount --bind /dev /mnt/debian10_amd64/dev
sudo mount --bind /proc /mnt/debian10_amd64/proc
sudo chroot /mnt/debian10_amd64

docker

参见本篇wiki

虚拟机

暂无

开发环境配置

构建Debian安装包的前提,需要安装一些开发工具

apt install build-essential devscripts debhelper dpkg-dev quilt git vim

编译不同的软件,需要用到更多的开发工具或依赖库,以上只是最基本的工具。

净室环境命令自动补全

安装自动补全工具

apt install -y bash-completion

编辑/etc/bash.bashrc,搜索  bash_completion  关键词语,把取消注释

退出净室环境,重新登录即可自动补全

开发者署名

请在所使用shell的配置文件中添加三行

DEBFULLNAME="你的名字"
DEBEMAIL="你的邮箱"
export DEBFULLNAME DEBEMAIL

系统默认的shell一般是bash,配置文件为~/.bashrc

dquilt

quilt是处理补丁的工具,可以进行补丁创建、更新、删除、应用、取消应用等操作。

请在shell配置文件中添加如下内容

alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
complete -F _quilt_completion -o filenames dquilt

系统默认的shell一般是bash,配置文件为~/.bashrc

 

posted @ 2021-08-11 11:25  AlexOne  阅读(2629)  评论(0)    收藏  举报