当前位置: 首页 > article >正文

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太慢了:)
在这里插入图片描述在这里插入图片描述


http://www.kler.cn/a/579891.html

相关文章:

  • 【每日学点HarmonyOS Next知识】 状态变量、公共Page、可见区域变化回调、接收参数、拖拽排序控件
  • 杂项知识笔记搜集
  • 18天 - 常见的 HTTP 状态码有哪些?HTTP 请求包含哪些内容,请求头和请求体有哪些类型?HTTP 中 GET 和 POST 的区别是什么?
  • IOday6
  • 深入了解Linux —— 调试程序
  • EXCEL IF自动填充功能
  • linux网络编程中bind函数和accept函数的作用以及它们的第一次参数描述符的联系以及返回值的区别
  • 贪心算法--
  • 数智读书笔记系列015 探索思维黑箱:《心智社会:从细胞到人工智能,人类思维的优雅解读》读书笔记
  • Spring Security 官网文档学习
  • 普及听力保健知识竞赛
  • c++_栈习题
  • flutter的HTTP headers用法介绍
  • 单调栈、单调队列
  • 每天一道算法题【蓝桥杯】【四数之和】
  • 李沐《动手学深度学习》——14.9. 用于预训练BERT的数据集——wiki数据集问题以及存在的其他问题
  • 基于一致性哈希的分布式Top-K
  • 基于Flink SQL的实时指标多维分析模型
  • python办公自动化--数据可视化(pandas+matplotlib)--生成条形图和饼状图
  • Spring MVC 全面解析