构建根文件系统之busybox(三)最小根文件系统
目錄
- busybox(三)最小根文件系統
- 引入
- 構建終端
- 構造inittab
- 配置應用程序
- 構建C庫
- 制作映像文件yaffs
busybox(三)最小根文件系統
引入
在busybox(一)淺析中,得出結論,一個最小的根文件系統需要以下幾個元素
dev/console dev/null sbin/init-------------busybox提供,至少需要這個應用程序,這是linux啟動的第一個應用程序 etc/inittab-----------配置文件,定義了一些應用程序 配置文件制定的應用程序----配置文件指定的應用程序 C庫--------------------應用程序的C庫構建終端
首先來創建標準輸入輸出錯誤以及其他輸出定位
dev/console dev/null查看下Linux下的這兩個文件的屬性
book@book-desktop:~/stu/first_fs$ ls -l /dev/null /dev/console crw------- 1 root root 5, 1 2018-11-14 18:00 /dev/console crw-rw-rw- 1 root root 1, 3 2018-11-14 17:59 /dev/null這里插入一下,普通的ls -l文件信息如下,由此可以看到這兩個文件是字符設備
使用mknod來創建字符設備或者塊設備,格式如下:
mknod(選項)(參數) 選項-Z:設置安全的上下文;-m:設置權限模式;-help:顯示幫助信息;--version:顯示版本信息。 參數文件名:要創建的設備文件名;類型:指定要創建的設備文件的類型;主設備號:指定設備文件的主設備號;次設備號:指定設備文件的次設備號。創建設備
mkdir dev cd dev sudo mknod console c 5 1 sudo mknod null c 1 3book@book-desktop:~/stu/first_fs/dev$ ls -l total 0 crw-r--r-- 1 root root 5, 1 2018-11-14 18:29 console crw-r--r-- 1 root root 1, 3 2018-11-14 18:35 null構造inittab
如果不構造,會使用默認的配置項[參見busybox(一)淺析],默認的路徑在"/etc/inittab,參見busybox淺析
::CTRLALTDEL:reboot ::SHUTDOWN:umount -a -r ::RESTART:init ::ASKFIRST:-/bin/sh: tty2::ASKFIRST:-/bin/sh tty3::ASKFIRST:-/bin/sh tty4::ASKFIRST:-/bin/sh ::SYSINIT:/etc/init.d/rcS手動構造一個簡單的腳本列表在etc下,將標準輸入,輸出,錯誤定位到console上
console::askfirst:-bin/shmkdir etc vi 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 lib cp /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$ ls yaffs yaffs2編譯代碼
cd yaffs2/utils/ make查看下工具mkyaffs2image
book@book-desktop:~/stu/Development_util_ok/yaffs2/utils$ ls -l total 132 -rw------- 1 book book 1770 2008-07-08 00:35 Makefile -rwxr-xr-x 1 book book 18266 2018-11-14 19:02 mkyaffs2image -rw------- 1 book book 19669 2008-07-08 00:36 mkyaffs2image.c -rw-r--r-- 1 book book 9412 2018-11-14 19:02 mkyaffs2image.o -rwxr-xr-x 1 book book 18126 2018-11-14 19:02 mkyaffsimage -rw------- 1 book book 16206 2008-02-29 10:26 mkyaffsimage.c -rw-r--r-- 1 book book 8168 2018-11-14 19:02 mkyaffsimage.o -rw------- 1 book book 6731 2008-02-29 10:26 nand_ecc.c -rw-r--r-- 1 book book 1776 2018-11-14 19:02 nand_ecc.o lrwxrwxrwx 1 book book 14 2018-11-14 19:02 yaffs_ecc.c -> ../yaffs_ecc.c -rw-r--r-- 1 book book 2496 2018-11-14 19:02 yaffs_ecc.o -rw------- 1 book book 1416 2008-02-29 10:26 yaffs_packedtags1.c -rw-r--r-- 1 book book 1216 2018-11-14 19:02 yaffs_packedtags1.o lrwxrwxrwx 1 book book 22 2018-11-14 19:02 yaffs_packedtags2.c -> ../yaffs_packedtags2.c -rw-r--r-- 1 book book 2160 2018-11-14 19:02 yaffs_packedtags2.o lrwxrwxrwx 1 book book 23 2018-11-14 19:02 yaffs_tagsvalidity.c -> ../yaffs_tagsvalidity.c -rw-r--r-- 1 book book 822 2018-11-14 19:02 yaffs_tagsvalidity.o貌似新的ubuntu中的工具over了,直接使用制作好的mkyaffs2image
sudo cp mkyaffs2image /usr/local/bin sudo chmod +x /usr/local/bin/mkyaffs2image直接輸入mkyaffs2image查看幫助
book@book-desktop:~/stu/Development_util_ok/yaffs2/utils$ mkyaffs2image mkyaffs2image: image building tool for YAFFS2 built Nov 14 2018 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'轉載:https://www.cnblogs.com/zongzi10010/p/10023717.html?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的构建根文件系统之busybox(三)最小根文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构建根文件系统之busybox(二)编译
- 下一篇: 构建根文件系统之busybox(四)完善