很多人都是嵌入式的linux根文件系统制作有一些疑问或困难,有时制作嵌入式linux根文件系统总是达不到预期的效果,事实上,我告诉你,根文件系统的制作仍然很简单,只要你掌握了方法。
【资料图】
首先,让我们来看看什么是根文件系统,这将有助于下一步的制作。
根据文件系统,它首先是一个文件系统。该文件系统不仅具有普通文件系统存储数据文件的功能,而且与普通文件系统相比,它仍然是核心启动时的载体(mount)在第一个文件系统中,系统引导启动程序会在根文件系统悬挂后从中提取一些初始化脚本(如inittab、rcS)并将服务加载到内存中运行。文件系统和内核是完全独立的两部分。没有办法真正启动嵌入式移植的核心下载到开发板上Linux操作系统时,文件系统无法加载。
根文件系统之所以在前面加一个根,说明是加载其他文件系统的根。既然是根,没有这个根,其他文件系统就无法加载。它包括了Linux启动时必要的目录和关键文件,如Linux启动时需要有init目录中的相关文件 Linux挂载分区时Linux一定会找/etc/fstab本吊载配置文件等,应用程序(如根文件系统)ls、mkdir、rm、ifconfig等命令)和 GNU C 库(glibc、eglibc或uclibc)等。包括这些Linux 所有启动系统所需的文件都可以成为根文件系统。包括这些Linux 所有启动系统所需的文件都可以成为根文件系统。Linux启动时,必须首先挂载根文件系统;如果系统不能从指定设备上挂载根文件系统,系统将出错并退出启动。其他文件系统成功后可自动或手动挂载。因此,不同的文件系统可以同时存在于一个系统中。
看到这里,你已经可以做下一步了。事实上,希望你对根文件系统有一个了解。今天我们将使用它BusyBox制作嵌入式Linux根文件系统:
第一步是构建目录结构
要创建根文件系统的目录,他的目录主要包括:
/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys
#mkdir /home/rootfs
#cd /home/rootfs
#mkdir dev etc lib usr var proc tmp home root mnt sys
第二步:开始使用busybox来对/bin /sbin linuxrc进行构建
我们用的是busybox-1.16.1,进入,然后执行以下命令:
#make defconfig
#make menuconfig
Busybox Setting ----->
Build Options ----->
//1选择将busybox静态编译
[*]Build BusyBox as a static binary (no shared libs)
//2.指定交叉编译器
(/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix
Installation Options -----> (选择生成的文件存储目录,也可直接放置rootfs不需要复制)
//3.选择 Don’t use /usr
Busybox Library Tuning--->
[*]Username completion
[*]Fancy shell prompts
[*]Query cursor position from terminal
//4.编译busybox的shell命令解释器支持显示当前路径和主机信息
保存退出
#make
#make install
通过以上步骤,那么在busybox你会在目录下看到它 _install目录中有/bin /sbin linuxrc三个文件
获取1V1嵌入式学习计划,现在发送1000G选择学习资料。中文获取
将这三个目录或文件复制到第一步。rootfs文件夹下。
#cp bin/ sbin/ linuxrc /home/rootfs -ra
在这里一定要记得带上-a因为在bin这个目录很多都是链接,如果你没有带-a复制过去的参数不是链接的形式。
第三步:etc目录建设:
1)进入根文件系统rootfs的etc目录,执行以下操作:
拷贝Busybox-1.16.1/examples/bootfloopy/etc/* 到当前目录
#cp –r busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc
修改inittab,
原始文件如下:
1 ::sysinit:/etc/init.d/rcS
2 ::respawn:-/bin/sh
3 tty2::askfirst:-/bin/sh
4 ::ctrlaltdel:/bin/umount -a -r
修改后为:
---(1)开机免登录,直接打开shell(前数为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 #::respawn:-/bin/login
4 console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
---(2):开机需要登陆(前数为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 ::respawn:-/bin/login
4 #console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
2)复制虚拟机上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下
# cp /etc/passwd rootfs/etc
# cp /etc/group rootfs/etc
# cp /etc/shadow roofs/etc
修改以下三个文件,只保存与root根据具体情况,相关项目的内容会有所不同。
修改passwd为root:x:0:0:root:/root:/bin/sh,即只保存与root相关项目最终改为/bin/ash。
修改group为root:x:0:root
修改shadow为root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:999:7::
登录开发板时,需要输入用户名密码,和虚拟机一样
3)修改profile
PATH=/bin:/sbin:/usr/bin:/usr/sbin //可执行程序 环境变量
export LD_LIBRARY_PATH=/lib:/usr/lib ///动态链接库 环境变量
/bin/hostname osee
USER="`id -un`"
LOGNAME=$USER
HOSTNAME="/bin/hostname"
PS1="[\ \\W]# " //显示主机名称、当前路径等信息:
4)修改 etc/init.d/rc.S文件
/bin/mount -n -t ramfs ramfs /var
/bin/mount -n -t ramfs ramfs /tmp
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none /dev
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
/bin/mkdir -p /dev/pts //telnet服务需要
/bin/mkdir -p /dev/shm //telnet服务需要
#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB需要自动吊载
/sbin/mdev -s //启动mdev在/dev自动创建设备文件节点
/bin/mount -a
########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 192.168.1.70
/sbin/ifconfig eth0 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth0
/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth1
5)修改etc/fstab文件,添加以下文件
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
第四步: 这也是最后一步lib目录构建:
(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我只是把这个目录下来SO可以复制文件)
1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
复制动态库rootfs/lib下
#cp *so* roofs/lib -a
2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
复制下面的动态库rootfs/lib下
#cp ./libstdc .so.* rootfs/lib -a
这样,大功告成,事实上,你可以看到这些步骤,即4步,完成嵌入式linux根文件系统的制作并不难。按照我的步骤,如果最后有问题,那就是你太粗心了,仔细检查,嵌入式linux您如何制作根文件系统?get到了吗?
\h \\W]# " //显示主机名称、当前路径等信息:4)修改 etc/init.d/rc.S文件/bin/mount -n -t ramfs ramfs /var/bin/mount -n -t ramfs ramfs /tmp/bin/mount -n -t sysfs none /sys/bin/mount -n -t ramfs none /dev/bin/mkdir /var/tmp/bin/mkdir /var/modules/bin/mkdir /var/run/bin/mkdir /var/log/bin/mkdir -p /dev/pts //telnet服务需要/bin/mkdir -p /dev/shm //telnet服务需要#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB需要自动吊载/sbin/mdev -s //启动mdev在/dev自动创建设备文件节点/bin/mount -a########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0/sbin/ifconfig eth0 192.168.1.70/sbin/ifconfig eth0 netmask 255.255.255.0/sbin/route add default gw 192.168.1.1 eth0/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0/sbin/route add default gw 192.168.1.1 eth15)修改etc/fstab文件,添加以下文件none /dev/pts devpts mode=0622 0 0tmpfs /dev/shm tmpfs defaults 0 0第四步: 这也是最后一步lib目录构建:(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我只是把这个目录下来SO可以复制文件)1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib复制动态库rootfs/lib下#cp *so* roofs/lib -a2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib复制下面的动态库rootfs/lib下#cp ./libstdc .so.* rootfs/lib -a这样,大功告成,事实上,你可以看到这些步骤,即4步,完成嵌入式linux根文件系统的制作并不难。按照我的步骤,如果最后有问题,那就是你太粗心了,仔细检查,嵌入式linux您如何制作根文件系统?get到了吗?-
全球今日讯!阿里云:双11张北基地和南通基地清洁能源使用合计超6000万千瓦时据阿里巴巴方面介绍,阿里自研CPU倚天710已大规模应用于双11...
-
每日报道:“由实而生 向实而升” 京东11.11再创新纪录鞭牛士报道截至11月11日晚23:59,2022年“京东11 11全球热爱...
-
全球看点:扎根实体经济,见证消费活力 天猫双11稳中向好鞭牛士报道11月12日零点,第14届天猫双11收官。天猫表示,今...
-
天天头条:京东小时购11.11战报:全周期销售增长80% 推动超20万实体门店高速增长鞭牛士报道京东到家发布11 11终极战报:11 11期间(10月31...
-
当前播报:“由实而生 向实而升” 京东云数智供应链“以实助实”支持产业增长鞭牛士报道截至11月11日晚23:59,2022年“京东11 11全球热爱...
-
天天新消息丨双十一认领生猪获得收益?牧原股份法务部:电信诈骗据财联社消息,从牧原股份处获悉,今日有不法分子假冒牧原股...
-
今日要闻!富士康计划扩大印度iPhone生产,工人数量将提高三倍据凤凰网科技消息,两名知情的印度政府官员称,苹果公司供应...
-
苏宁易购与家乐福就剩余股权收购发生较大争议11月10日晚间,ST易购发布关于子公司交易暨为子公司提供担保...
-
腾讯否认微信支持撤回5分钟内消息据证券时报报道,针对“微信支持撤回5分钟内消息”的传言,腾...
-
市监局通报“波司登先涨价再降价”:不存在欺骗消费者今日,常熟市市场监督管理局发布情况通报称,日前,有媒体报...
- 智联世界,元生无界!快手虚拟人IP亮相2022人工智能大会
2022-09-07 10:47:54
- 机器人界“奥林匹克”!2022世界机器人大会8月18日举行
2022-08-10 09:58:58
- 2025年全球人口将达到90亿!机器人将在农业领域大显身手
2022-07-14 09:41:10
- 中科院院士蒋华良:AI+分子模拟与药物研发将大有可为
2022-07-14 09:37:00
- “千垛之城荷你有约” 2022兴化市荷文化旅游节正式开幕
2022-07-07 09:28:34