环境:linux *** 作系统
- sudo apt-get install debian-archive-keyring
- 安装依赖,使用debootstrap命令创建文件系统。
$ mkdir ~/build; cd ~/build
# 安装必要依赖 debootstrap就是构建的命令
$ sudo apt-get install qemu qemu-user-static binfmt-support debootstrap
# 构建文件系统的命令
$ sudo debootstrap --arch=amd64 --foreign stretch linux-rootfs http://ftp.cn.debian.org/debian/
# qemu-x86_64-static是其中的关键,能在 x86_64 主机系统下 chroot 到 amd64 文件系统
$ sudo cp -a /usr/bin/qemu-x86_64-static ~/build/linux-rootfs/usr/bin/qemu-x86_64-static
–arch:指定制作的文件系统是什么架构的
–foreign:在与主机架构不相同时需要指定此参数,仅做初始化的解包
stretch:这个是Debian 9的发行版本号,为什么没用最新的Debian 10的buster,因为更换国内的镜像源总是有点问题(https://www.debian.org/releases/)
linux-rootfs:这个是要存放文件系统的文件夹,可以不用先创建,执行上述命令会自动创建此文件夹,也可以先创建
http://ftp.cn.debian.org/debian/ :这个是中国镜像服务器地址,Debian 全球镜像站(https://www.debian.org/mirror/list)
- 执行挂载脚本:
# 此脚本有两个参数 -u 是取消挂载 -m 是挂载
$ ./ch-mount.sh -m linux-rootfs/
脚本内容如下:
#!/bin/bash function mnt() { echo "MOUNTING" sudo mount -t proc /proc proc sudo mount -t sysfs /sys sys sudo mount -o bind /dev dev sudo mount -o bind /dev/pts dev/pts sudo chroot } function umnt() { echo "UNMOUNTING" sudo umount proc sudo umount sys sudo umount dev/pts sudo umount dev } if [ "" == "-m" ] && [ -n "" ] ; then mnt elif [ "" == "-u" ] && [ -n "" ]; then umnt else echo "" echo "Either 1'st, 2'nd or both parameters were missing" echo "" echo "1'st parameter can be one of these: -m(mount) OR -u(umount)" echo "2'nd parameter is the full path of rootfs directory(with trailing '/')" echo "" echo "For example: ch-mount -m /media/sdcard/" echo "" echo 1st parameter : echo 2nd parameter : fi
- # 执行脚本后,没有报错会进入文件系统,显示 I have no name ,这是正常的,不要慌张,我当时就有点懵逼,这是因为还没有初始化。
I have no name!@node2:/#
- 初始化文件系统:
debootstrap/debootstrap --second-stage
- 初始化完成后再次进入文件系统用户就会显示成root:
sudo chroot linux-rootfs
- 增加镜像源:
/etc/apt/sources.list 文件中增加 镜像源:deb http://mirrors.163.com/debian stretch main;也可增加其他需要的源。
8、apt-get update以及安装其他需要的软件。
9、完成之后取消挂载:
./ch-mount -u linux-rootfs/
参考:https://blog.csdn.net/qq_36956154/article/details/100606619
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)