首页 > 系统 > Linux > 正文

linux根文件系统的制作

2020-05-27 13:47:54
字体:
来源:转载
供稿:网友

 (一):首先linux根文件系统的制作需要的开发环境。1:移植Linux内核版本: linux-3.0.1 (只要能用就行)2:交叉编译工具:arm-linux-gcc 4.3.2(任选)3:文件系统制作工具:Busybox-1.13.3(任选)4:etc.tar.gz(二):交叉编译环境的搭建(这一步我在我的博客其他文章里面有 详细的搭建过程,很简单滴~)(三):创建根文件系统的目录1:在主目录下面新建一个文件夹rootfs[root@localhost fs]# ls[root@localhost fs]# mkdir rootfs[root@localhost fs]# cd rootfs/[root@localhost rootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var[root@localhost rootfs]# mkdir usr/bin usr/lib usr/sbin lib/modules说明:根文件系统是Linux启动的时候使用的第一个文件系统,没有他系统将无法正常的启动然而在这个根文件系统中又包含了一系列的目录,接下来对这些目录做一个简单的介绍。其实这个大家都很懂的bin存放所有用户都可以使用的、基本的命令。sbin存放的是基本的系统命令,它们用于启动系统、修复系统等。sys一些总线啊设备啊驱动啊。等等都在这里。好像都是动态生成的吧usr里面存放的是共享、只读的程序和数据。proc这是个空目录,常作为proc文件系统的挂载点。dev该目录存放设备文件和其它特殊文件。etc存放系统配置文件,包括启动文件。lib存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。mnt用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。boot引导加载程序使用的静态文件home用户主目录,包括供服务账号锁使用的主目录,如FTPopt给主机额外安装软件所摆放的目录。rootroot用户的主目录tmp存放临时文件,通常是空目录。var存放可变的数据。

2:创建设备文件[root@localhost rootfs]#cd dev/[root@localhost dev]# mknod -m 666 console c 5 1[root@localhost dev]# mknod -m 666 null c 1 3说明:mknod -m 666 console c 5 1console 为设备文件名,自己可以随便取,c代表是字符型设备(可选b,块设备)5是主设备号 /dev/devices里面记录现有的设备1是次设备号当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了 ,对于字符设备,次设备号就表示同类型设备的不同设备。666代表访问的权限

3:配置/etc/这里有两种方法1:可以把系统上面的/etc/下面一些比较重要的文件拷贝过来2:也可以直接在网上下载一个etc.tar.gz#tar -zxvf etc.tar.gz 将解压出来的文件etc下面的东西全部拷贝到上面新建的根目录下面/rootfs/etc/下面etc/inittabetc/profileetc/fstabetc/init.d/etc/init.d/rcS

 

4:编译内核模块首先进入内核目录下面(内核目录和根文件系统目录不是在同一个目录下面的)# cd linux-3.0.1#make modules ARCH=arm CROSS_COMPILE=arm-linux-说明:在这一步出现一些问题,发现怎么编译也不行,后来由下载了一个内核,编译通过5:安装内核模块#make modules_install ARCH=arm INSTALL_MOD_PATH=/home/xiongyao/rootfs说明:将内核里面编译好的模块放在根文件系统目录下面6:配置busybox说明:关于busybox:(百度百科)busybox是一个集成了一百多个最长用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat 和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount 以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。# tar -xvzf busybox-1.13.3.tar.gz# cd busybox-1.13.3#make menuconfig说明:这一步是要配置busybox的图形界面,使之生效,运行这个命令可能会出错,原因是因为你没有安装那个图像界面的依赖库,在终端里面输入apt-get install libncurses5-dev 就ok了~Busybox Settings-----> build Options----->选中Build BusyBox as a static binary(no shared libs)Busybox Settings-----> InstallationOptions ------------> 选中 “dont use /usr” 选中此项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统Busybox Installation Prefix(/home/fs/myrootfs) 这里要输入busybox安装的绝对路径7:编译安装busybox#make ARCH=arm CROSS_COMPILE=arm-linux-#make install到现在为止,根文件系统就完全做好了,你可以把这个根文件系统制作成ramdisk系统8:、将根文件系统制作 成ramdisk#genext2fs -b 8192 -d /home/fs/myrootfs/ ramdisk说明:这一步出现问题,后来发现是这个分配的空间太小,于是将8192改为120400#genext2fs -b /home/xiongyao/rootfs/ ramdisk #gzip -9 -f ramdisk这样就可以将ramdisk.gz下载到开发板上面去了

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表