linux根文件系统的制作

(一):首先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
用户主目录,包括供服务账号锁使用的主目录,如FTP

opt
给主机额外安装软件所摆放的目录。

root
root用户的主目录

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 1
console 为设备文件名,自己可以随便取,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/inittab
etc/profile
etc/fstab
etc/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 ------------>
选中 “don't 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下载到开发板上面去了

(0)

相关推荐

  • linux根文件系统的挂载过程详解

    st1\:*{behavior:url(#ieooui) } 一:前言 前段时间在编译kernel的时候发现rootfs挂载不上.相同的root选项设置旧版的image却可以.为了彻底解决这个问题.研 ...

  • Linux内核与根文件系统的关系详解

    Linux内核与根文件系统的关系 开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题! 一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所 ...

  • 简单讲解Linux的文件系统及相关的挂载命令

    Linux文件系统 和windows的C盘D盘E盘的概念一样,这个"文件系统"或者叫"组织体系"是软件级别的,是linux系统"内在"的体系 ...

  • Linux内存文件系统tmpfs(/dev/shm)详细介绍

    一./dev/shm理论 默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录.可以通过df 命令查看结果. /dev/shm/是linux下一个非常有用的目录,因为 ...

  • Linux系统下如何制作Live USB

    Linux系统下该如何制作Live USB呢?下面小编就给大家介绍几种方法.一起去看看吧! 1.UNetbootin 这是创建Live USB最流行的工具之一.UNetbootin是一款开源应用,支持 ...

  • Linux中文件系统的目录结构详细介绍

    Linux下的文件系统为树形结构,入口为/, 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的. 1.我们先查看一下linux系统下标准的目录 2./bin基础 ...

  • linux btrfs文件系统及管理

    什么是btrfs? Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(copy-on-write),改善e ...

  • Linux系统下如何制作Live USB?Linux系统下制作Live USB的方法

    不管是使用Win系统,还是安装了Linux系统,只要不会对原本的系统造成损害,用户可以使用Live USB尝试Linux的各种发行版本,那么,Linux系统下该如何制作Live USB呢?下面小编就给 ...

  • Linux虚拟机文件系统突然变成只读

    出现IO错误。重启虚拟机表示磁盘错误,用命令“fsck / -y”修复磁盘错误。这种情况出现过几次,有时修复磁盘之后可以继续启动,后来干脆就无法启动了。 重新安装虚拟机并checkout代码,也很容易 ...