本帖最后由 apple_9938 于 2018-7-10 14:03 编辑
1 获取源码 1、下载busybox源码,下载链接 http://busybox.net/downloads/ ,我用的是1.28.0
2、解压压缩文件 tar -xvjf busybox-1.28.0.tar.bz2
3、进入源码目录
2 配置编译busybox
1、修改顶层Makefile 文件, ARCH ?= 改为 ARCH ?= arm ;; CROSS_COMPILE ?= 改为 CROSS_COMPILE ?= arm-linux-gnueabi-
2、make defconfig
3、make menucnfig
选择“Querycursor position from terminal”是的编译出的busybox的shell命令支持显示当前路径及主机信息
4、执行 make ; make install 命令 默认在busybox源码目录下生成一个_install目录,_install 目录下有三个文件 bin sbin linuxsrc
bin包含用户工具,其中,busybox可执行文件就在这个目录 下,该目录下其他所有文件都是指向busybox的符号链接
sbin目录包含操作系统工具,同样也指向busybox。
linuxrc是一个链接文件,指向busybox。
执行make命令出现的错误参考http://blog.csdn.net/chuanzhilong/article/details/51815988 进行修改
3、在虚拟机上建立自己的根文件目录
1、建立自己的文件目录rootfs
2、拷贝_install 目录中的文件到rootfs 切记一定要带上-a的参数,因为bin目录里大部分都是链接,如果不带-a的参数,拷过去之后会做相应的复制,不再是链接的形式 cp -ra ../busybox-1.28.0/_install/* ./
3、example/bootflop下的etc文件拷贝到rootfs目录下 带上 -a参数
修改inittab
原始文件为:
1 ::sysinit:/etc/init.d/rcS
2 ::respawn:-/bin/sh
3 tty2::askfirst:-/bin/sh
4 ::ctrlaltdel:/bin/umount -a -r
修改后为:
---(1):开机免登陆,直接打开shell(前面数字为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 #::respawn:-/bin/login
4 console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
---(2):开机需要登陆(前面数字为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 ::respawn:-/bin/login
4 #console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
4、在rootfs目录下新建 root dev tmp var sys proc lib mnt home opt 目录
5、在dev目录下添加基本设备文件 mknod -m 660 /dev/console c 5 1 ; mknod -m 660 /dev/null c 1 3
6、拷贝linux源码目录上的passwd、group、shadow、fstable文件到etc目录下,只保留root行:
1) passwd内容: root:x:0:0:root:/root:/bin/sh
group内容:root:x:0:
2)shadow内容 :root1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::
3)修改profile
PATH=/bin:/sbin:/usr/bin:/usr/sbin //可执行程序 环境变量
export LD_LIBRARY_PATH=/lib:/usr/lib //动态链接库 环境变量
/bin/hostname osee
USER="`id -un`"
LOGNAME=$USER
HOSTNAME='/bin/hostname'
PS1='[\u@\h \W]# ' //显示主机名、当前路径等信息:
4)修改 etc/init.d/rc.S文件
/bin/mount -n -t ramfs ramfs /var
/bin/mount -n -t ramfs ramfs /tmp
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none /dev
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
/bin/mkdir -p /dev/pts //telnet服务需要
/bin/mkdir -p /dev/shm //telnet服务需要
#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自动挂载需要
/sbin/mdev -s //启动mdev在/dev下自动创建设备文件节点
/bin/mount -a
#######配置网络################################
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 192.168.1.70
/sbin/ifconfig eth0 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth0
/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth1
5)修改etc/fstab文件,增加以下文件
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
7、将交叉编译工具中的lib库复制到根文件目录相应的目录lib中
4、生成文件系统
将rootfs目录打包成UBIFS文件包,烧入电路板中测试
#tar –czvf../rootfs.tar.gz *
参考 :http://www.cnblogs.com/sky-heaven/p/5688100.html
|