chroot
命令用于切换文件系统的根。
能够用chroot
切换进入的,我们称为rootfs
。
安装操作系统本质上就是切换到新的rootfs
。
进入Docker容器也是切换rootfs
。
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
需求:创建一个rootfs
,在里面能执行HomeBrew。
mkdir ~/herOS/{rootfs,src}
依据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}
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/
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