chroot命令
1.0、参考
1.1、chroot命令简介

chroot命令用于切换文件系统的根。

能够用chroot切换进入的,我们称为rootfs

安装操作系统本质上就是切换到新的rootfs

进入Docker容器也是切换rootfs

1.2、chroot命令的使用格式

chroot命令的使用格式:

[sudo] chroot [option]... [ROOT-FS-PATH COMMAND [argument]...]

COMMAND缺省是/bin/bash/bin/bash是将ROOT-FS-PATH作为新的根(/)之后的路径。

chroot命令需要root权限,如果当前用户为非root权限用户,那么一定要使用sudo

示例:

sudo chroot /mnt/gentoo/

sudo chroot /mnt/gentoo/ ls

sudo chroot /mnt/gentoo/ /bin/bash

sudo chroot ~/busybox-rootfs/ /bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/bin/ash --login
1.3、通过BusyBox创建rootfs
1.4、通过Buildroot创建rootfs
1.5、从零开始逐步创建rootfs

需求:创建一个rootfs,在里面能执行HomeBrew

step1 : 创建项目骨架
mkdir ~/herOS/{rootfs,src}
step2 : 创建FHS

依据FHS3.0,创建必要的目录。

mkdir -pv ~/herOS/rootfs/{bin,boot,dev,etc,home,lib,lib64,media,mnt,opt,proc,root,run,sbin,srv,sys,tmp,usr,var}
step3 : 安装Linux API

1、使用curl命令下载Linux源码包 (

curl -L -o ~/herOS/src/linux-5.2.9.tar.xz http://sources.buildroot.net/linux/linux-5.2.9.tar.xz

3、使用tar解压源码包:

tar vxf ~/herOS/src/linux-5.2.9.tar.xz -C ~/herOS/src/

4、进入linux-5.2.9目录,并查看它的内容:

5、安装Linux API

make mrproper && make INSTALL_HDR_PATH=dest headers_install

6、将头文件复制到正确的位置:

cp -rv ~/herOS/src/linux-5.2.9/dest/include/* ~/herOS/rootfs/usr/include/
step4 : 安装glibc

1、使用curl命令下载glibc源码包 (

curl -L -o ~/herOS/src/glibc-2.29.tar.xz https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.29.tar.xz

3、使用tar解压源码包:

tar vxf ~/herOS/src/glibc-2.29.tar.xz -C ~/herOS/src/

4、进入glibc-2.29目录,并查看它的内容:

5、不能直接在源码根目录下编译glibc,必须使用其他目录,所以,我们再创建一个目录:

mkdir -p build/output

6、进入build目录:

cd build

7、配置、编译、安装:

../configure \
    --prefix=`pwd`/output \
    --enable-kernel=3.2 \
    --with-headers=/herOS/rootfs/usr/include && \
make && make install