将busybox-1.22.1.tar.bz2移动到linux共享文件夹
tar xvf busybox-1.22.1.tar.bz2 -C /root //在linux中解压
cd busybox-1.22.1/ //进入源码目录
make menuconfig //配置源码,此时注意终端窗口大小和字体,过小不可运行
Busybox Settings—>
Build Options —>
Cross Compiler prefix
输入:arm-none-linux-gnueabi- //前缀
//ok 保存退出
make //编译
make install //busybox默认安装路径为源码目录下的_install
cd _install //进入安装目录
ls
//会看到 bin linuxrc sbin usr
rm /rootfs/* //删除rootfs原有文件及文件夹
cp * /rootfs //把_install下全部文件及文件夹拷贝到 /rootfs
cd /rootfs
mkdir dev etc mnt proc var tmp sys root //创建其他文件夹
cp ~/gcc/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib . -a
//将工具链中的库拷贝到/rootfs目录下
rm lib/.a //删除静态库
arm-none-linux-gnueabi-strip lib/ //删除共享文件夹中的符号表
du -mh lib/ //删除不需要的库,确保所有库大小不超过8M,为后面制作镜像文件做准备
vim /etc/inittab //添加系统启动文件并编辑
------------------------------filename: /rootfs/etc/inittab------------------------------------------
#this is run first excpept when booting in single-user mode.
::sysinit:/etc/init.d/rcS //开机执行脚本
#bin/sh invocations on selected ttys
#start an "askfirst" shell on the console(whatever that may be)
::askfirst:-/bin/sh //开机询问
#stuff to do when restarting the init process
::restart:/sbin/init //重启...
#stuff to do before rebooting
::ctrlaltdel:/sbin/reboot //...
--------------------------------------------------------------------------
vim fstab //在etc目录下添加文件fstab并编辑
-----------------------------filename: /rootfs/etc/fstab---------------------------------------------
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
//proc是内核信息 sys驱动程序信息
// /proc目录下挂载proc文件系统之后才能进行内核交互
--------------------------------------------------------------------------
mkdir init.d //在etc目录下创建init.d目录
cd init.d
mkdir rcS //在init.d目录下创建rcS脚本文件
-----------------------------filename: /rootfs/etc/init.d/rcS---------------------------------------------
#!/bin/sh
#This is the first script called by init process
/bin/mount -a
//fstab里面的东西自动挂载好
echo /sbin/mdev > /proc/sys/kernel/hotplug
//告诉内核一些信息,可以对某些信息进行设置和修改
// /sbin/mdev扫描系统上的设备,在/dev目录下进行设备文件增删
/sbin/mdev -s
//告诉内核如果发生热插拔时间,就调用/sbin/mdev来扫描系统
--------------------------------------------------------------------------
chmod 777 rcS //让脚本文件可执行
vim /rootfs/etc/profile //在etc目录下创建profile文件
-----------------------------filename: /rootfs/etc/profile---------------------------------------------
#!/bin/sh
export HOSTNAME=root
export USER=hll
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
--------------------------------------------------------------------------
cd ~ //进入root用户主目录
dd if=/dev/zero of=ramdisk bs=1k count=8192 //制作一个大小为8M的镜像文件
mkfs.ext2 -F ramdisk //格式化这个镜像文件为ext2
mkdir /mnt/inidrd //在mount下面创建initrd目录为挂载点
mount -t ext2 ramdisk /mnt/initrd //将这个磁盘镜像文件挂载到/mnt/initrd目录下
//注意这里的ramdisk不能存放在rootfs目录中
cp /rootfs/* /mnt/initrd -a //将测试好的文件树内容拷贝到/mnt/initrd目录下
umount /mnt/initrd //卸载initrd
gzip --best -c ramdisk > ramdisk.gz /压缩ramdisk为ramdisk.gz并输出重定向到ramdisk.gz
mkimage -n “ramdisk” -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img
//格式化为uboot识别的格式 此时产生ramdisk.img文件
cp ramdisk.img /tftpboot //拷贝到共享文件夹中
启动超级终端,板子上电,进入emmc模式启动
在板子终端按上输入
setenv bootcmd tftp 41000000 uImage; tftp 42000000 exynos4412-fs4412.dtb; tftp 43000000 ramdisk.img; bootm 41000000 43000000 42000000
saveenv
重启板子输入printenv查看是否生效
tftp 41000000 uImage //在共享文件夹中通过网线下载内核文件
movi write kernel 41000000 //往磁盘中写入内核文件内容
tftp 42000000 exynos4412-fs4412.dtb //下载设备树文件
movi write dtb 4200000 //往磁盘中写入设备树文件内容
tftp 43000000 ramdisk.img //下载linux根文件
movi write rootfs 43000000 300000 //往磁盘中写入linux根文件系统文件内容
//把跟文件系统镜像写到43000000
重启板子
movi read kernel 41000000
movi read dtb 42000000
movi read rootfs 43000000 300000
bootm 41000000 43000000 42000000
此时就不需要每次都去下载文件啦,这个系统所需文件都存储在了emmc磁盘上面,可以通过
相关命令直接读取启动系统