- 论坛徽章:
- 0
|
linux-2.6.18以上版本完全抛弃了 devfs,使用 udev. udev可以在 http://www.kernel.org/pub/linux/utils/kernel/hotiflags目录下找到,不过 busybox高版本提供了 udev的简化版 mdev.
作 linux kernel 高版本能引导的文件系统 rootfs 步骤:
1. 创建必须的文件夹及设备文件
# mkdir rootfs
# cd rootfs
# mkdir bin dev etc lib mnt proc sbin sys root
# mkdir etc/var etc/tmp etc/sysconfig
# ln -s etc/var var
# ln -s etc/tmp tmp
2。创建设备文件系统
新版本的udev是一个基于用户空间的设备管理系统。在内核启动时并不能
自动创建设备节点,固需手动创建console和null两个启动过程必须的设
备节点。我们将采用busybox中内置的mdev,一个简化的udev版本.
# mknod -m 660 dev/console c 5 1
# mknod -m 660 dev/null c 1 3
3. 建立动态运行库
# cp -rfd 交叉编译器位置/arm-linux/lib/* rootfs/lib/
# rm -rf rootfs/lib/*.a
# arm-linux-strip rootfs/lib/*
4. 交叉编译busybox
解压后修改Makefile,指明交叉编译器:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
执行 make menuconfig
选择系统需要用到的命令或工具。
值得注意的是 shell 的选择,在 Choose your default shell (none) 这一项回车后选择ash
Busybox settings --->
Build option --->
Build BusyBox as a static binary (no shared libs)
Linux System Utilities --->
mdev
Support /etc/mdev.conf
[ ] Support command execution at device addition/removal
必须选择 mdev 选项, 否则不能启用udev。
执行 make install进行编译,编译完后,会出现_install目录,包含bin、sbin、usr三个目录和一个linuxrc文件。
linuxrc是linux启动后第一执行的文件(由u-boot传给linux的启动参数决定,在kernel的boot option 的目录),其作用是执行相应的初始化工作。但u-boot编译生成的仅是一个指向/bin/busybox的链接文件。由于我们需要作一些初始化工作,如启动web服务器,加载特定驱动程序等,我们将自行编写linuxrc这个文件。bin、sbin、usr这三个目录里除了bin/busybox一个文件外,其余都是指向busybox的链接文件。我们将bin、sbin、usr这三个目录和linuxrc这个链接文件拷贝到rootfs的目录下,基本的文件系统制作完成。
5. etc目录制作
a) 添加 init.d/rcS 文件 添加自动执行部分
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
#Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /root
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var
/bin/mount -t tmpfs none /dev
/bin/mount -t sysfs none /sys
/bin/mkdir -p /var/lib
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/bin/mknod -m 660 /dev/console c 5 1
/bin/mknod -m 660 /dev/null c 1 3
/bin/mknod -m 666 /dev/ptmx c 5 2
/bin/mkdir /dev/shm
/bin/mkdir /dev/pts
echo "Starting mdev ..."
/sbin/mdev -s
echo /sbin/mdev > /proc/sys/kernel/hotplug
/etc/rc.d/init.d/netd start
/etc/rc.d/init.d/httpd start
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.9 up
/sbin/route add default eth0
/bin/hostname -F /etc/sysconfig/HOSTNAM
b) 可以考虑添加一些其他的配置文件
生成镜像文件,测试
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1834111.html |
|