IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 超级详细讲解根文件系统rootfs的制作 -> 正文阅读

[系统运维]超级详细讲解根文件系统rootfs的制作

🌹1 下载工具

busybox-1.21.1:或选用其他版本的 busybox,大同小异
下载地址:工具链接

?2 构建目录

创建根文件系统目录,主要包括以下目录
/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin
/sbin /opt /sys /media
命令如下:

mkdir  ~/rootfs
cd  ~/rootfs
mkdir dev etc lib usr var proc tmp home root mnt bin sbin opt sys media

🚀3 使用busybox

解压 busubox
进入 busybox 目录,执行

make defconfig //使用默认配置 busybox,大部分的命令都会被选中 #
进入图形化配置页面,把下面的选项都勾上
make menuconfig
Busybox Setting ----->
Build Options ----->//选择将 busybox 进行静态编译,这样编译出来的 busybox 可以不依赖动态库
Busybox Library Tuning—>
[]Username completion
[
]Fancy shell prompts
[*]Query cursor position from terminal
保存退出

回到busybox目录下执行下面语句

make
make install
cp * ~/rootfs/ -arf

在 busybox 目录下cd 进入 _install 目录,里面有 bin sbin usr linuxrc 四个文件
将这三个目录或文件拷到第一步所建的 rootfs 文件夹下。

cp bin sbin usr linuxrc $HOME/rootfs -rfa

4 🍎补全lib库

找到你工具链中的lib目录拷贝到你的根文件目录中,我用的是arm-linux-gcc的lib
在这里插入图片描述

5 🍏生成etc配置文件

进入到 busybox-1.21.1下查找etc,并复制到你的根文件目录下
在这里插入图片描述
进入到etc/的inittab 删除第三行代码:tty2::askfirst:-/bin/sh

6 🍇修改 etc/init.d/rcS 文件

init 进程通过 inittab 启动的第一个进程为此脚本,我们需要做以下修改#!/bin/sh

🌸6.1.根据 fstab 配置文件挂载相应的文件系统

/bin/mount -a

🐟6.2.配置 telnetd 服务器的时候需要以下文件夹及文件系统

/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t tmpfs tmpfs /dev/shm

🌺6.3.启动需要以下文件夹

/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log

🐬6.4.在 lib 下创建相应文件夹(与当前内核版本相同),为驱动模块加载作准备

if ! [ -d /lib/modules ]; then
mkdir /lib/modules
fi
if ! [ -d /lib/modules/ ( u n a m e ? r ) ] ; t h e n m k d i r / l i b / m o d u l e s / (uname -r) ]; then mkdir /lib/modules/ (uname?r)];thenmkdir/lib/modules/(uname -r)
fi

👑6.5.自动在/dev 下创建设备节点

/sbin/mdev -s

init.d/rsc文件下的编写

#! /bin/sh
/bin/mount-a

/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t tmpfs tmpfs /dev/shm
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log

if ! [ -d /lib/modules ]; then
mkdir /lib/modules
fi
if ! [ -d /lib/modules/$(uname -r) ]; then
mkdir /lib/modules/$(uname -r)
fi

/sbin/mdev -s

👏7 修改 etc/fstab 文件,填充以下内容

#device mount-point type options dump fask order
proc /proc proc defaults 0 0
ramfs /var ramfs defaults 0 0
ramfs /tmp ramfs defaults 0 0
none /sys sysfs defaults 0 0
none /dev ramfs defaults 0 0

🌹8 修改 profile

#1.初始化 PATH 环境变量及动态链接库路径
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
#2.初始化主机名以及当前工作路径
/bin/hostname qfedu
USER="`id -un`"
LOGNAME=$USER
HOSTNAME='/bin/hostname'
PS1='[\u@\h \W]#

?9 用户名、密码文件创建

拷贝虚拟机上的/etc/passwd, /etc/group, /etc/shadow 到 rootfs/etc 下。

#cp /etc/passwd $HOME/rootfs/etc
#cp /etc/group $HOME/rootfs/etc
#cp /etc/shadow $HOME/ rootfs/etc

对以下三个文件修改,只保存与 root 相关的项(每个文件的第一行)只保留 passwd 第一行,为:

root:x:0:0:root:/root:/bin/sh

最后改成/bin/ash,PC 使用 bash 作为默认 shell,嵌入式系统不支持 bash,这里改为 sh 或 ash

只保留 group 第一行,为:
root:x:0:root

只保留 shadow 第一行,为:
root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::
(注意这个值不一定一样,各人密码不一样,这个值也不一样,这个的密码是六个1:
111111)这个文件在本地登录或者 ftp、telnet 登录时起作用

打开/etc/inittab
把第二行:::respawn:-/bin/sh
改为::respawn:-/bin/login //登录时需要用户名、密码验证
这样,以后登陆开发板时需输入用户名密码,同虚拟机相同
登陆后可以通过 passwd 命令修改密码或通过 adduser 增加新用户

这时我配置的结果
在这里插入图片描述

💒10 根文件系统的烧写与验证

根文件系统的挂载通常有两种方式,一种是直接烧尽Emmc里面,一种是通过NFS网络文件系统远程挂载,这里采用NFS挂载的方式进行验证
首先在Ubuntu下配置rootfs远程挂载
sudo gedit /etc/exports

输入/home/edu/rootfs *(rw,sync,no_root_squash,no_subtree_check)在这里插入图片描述
重启NFS服务器:sudo /etc/init.d/nfs-kernel-server restart

11 使用uboot挂载根文件系统

启动开发板的uboot
执行以下命令:提供一个模板
模板:
setenv bootargs root=/dev/nfs nfsroot=(虚拟机路径),rsize=1024,wsize=1024 ip=(开发板 iP):(服务器 ip):(网关):255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200

执行后用:saveenv保存,重新启动开发板查看是否进入你的根文件系统

这是我的挂载场景:在这里插入图片描述

12 还原原始的根文件系统

执行下面两条语句并重启开发板

setenv bootargs root=/dev/mmcblk0p8 rw rootfstype=ext4 init=/linuxrc lcd=wy070ml tp=gslx680
saveenv

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 13:06:47  更:2021-11-11 13:06:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:29:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码