制作一个文件系统
BUSYBOX
- 构建基本文件系统目录 /dev /etc /lib /bin //usr /var /proc /sys /tmp /home /root /mnt /sbin /opt /media
- 使用busybox 构建 /bin /slib linuxrc 目录及文件>
编译busyBox download
https://developer.arm.com/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfigsetting - > build as a static binary (空格) - > cross-compile prefix- > username completion Fancy shell prompts Query cur position from terminal - 按 ‘/’ 可搜索。make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install cd _install && ls
- 构建lib 目录:拷贝交叉编译工具的 lib即可。
- 构建 etc 目录
1 ) 重要的文件 :
inittab :linuxrc的配置脚本
init.d/ rcS : inittab的第一个二进制汇编脚本。用于挂载系统必须的文件系统和必要的设备连接、设置ip地址、启动其他的开机任务脚本等 默认 的 mount -a
fstab : 执行 mount -a ,按照此文件挂载系统(by uuid tag-name)
profile:登陆shell后的脚本 系统环境,
2 ) cd etc 拷贝busybox/example/bootflooopy/etc/* ./ 拿到模板。
修改inittab 删除第三行代码 或者 见其他博客 具体修改id::这个子进程的控制台、runlevels、action、 process 等字段。修改etc/initial.d/rcS 文件linuxrc : 产生init进程 PID=1;initttab 启动的第一个进程为该脚本文件, init进程完成了从内核态向用户态的转变#!bin/sh #1.挂载系统 盘符/bin/mount -a#2. 配置 telnetd 服务器时 需要的文件夹以及文件系统创建 目录 /var/tmp ... /dev/pts...挂载临时目录系统 devpts....lib下创建 使用条件语句 用来创建文件夹 为驱动模块加载做准备创建设备节点 /sbin/mdev -s#3. 修改 /etc/fstab 文件 按照 实际的情况挂载 开机磁盘盘符及其格式挂在地址...#4. 修改 profiles文件 来初始化path环境变量 以及动态链接库的路径 #5. 用户名 密码 组信息 构建: /etc/passwd etc/group etc/shadow
-
其他目录保持不变即可。
ALL DONE ,base filesystem built ! -
构建镜像 构建虚拟磁盘 qemu 加载启动rootfs(以下内容需要修改 to do )
mkdir -p path
mknod path /mydev1 c 128 512
dd if=/media/.iso of=/dev/mydev1
制作镜像形式的rootfs并烧录运行
1、制作镜像形式的rootfs
(1)新建一个用于挂在的文件这里是ext2_rootfs,这里的count值一定要够用
dd if=/dev/zero of=rootfs.ext2 bs=1024 count=10240
losetup /dev/loop1 rootfs.ext2
ke2fs -m 0 /dev/loop1 10240
mount -t ext2 /dev/loop1 ./ext2_rootfs/
(2)向ext2_rootfs中复制内容
(3)卸载
umount /dev/loop1
losetup -d /dev/loop1
看待rootfs.ext2则制作成功
2、设置合适的bootargs并烧录镜像
bootargs为:set bootargs console=ttySAC2,115200 root=/dev/loop1 rw init=/linuxrc rootfstype=ext2
bootcmd=tftp 0x60003000 uImage;tftp 0x60500000 vexpress-v2p-ca9.dtb;setenv bootargs ‘root=/dev/loop1 rw nfsroot=192.168.33.145:/home/nfs,proto=tcp,nfsvers=4,nolock init=/linuxrc ip=192.168.33.144 console=ttyAMA0’;bootm 0x60003000 - 0x60500000;
BUILDROOT
make list-defconfigs ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- find -name "*" && ls configs | grep "your arch of CPU "make XXXX_deconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- target arch --> littleTarget Architecture Variant --> arm920t,内核类型Target packages --> cmake 工具等BootloaderskernelHost utilitiesmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-