#tar zxvf busybox-1.00.tar.gz #cd busybox-1.00 //进入配置菜单 #make TARGET_ARCH=i386 CROSS=i386-linux- PREFIX=${PRJROOT}/rootfs menuconfig //建立依存关系 #make TARGET_ARCH=i386 CROSS= i386-linux- PREFIX=${PRJROOT}/rootfs dep //编译 #make TARGET_ARCH=i386 CROSS= i386-linux- PREFIX=${PRJROOT}/rootfs //安装 #make TARGET_ARCH=i386 CROSS= i386-linux- PREFIX=${PRJROOT}/rootfs install # cd ${PRJROOT}/rootfs/bin # ls addgroup busybox chown delgroup echo kill ls mv ping rm sleep adduser chgrp cp deluser grep ln mkdir netstat ps rmdir umount ash chmod date dmesg hostname login mount pidof pwd sh vi 一下子多了这么多命令…… 配置busybox的说明: A、如果编译时选择了: Runtime SUID/SGID configuration via /etc/busybox.conf 系统每次运行命令时,都会出现“Using fallback suid method ” 可以将它去掉,不过我还是在/etc为其建了一个文件busybox.conf搞定; B、[*] Do you want to build BusyBox with a Cross Compiler? (i386-linux-gcc) Cross Compiler prefix 这个指明交叉编译器名称(其实在编译时的命令行已指定过了……) C、安装选项下的(${PRJROOT}/rootfs) BusyBox installation prefix,这个指明了编译好后的工具的安装目录。 D、静态编译好还是动态编译好?即是否选择 [ ] Build BusyBox as a static binary (no shared libs) 动态编译的最大好处是节省了宝贵空间,一般来说都是用动态编译,不过我以前动态编译出过问题(其实是库的问题,不关busybox的事),出于惯性,我选择了静态编译,为此多付出了107KB的空间。 E、其它命令,根据需要,自行权衡。 6、系统初始化文件 内核启动时,最后一个初始化动作就是启动init程序,当然,大多数发行套件的Linux都使用了与System V init相仿的init,可以在网上下载System V init套件,下载下来交叉编译。另外,我也找到一篇写得非常不错的讲解如何编写初始化文件的文件,bsd-init,回头附在后面。不过,对于嵌入式系统来讲,BusyBox init可能更为合适,在第6步中选择命令的时候,应该把init编译进去。 #cd ${PRJROOT}/rootfs/etc #vi inittab 我的inittal文件如下: #指定初始化文件 ::sysinit:/etc/init.d/rcS #打开一个串口,波特率为9600 ::respawn:/sbin/getty 9600 ttyS0 #启动时执行的shell ::respawn:/bin/sh #重启时动作 ::restart:/sbin/init #关机时动作,卸载所有文件系统 ::shutdown:/bin/umount -a –r 保存退出; 再来编写rcS脚本: #mkdir ${PRJROOT}/rootfs/etc/init.d #cd ${PRJROOT}/rootfs/etc/init.d #vi rcS 我的脚本如下: #!/bin/sh #Set Path PATH=/sbin:/bin export PATH syslogd -m 60 klogd #install /proc mount -n -t proc none /proc #reinstall root file system by read/write mode(need: /etc/fstab) mount -n -o remount,rw / #reinstall /proc mount -n -o remount,rw -t proc none /proc #set lo ip address ifconfig lo 127.0.0.1 #set eth0 ip address #当然,这样子做只是权宜之计,最后做的应该是在这一步引导网络启动脚本,像RedHat #那样,自动读取所有指定的配置文件来启动 ifconfig eth0 192.168.0.68 netmask 255.255.255.0 #set route #同样的,最终这里应该是运行启动路由的脚本,读取路由配置文件 route add default gw 192.168.0.1 #还差一个运行服务程序的脚本,哪位有现成的么? #网卡/路由/服务这三步,事实上可以合在一步,在rcS这一步中,做一个循环,运行指定启动目录下的所有脚,先将就着这么做吧,确保系统能够正常启动了,再来写这个脚本。 #set hostname hostname MyLinux 保存退出。 编写fstab文件 #vi fstab 我的fstab很简单: /dev/hda1 / ext2 defaults 1 1 none /proc proc defaults 0 0 第五章 让MyLinux能够启动
本新闻共 6页,当前在第 5页 1 2 3 4 5 6 |