偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1748)
分类: LINUX
2009-02-19 15:02:34
# 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。 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 /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) 可以考虑添加一些其他的配置文件 生成镜像文件,测试
/etc/rc.d/init.d/httpd start