300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 构建根文件系统之busybox(三)最小根文件系统

构建根文件系统之busybox(三)最小根文件系统

时间:2023-05-06 10:03:37

相关推荐

构建根文件系统之busybox(三)最小根文件系统

目录

busybox(三)最小根文件系统引入构建终端构造inittab配置应用程序构建C库制作映像文件yaffs

busybox(三)最小根文件系统

引入

busybox(一)浅析中,得出结论,一个最小的根文件系统需要以下几个元素

dev/consoledev/null sbin/init-------------busybox提供,至少需要这个应用程序,这是linux启动的第一个应用程序etc/inittab-----------配置文件,定义了一些应用程序 配置文件制定的应用程序----配置文件指定的应用程序C库--------------------应用程序的C库

构建终端

首先来创建标准输入输出错误以及其他输出定位

dev/consoledev/null

查看下Linux下的这两个文件的属性

book@book-desktop:~/stu/first_fs$ ls -l /dev/null /dev/consolecrw------- 1 root root 5, 1 -11-14 18:00 /dev/consolecrw-rw-rw- 1 root root 1, 3 -11-14 17:59 /dev/null

这里插入一下,普通的ls -l文件信息如下,由此可以看到这两个文件是字符设备

使用mknod来创建字符设备或者块设备,格式如下:

mknod(选项)(参数)选项-Z:设置安全的上下文;-m:设置权限模式;-help:显示帮助信息;--version:显示版本信息。参数文件名:要创建的设备文件名;类型:指定要创建的设备文件的类型;主设备号:指定设备文件的主设备号;次设备号:指定设备文件的次设备号。

创建设备

mkdir devcd devsudo mknod console c 5 1sudo mknod null c 1 3book@book-desktop:~/stu/first_fs/dev$ ls -ltotal 0crw-r--r-- 1 root root 5, 1 -11-14 18:29 consolecrw-r--r-- 1 root root 1, 3 -11-14 18:35 null

构造inittab

如果不构造,会使用默认的配置项[参见busybox(一)浅析],默认的路径在"/etc/inittab,参见busybox浅析

::CTRLALTDEL:reboot::SHUTDOWN:umount -a -r::RESTART:init::ASKFIRST:-/bin/sh:tty2::ASKFIRST:-/bin/shtty3::ASKFIRST:-/bin/shtty4::ASKFIRST:-/bin/sh::SYSINIT:/etc/init.d/rcS

手动构造一个简单的脚本列表在etc下,将标准输入,输出,错误定位到console

console::askfirst:-bin/shmkdir etcvi etc/inittab

配置应用程序

我们在inittab并没有使用自定义的用户程序,也就不需要配置,跳过

构建C库

拷贝所有的.so文件,cp命令中使用-d的目的是:假设源文件为链接格式,那么cp的对象也是链接格式的,没有复制源文件.查看下我们当前的gcc目录,.a表示静态库不需要,使用-d来拷贝.cp命令浅析

注意这里的源目录是在arm-linux/lib/

book@book-desktop:~/stu/first_fs$ which arm-linux-gcc/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gccmkdir libcp /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so* lib -d

制作映像文件yaffs

这里使用yaffs2映像格式,工具包是yaffs_source_util_larger_small_page_nand.tar,这是老师制作好的工具,支持大页和小页的NandFlash.yaffs1支持小页格式(512字节),我们的NANDFLASH是2048字节,使用大页模式,使用yaffs2,可执行文件是mkyaffs2image

tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2 book@book-desktop:~/stu$ cd Development_util_ok/book@book-desktop:~/stu/Development_util_ok$ lsyaffs yaffs2

编译代码

cd yaffs2/utils/make

查看下工具mkyaffs2image

book@book-desktop:~/stu/Development_util_ok/yaffs2/utils$ ls -ltotal 132-rw------- 1 book book 1770 -07-08 00:35 Makefile-rwxr-xr-x 1 book book 18266 -11-14 19:02 mkyaffs2image-rw------- 1 book book 19669 -07-08 00:36 mkyaffs2image.c-rw-r--r-- 1 book book 9412 -11-14 19:02 mkyaffs2image.o-rwxr-xr-x 1 book book 18126 -11-14 19:02 mkyaffsimage-rw------- 1 book book 16206 -02-29 10:26 mkyaffsimage.c-rw-r--r-- 1 book book 8168 -11-14 19:02 mkyaffsimage.o-rw------- 1 book book 6731 -02-29 10:26 nand_ecc.c-rw-r--r-- 1 book book 1776 -11-14 19:02 nand_ecc.olrwxrwxrwx 1 book book 14 -11-14 19:02 yaffs_ecc.c -> ../yaffs_ecc.c-rw-r--r-- 1 book book 2496 -11-14 19:02 yaffs_ecc.o-rw------- 1 book book 1416 -02-29 10:26 yaffs_packedtags1.c-rw-r--r-- 1 book book 1216 -11-14 19:02 yaffs_packedtags1.olrwxrwxrwx 1 book book 22 -11-14 19:02 yaffs_packedtags2.c -> ../yaffs_packedtags2.c-rw-r--r-- 1 book book 2160 -11-14 19:02 yaffs_packedtags2.olrwxrwxrwx 1 book book 23 -11-14 19:02 yaffs_tagsvalidity.c -> ../yaffs_tagsvalidity.c-rw-r--r-- 1 book book 822 -11-14 19:02 yaffs_tagsvalidity.o

貌似新的ubuntu中的工具over了,直接使用制作好的mkyaffs2image

sudo cp mkyaffs2image /usr/local/binsudo chmod +x /usr/local/bin/mkyaffs2image

直接输入mkyaffs2image查看帮助

book@book-desktop:~/stu/Development_util_ok/yaffs2/utils$ mkyaffs2imagemkyaffs2image: image building tool for YAFFS2 built Nov 14 usage: mkyaffs2image dir image_file [convert]dir the directory tree to be convertedimage_file the output file to hold the image'convert' produce a big-endian image from a little-endian machine

制作映像,在当前目录生成yaffs2文件

mkyaffs2image first_fs first_fs.yaffs2

使用dnw烧入,启动后输入回车然后有提示,这个和我们设置的脚本类型为askfirst,是一致的,等待回车后执行

Please press Enter to activate this console. 等待输入回车starting pid 763, tty '/dev/console': 'bin/sh'

转载:/zongzi10010/p/10023717.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。