|
[daiq]用busybox-1.15.3制作FS2410的文件系統(tǒng) (2010-01-14 23:15)
分類: BusyBox
目標(biāo)板(FS2410)------------------------------
CPU: S3C2410X SDRAM: HY57V561620(64MB) FLASH: K9F1208(64MB) NET : CS8900 -------------------------------------------
HOST--------------------------------------- Linux Version: RedHat LINUX 9 CrossCompiler: gcc-3.4.5-glibc-2.3.6 -------------------------------------------
移植步驟 1.建立root fs的文件系統(tǒng)所需的目錄和文件。
Mkdir /work/fs2410 Mkdir /work/fs2410/root 在work文件夾中建立基本的目錄 [daiq@localhost fs2410]$ tree root 5 root |-- bin |-- boot |-- dev |-- etc |-- home |-- lib | `-- modules |-- makedir |-- mnt | |-- data | |-- etc | |-- jffs2 | |-- temp | `-- yaffs |-- proc |-- root |-- sbin |-- sys |-- tmp |-- usr | |-- bin | |-- lib | `-- sbin `-- var |-- lib |-- lock |-- log |-- run `-- tmp 可以通過以下腳本文件來建立。 [daiq@localhost fs2410]$ vi makedir
運(yùn)行腳本文件makedir
[daiq@localhost fs2410]$ sh makedir 這樣在rootfs目錄下就會生成以上列出的文件。 2.準(zhǔn)備鏈接庫 (主要是拷貝交叉編譯環(huán)境下的一些文件)
[daiq@localhost fs2410]$ vi copelibs
3.使用busybox制作系統(tǒng)應(yīng)用程式 3.1 下載busybox-1.15.3(http://blog./link.php?url=http://www.busybox.net%2F)并解壓。
3.2 進(jìn)入解壓后的目錄,設(shè)置Busybox更改目錄下的Makefile文件。更改地方為:
ARCH ?= arm //根據(jù)需要設(shè)置不同的架構(gòu) CROSS_COMPILE ?=/work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu- //就是交叉編譯工具 3.3 然后進(jìn)入下面的工作:
[daiq@localhost busybox-1.15.3]$ make defconfig
[daiq@localhost busybox-1.15.3]$ make menuconfig 在設(shè)置過程中要注意的是加載根文件系統(tǒng)的安裝路徑(Busybox Settings ---> Installation Options ---> BusyBox installation prefix:/work/fs/rootfs) BusyBox Settings ---> Build Options: Build BusyBox as a static binary (no shared libs) : 將BusyBox動態(tài)鏈接或靜態(tài)連接.(不勾選,動態(tài)鏈接) 選擇"Busybox Settings" ==> "Installation Options"選中"[*] Don't use /usr"
選擇"Additional CFLAGS"輸入如下一行參數(shù)(該行參數(shù)來源于2.6.30.4內(nèi)核) -DSYS_ioprio_get=0x90013b -DSYS_ioprio_set=0x90013a -DARPHRD_INFINIBAND=32 -DEV_SW=0x05 -DSW_LID=0x00 Network File Systems --->
<*> NFS file system support [*] Provide NFSv3 client support [*] Provide client support for the NFSv3 ACL protocol extension [*] Provide NFSv4 client support (EXPERIMENTAL) [*] Root file system on NFS 好了退出保存就ok了. [daiq@localhost busybox-1.15.3]$ make
[daiq@localhost busybox-1.15.3]$ file busybox busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped
[daiq@localhost busybox-1.15.3]$ make install 4.以root身份建立節(jié)點(diǎn)文件/dev/console, /dev/null [root@localhost rootfs]# mknod -m 600 dev/console c 5 1 [root@localhost rootfs]# mknod -m 666 dev/null c 1 3 5. 為shell加入全局變量文件/etc/profile,內(nèi)容如下: [daiq@localhost rootfs]$ vi etc/profile
6. 增加初始化文件inittab和fstab [daiq@localhost rootfs]$ vi etc/fstab
[daiq@localhost rootfs]$ vi etc/inittab
7. 增加初始化腳本文件。 [daiq@localhost rootfs]$ mkdir etc/init.d [daiq@localhost rootfs]$ vi etc/init.d/rcS
[daiq@localhost rootfs]$ chmod +x etc/init.d/rcS
8.建立主機(jī)名存儲文件/etc/host [daiq@localhost rootfs]$ vi etc/host
9.建立文件/etc/mdev.conf,內(nèi)容為空 [daiq@localhost rootfs]$ vi etc/mdev.conf 10.復(fù)制主機(jī)/etc/下面的文件passwd, group, shadow文件到/etc [daiq@localhost rootfs]$ su -
[root@localhost rootfs]# cp /etc/group etc/ [root@localhost rootfs]# cp /etc/passwd etc/ [root@localhost rootfs]# cp /etc/shadow etc/ 并修改用戶passwd中用戶使用的shell名稱。FC8上默認(rèn)的為bash,uboot中只支持ash。 root:x:0:0:root:/root:/bin/bash --> root:x:0:0:root:/root:/bin/ash daiq:x:500:500:daiq:/home/daiq:/bin/bash --> daiq:x:500:500:daiq:/home/daiq:/bin/ash ok,所需要的文件都已經(jīng)建立ok了 [daiq@localhost rootfs]$ ls etc/ fstab group host init.d inittab mdev.conf passwd profile shadow 11.yaffs文件系統(tǒng)映像的制作 使用mkyaffsimg程序可以把一個(gè)目錄做成一個(gè)yaffs映像文件,然后使用usb下載到 板子上。進(jìn)入文件系統(tǒng)目錄層,使用以下命令。 #mkyaffsimg rootfs rootfs.img (進(jìn)入yaffs2\utils后 make 可以生成這個(gè)工具) 這樣就會在該目錄下生成rootfs.img映像文件,下載到開發(fā)板運(yùn)行即可。 12.編譯linux內(nèi)核支持文件系統(tǒng)
12.1支持NFS掛載根文件系統(tǒng)
內(nèi)核支持NFS分區(qū)(即編譯時(shí)在File system中選中[*] Root file system on NFS), 以及支持內(nèi)核IP_PNP(即編譯時(shí)在Networking中選中[*] IP: kernel level autoconfiguration)
File systems ---> Network File Systems ---> <*> NFS file system support ## 必選 [*] Provide NFSv3 client support ## 可選 [*] Root file system on NFS ## 必選 Networking ---> [*] Networking support Networking options ---> [*] IP: kernel level autoconfiguration ## 必選 12.2支持cramfs、jffs、yaffs文件系統(tǒng)
在這里不詳細(xì)說明,請自行參考其他文檔資料。
13.uboot啟動引導(dǎo)文件系統(tǒng)
13.1支持NFS掛載根文件系統(tǒng)uboot環(huán)境變量設(shè)置
tftp下載內(nèi)核NFS掛載根文件系統(tǒng)的串口信息(以供參考):
13.2支持cramfs、jffs、yaffs文件系統(tǒng)uboot環(huán)境變量設(shè)置 yaffs2:
修改制作yaffs映象文件的工具
在 yaffs 源碼中有個(gè) utils 目錄,里面是工具 mkyaffsimage 和 mkyaffs2image的源代碼,前者用來制作 yaffs1 映象文件,后者用來制作 yaffs2 映象文件。目前 mkyaffsimage 工具只能生成老格式的yaffs1 映象文件,需要修改才能支持新格式。
(1)下載的yaffs2解壓出來是這樣的一個(gè)目錄/Development下面有兩個(gè)文件夾:yaffs yaffs2,我們需要進(jìn)入yaffs2,然后再進(jìn)入utils,這個(gè)下面有3個(gè)文件,我們需要加兩個(gè)文件,nand-ecc.c yaffs_packedtags1.c ,yaffs_packedtags1.c這個(gè)文件是從上一節(jié)目錄拷貝過來的,nand-ecc.c的原碼如下:
在mkyaffsimage.c里邊修改原碼為:
修改Makefile文件:
MKYAFFSSOURCES = mkyaffsimage.c yaffs_packedtags1.c nand-ecc.c
yaffs_packedtags1.c和nand-ecc.c是我們加上去的
這樣我們就可以用make命令來生成工具文件了:mkyaffsimage 和mkyaffs2image
現(xiàn)在我們來制作鏡象文件,把目錄轉(zhuǎn)到我們文件系統(tǒng)的文件夾上一個(gè)目錄,我是轉(zhuǎn)到根目錄,因?yàn)槲沂窃诟夸泟?chuàng)建了filesystem_install目錄,為了方便用mkyaffsimage命令,我們直接把mkyaffsimage拷貝到根目錄的bin里邊,這樣這個(gè)命令就可以用了,這樣我們就可以用下面的命令來生成鏡象文件了:mkyaffsimage filesystem_install (自己命個(gè)名字給鏡象文件,但是后綴一定是yaffs,比如:myyaffs.yaffs),
這樣我們就全部搞定了一個(gè)根文件系統(tǒng)yaffs,這樣我們就可以下載的板上面去測試,我這樣的做的,是完全成功的,在環(huán)境變量里邊還有設(shè)置個(gè)變量:bootargs=noinitrd console=ttySAC0 root=/dev/mtdblock2 rootfstype=yaffs到此為止,全部搞定。 附注
第2步中使用到的參數(shù)原始定義如下:
(未完待續(xù)。。。)
文章參考:
http://blog./u3/108239/showart.php?id=2146079
http://blog./u2/63560/showart_518011.html
http://linux./techdoc/develop/2007/12/05/973747.shtml
|
|
|