分类: LINUX
2014-12-13 13:32:12
制作根文件系统
第一步:建立实验目录,拷贝文件包busybox-1.13.3.tar.gz 和etc.tar.gz到当前目录
[root@localhost rfs]# ls
busybox-1.13.3.tar.gz etc.tar.gz
第二步:创建根文件系统目录
[root@localhost rfs]# mkdir -p /nfsroot/rootfs
[root@localhost rfs]# ls
busybox-1.13.3.tar.gz etc.tar.gz
[root@localhost rfs]# cd /nfsroot/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
[root@localhost rootfs]# pwd
/nfsroot/rootfs
[root@localhost rootfs]# ls
bin dev etc lib mnt proc sbin sys tmp usr var
[root@localhost rootfs]# ls usr
bin lib sbin
第三步:创建设备文件
[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
[root@localhost dev]# cd ../
[root@localhost rootfs]# cd dev
[root@localhost dev]# pwd
/nfsroot/rootfs/dev
[root@localhost dev]# ls -l
总用量 0
crw-rw-rw-. 1 root root 5, 1 12月 13 09:37 console
crw-rw-rw-. 1 root root 1, 3 12月 13 09:37 null
第四步:安装etc
[root@localhost rfs]# tar zxvf etc.tar.gz -C /nfsroot/rootfs/
etc/
etc/inittab
etc/profile
etc/fstab
etc/init.d/
etc/init.d/rcS
[root@localhost rfs]# cd /nfsroot/rootfs/
[root@localhost rootfs]# ls
bin dev etc lib mnt proc sbin sys tmp usr var
[root@localhost rootfs]# cd etc/
[root@localhost etc]# pwd
/nfsroot/rootfs/etc
[root@localhost etc]# ls
fstab init.d inittab profile
第五步:编译内核模块
基于前面的内核编译,
[root@localhost rootfs]# cd linux-2.6.29
[root@localhost linux-2.6.29]# make modules ARCH=arm CROSS_COMPILE=arm-linux-
CHK include/linux/version.h
make[1]: “include/asm-arm/mach-types.h”是最新的。
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CALL scripts/checksyscalls.sh
CC [M] drivers/char/mini2440_hello_module.o
CC [M] drivers/scsi/scsi_wait_scan.o
Building modules, stage 2.
MODPOST 2 modules
CC drivers/char/mini2440_hello_module.mod.o
LD [M] drivers/char/mini2440_hello_module.ko
CC drivers/scsi/scsi_wait_scan.mod.o
LD [M] drivers/scsi/scsi_wait_scan.ko
第六步:安装内核模块到根文件系统
[root@localhost linux-2.6.29]# make modules_install ARCH=arm INSTALL_MOD_PATH=/nfsroot/rootfs
INSTALL drivers/char/mini2440_hello_module.ko
INSTALL drivers/scsi/scsi_wait_scan.ko
DEPMOD 2.6.29.4-FriendlyARM
将内核模块安装到根文件系统 /nfsroot/roots/lib/modules
[root@localhost modules]# pwd
/nfsroot/rootfs/lib/modules
[root@localhost modules]# ls
2.6.29.4-FriendlyARM
第七步:配置busybox
解压:#tar xzvf busybox-1.13.3.tar.gz
[root@localhost rfs]# cd busybox-1.13.3
[root@localhost busybox-1.13.3]# ls
applets e2fsprogs libpwdgrp modutils sysklogd
arch editors LICENSE networking testsuite
archival examples loginutils printutils TODO
AUTHORS fa.config mailutils procps TODO_config_nommu
Config.in findutils Makefile README util-linux
console-tools include Makefile.custom runit
coreutils init Makefile.flags scripts
debianutils INSTALL Makefile.help selinux
docs libbb miscutils shell
配置:
(1)#cd busybox-1.13.3
#make menuconfig
(2)进入busybox settings
a.选中build options
b.选中busybox as a static binary
c.再进入cross compile prefix,填写arm-linux-,这样编译就可直接make
d.进入Istall option,选择don’t use /usr
e.再进入最后一项,填写busybox安装路径
f.退出保存设置。
第八步:编译busybox
#make ARCH=arm CROSS_COMPILE=arm-linux-
第九步:安装busybox
#make install
第十步:查看根文件系统
[root@localhost busybox-1.13.3]# ls /nfsroot/rootfs/
bin dev etc lib linuxrc mnt proc sbin sys tmp usr var
[root@localhost busybox-1.13.3]# cd /nfsroot/rootfs/bin/
[root@localhost bin]# ls
[ deallocvt hexdump mkdir resize tftpd
[[ delgroup hostid mkfifo rm time
addgroup deluser hostname mknod rmdir top
adduser df hush mktemp rtcwake touch
ar diff id more run-parts tr
arping dirname install mount runsv traceroute
ash dmesg ip mountpoint runsvdir true
awk dos2unix ipaddr msh rx tty
basename du ipcalc mt script ttysize
bunzip2 dumpkmap
至此根文件系统就制作好了
附加:为了能被挂载
第一步:#vi /etc/exports
添加代码
***************************************
/nfsroot/rootfs 192.168.139.*(rw,sync,no_root_squash)
******************************************************
第二步:重启nfs服务
[root@localhost modules]# /etc/init.d/nfs restart
关闭 NFS 守护进程: [确定]
关闭 NFS mountd: [确定]
关闭 NFS quotas: [确定]
关闭 NFS 服务: [确定]
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
正在启动 RPC idmapd: [确定]
正在启动 RPC idmapd: [确定]
启动 NFS 守护进程: [确定]
第三步:使用mount命令挂载NFS服务器上的共享目录到本地
[root@localhost modules]# mount -t nfs 192.168.139.128:/nfsroot/rootfs/ /mnt/
[root@localhost modules]# ls /mnt
bin dev etc lib linuxrc mnt proc sbin sys tmp usr var
内容一致?
[root@localhost modules]# cd /nfsroot/rootfs/
[root@localhost rootfs]# ls
bin dev etc lib linuxrc mnt proc sbin sys tmp usr var