第四章 建立根文件系统 1、建立目录 构建工作空间时,rootfs文件夹用来存放根文件系统, #cd rootfs 根据根文件系统的基本结构,建立各个对应的目录: # mkdir bin dev etc lib proc sbin tmp usr var root home # chmod 1777 tmp # mkdir usr/bin usr/lib usr/sbin # ls dev etc lib proc sbin tmp usr var # mkdir var/lib var/lock var/log var/run var/tmp # chmod 1777 var/tmp 对于单用户系统来说,root和home并不是必须的。 准备好根文件系统的骨架后,把前面建立的文件安装到对应的目录中去。 2、拷贝链接库 把uclibc的库文件拷贝到刚才建立的lib文件夹中: # cd ${PREFIX}/lib [root@skynet lib]# cp *-*.so ${PRJROOT}/rootfs/lib [root@skynet lib]# cp -d *.so.[*0-9] ${PRJROOT}/rootfs/lib 3、 拷贝内核映像和内核模块 因为没有模块,所以拷贝模块就省了, 新建boot目录,把刚才建立好的内核拷贝过来 # cd /home/kendo/control-project/daq-module/rootfs/ # mkdir boot # cd ${PRJROOT}/images # cp bzImages-2.4.18-rmk5 /home/kendo/control-project/daq-module/rootfs/boot 4、 建立/dev下边的设备文件 在linux中,所有的的设备文件都存放在/dev中,使用mknod命令创建基本的设备文件。 mknod命令需要root权限,不过偶本身就是用的root用户,本来是新建了一个用户专门用于嵌入式制作的,不过后来忘记用了…… # mknod -m 600 mem c 1 1 # mknod -m 666 null c 1 3 # mknod -m 666 zero c 1 5 # mknod -m 644 random c 1 8 # mknod -m 600 tty0 c 4 0 # mknod -m 600 tty1 c 4 1 # mknod -m 600 ttyS0 c 4 64 # mknod -m 666 tty c 5 0 # mknod -m 600 console c 5 1 基本的设备文件建立好后,再创建必要的符号链接: # ln -s /proc/self/fd fd # ln -s fd/0 stdin # ln -s fd/1 stdout # ln -s fd/2 stderr # ls console fd mem null random stderr stdin stdout tty tty0 tty1 ttyS0 zero 设备文件也可以不用手动创建,听说RedHat /dev下的脚本MAKEDEV 可以实现这一功能,不过没有试过…… 基本上差不多了,不过打算用硬盘/CF卡来做存储设备,还需要为它们建立相关文件,因为我的CF在目标机器上是CF-to-IDE,可以把它们等同来对待,先看看Redhat 下边had的相关属性: # ls -l /dev/hda brw-rw---- 1 root disk 3, 0 Jan 30 2003 /dev/hda # ls -l /dev/hda1 brw-rw---- 1 root disk 3, 1 Jan 30 2003 /dev/hda1 对比一下,可以看出,had类型是b,即块设备,主编号为3,次编号从0递增,根限位是rw-rw----,即660,所以: # mknod -m 660 hda b 3 0 # mknod -m 660 hda1 b 3 1 # mknod -m 660 hda2 b 3 2 # mknod -m 660 hda3 b 3 3 5、添加基本的应用程序 未来系统的应用程序,基本上可以分为三类: 基本系统工具,如ls、ifconfig这些…… 一些服务程序,管理工具,如WEB、Telnet…… 自己开发的应用程序 这里先添加基本的系统工具,有想过把这些工具的代码下载下来交叉编译,不过实在是麻烦,用BusyBox,又精简又好用…… 将busybox-1.00.tar.gz下载至sysapps目录下,解压:
本新闻共 6页,当前在第 4页 1 2 3 4 5 6 |