X210开发板嵌入式linux操作系统根文件系统的构建。

2019-07-12 19:33发布

本文是在学习朱有鹏老师嵌入式linux课程的过程中所整理的根文件系统构建步骤。X210开发板嵌入式linux操作系统根文件系统的构建。0准备工作:     0.1开发板支持nfs作为根文件系统启动,并且已经能够启动内核。     0.2搭建好要建立跟文件系统的nfs开发环境。    0.3下载一个busybox,本次用的是busybox-1.24.1.tar.bz2.可以自己从网上下载。    0.4本实验的本文件系统目录为: /root/porting_x210/rootfs/2rootfs    0.6 此时启动内核会有以下信息
1.修改Makefile1.1复制busybox到根文件系统到 /root/porting_x210/rootfs目录中并解压1.2 修改Makefile中的ARCH191行)和CROSS_COMPILE(根据自己的开发板以及交叉编译工具链的位置配置)   (1) ARCH = arm  
 (2) CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin//arm-none-linux-gnueabi- 1.3 make menuconfig进行配置如下Busybox Settings---> Build Options---> [*]Build BusyBox as a static binary(no shared libs) Busybox Library Tuning---> [*]vi-style line editing commands [*]Fancy shell prompts Linux Module Utilities---> [ ]Simplified modutils [*]insmod [*]rmmod [*]lsmod [*]modprobe [*]depmod Linux System Utilities--->[*]mdev [*]Support /etc/mdev.conf [*]Support subdirs/symlinks [*]Support regular expressions substitutions when renaming dev [*]Support command execution at device addition/removal [*]Support loading of firmwares Busybox Settings  --->     Installation Options ("make install" behavior)  --->          (./_install) BusyBox installation prefix     将路径导出到根文件系统目录及里面内容改为:     /root/porting_x210/rootfs/2rootfs1.4 make 编译     出现如下错误:     解决办法:          修改 make menuconfig Coreutils  --->   [ ] sync                重新make1.5 make install 安装     install在所有的linux下的软件中作用都是安装软件。在传统的linux系统中安装软件时都是选择源代码方式安装的。我们下载要安装的软件源代码,然后配置、编译、安装。make install的目的就是将编译生成的可执行程序及其依赖的库文件、配置文件、头文件安装到当前系统中指定(一般都可以自己指定安装到哪个目录下,如果不指定一般都有个默认目录)的目录下1.6 进入rootfs目录下 ls查看当前文件夹内容如下:     再次重新启动内核,查看打印信息。         需要解决问题:rcS2 制作最小根文件系统1.1 Inittab   进入根文件系统目录:$mkdir etc   然后将inittab(文章中所用到的文件代码在文章末尾。因无法插入文件,自己复制代码创建即可,文件名字需相同)复制到etc目录下。重新启动内核结果如下: 1.2 rcS文件    进入etc目录  将fstab复制到etc目录下    $ mkdir init.d     $ cd init.d   rcS文件复制到init.d    重新启动内核,问题没有解决。因为在windows下创建文件,/r/n原因,格式不正确。在开发板中打开才能看出来       把M删掉。再次重启,有以下问题:  在根文件系统目录下创建 proc sys var tmp dev 文件 $ mkdir proc sys dev var tmp    然后再次重启内核   根据提示目录创建次HOSTNAME文件,在HOSTNAME中写入一个名字,保存退出后重新启动内核,警告消除!3. 用户登录  3.1在命令行前显示用户名       profile文件复制到etc目录下,再次重启内核查看   3.2 显示用户登录界面      inittab中的::askfirst:~bin/sh 注释掉,前面加改为#::askfirst:~bin/sh (注释掉)      在下面添加一行::askfirst:~bin/sh      复制linux  /etc下的passwdshadow到根文件系统的etc下。将除了root以外的删除。root:x:0:0:root:/root:/bin/bash更改为oot:x:0:0:root:/root:/bin/sh再次运行即所复制linux环境下的密码。   
根文件系统构建中会用到的几个文件代码文件名rcS,代码如下:#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel mount -a echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s /bin/hostname -F /etc/sysconfig/HOSTNAME ifconfig eth0 192.168.1.10文件名 inittab,代码如下#first:run the system script file ::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::ctrlaltdel:-/sbin/reboot #umount all filesystem ::shutdown:/bin/umount -a -r #restart init process ::restart:/sbin/init文件名 fastab# /etc/fstab: static file system information. # # Use 'vol_id --uuid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /var tmpfs defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0文件名 profile # Ash profile # vim: syntax=sh # No core files by default ulimit -S -c 0 > /dev/null 2>&1 USER="`id -un`" LOGNAME=$USER PS1='[u@h W]# ' PATH=$PATH HOSTNAME=`/bin/hostname` export USER LOGNAME PS1 PATH所构建的根文件系统可行后,可以再制作成镜像并烧录启动。