debian根文件系统制作
文章目录
- 前言
- 一、debian根文件系统是什么?
- 二、构建步骤
- 1.准备工作-第一阶段
- 2.构建系统-第二阶段
- 3.打包
- 4.遇到的问题
- 三、结果展示
前言
在这里介绍debian根文件系统的构建,builtroot根文件系统的不是不能用,只是这个能更方便的下载一些软件,更好用!
提示:以下是本篇文章正文内容,下面案例可供参考
一、debian根文件系统是什么?
deepseek:Debian 的根文件系统(Root Filesystem,简写为 /)是 Debian 操作系统的基础文件系统结构,它是整个操作系统的核心组成部分,包含了启动、运行和管理系统所需的全部目录、文件、配置和工具。根文件系统是所有其他文件系统(如 /home、/boot 等)的挂载起点,是系统运行的基石:)
二、构建步骤
1.准备工作-第一阶段
安装构建文件系统的工具,一个是用来chroot,一个是用来构建文件系统。chroot的作用是改变根目录,qemu是为了在x86架构的ubuntu上模拟arm架构系统。
sudo apt install qemu-user-static
sudo apt install debootstrap
mkdir debian11 // 可以建一个目录用来和别的目录区别,这个随意
cd debian11
mkdir rootfs // 用来存放要构建的根文件系统
看你想要构建Debian10还是Debian11或者其他的,需要找到对应的源。而且要找到自己开发板架构对应的源。licheepi nano的架构是armel。
// debian 10 ,有armel
http://mirrors.huaweicloud.com/debian-archive/debian/
// debian 11 ,有armel
https://mirrors.huaweicloud.com/debian/
我这里使用的debian11,10的话也试过是ok的
// 网上的命令,licheepi nano 直接debootstrap会有证书的问题
sudo debootstrap --foreign --verbose --arch=armel buster rootfs http://mirrors.huaweicloud.com/debian/
// licheepi nano 解决证书的问题,需要额外执行这一步
wget https://ftp-master.debian.org/keys/release-10.asc -qO- | gpg --import --no-default-keyring --keyring ./debian-release-10.gpg
debootstrap --keyring=./debian-release-10.gpg --foreign --verbose --arch=armel buster rootfs https://mirrors.huaweicloud.com/debian-archive/debian/
然后在rootfs目录下执行以下命令,挂载一些目录。并把qemu放到rootfs/usr/bin/目录下,一般qemu有执行权限,可以看一下,没有的话chmod一下。
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
sudo chmod +x rootfs/usr/bin/qemu-arm-static // 加权限
mount -t proc proc rootfs/proc
mount -t sysfs sys rootfs/sys
mount -o bind /dev rootfs/dev
mount -o bind /dev/pts rootfs/dev/pts
2.构建系统-第二阶段
// 执行第一句会有很长的时间--第二阶段!!!
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs /debootstrap/debootstrap --second-stage --verbose
// 执行这一句就是改变了根目录
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs
改变根目录可能不太还理解,看下图可以更好理解:
注解:为啥要改变根目录,这样你的一些操作就能留在该根文件系统中,apt-get安装一些软件啥啥的。
apt-get gcc //不知道为啥对gcc有一种执念,别的可以没有,这个必须有!
apt-get install wpasupplicant // 安装WIFI配置相关的组件
apt-get install net-tools // 安装网络基础组件、如使用ifconfig等
apt-get install udhcpc // 当wifi连接成功后,需要用这个组件去获取IP地址
// 其他组件
apt-get install wireless-tools
apt install sudo vim openssh-server htop
apt install pciutils usbutils acpi
修改root登录密码的方式如下
passwd root
添加用户
groupadd <用户组>
useradd -m -g <用户组> -s /bin/bash <用户名>
passwd <用户名>
代码如下(示例):
新增账号的操作感觉没必要啊,不加了,详见:墨云:Debian文件系统制作
3.打包
当所有的内容制作完成,就可以清理缓存,打包之后就可以替换你的文件系统了
apt-cache clean #删除安装包
exit #退出chroot
rm rootfs/usr/bin/qemu-arm-static
卸载刚在挂载的文件夹。
cd rootfs
sudo umount dev/pts/
sudo umount dev/
sudo umount sys/
sudo umount proc/
sudo umount dev/pts/
打包文件。
cd rootfs #进到文件系统目录,如果已经在该文件夹下,可以忽略
tar cvf ../rootfs.tar . #要注意那个. 代表当前目录
生成的rootfs.tar任意解压到文件系统即可
4.遇到的问题
① request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module binfmt-0000, throttling…
② Starting init: /sbin/init exists but couldn’t execute it (error -8)
③ Starting init: /bin/sh exists but couldn’t execute it (error -8)
解决:之前的步骤一直按照别人的操作来的试了五六次,排除了操作的问题,最后根文件系统不压缩-解压。直接把rootfs内的所有文件copy到SD卡里,居然解决了,我真的服了!!如果有遇到上述问题的话可以先看看文件的权限是否够,是否在解压的时候改了文件的权限。
还有一件事:关于Starting init: /sbin/init exists but couldn’t execute it (error -8)问题,有的说要换一种启动方式,以下仅供参考:
替换为轻量级 Init 系统
若 systemd 仍失败,改用 sysvinit:
1、在 chroot 环境中操作
sudo chroot rootfs /usr/bin/qemu-arm-static /bin/bash
2、安装 sysvinit
apt-get update
apt-get install sysvinit-core
3、卸载 systemd
apt-get purge systemd
4、创建符号链接
ln -sf /sbin/init /sbin/init.sysvinit
修改内核命令行参数:
5、复制
init=/sbin/init.sysvinit
还有二件事:也有说rootfs/lib/ld-linux.so.3文件不能链接,要替换一下,不知道有无屌用。
三、结果展示
终于进入了~,就是licheepi nano太慢了:)