1. 配置編譯並安裝busybox文件系統(http://www.linuxidc.com/Linux/2011-08/40704.htm)
假設 pwd 得到 /timkyle-dev/techer/arm11-resources/
a.解壓busybox包
#tar xf busybox-1.17.2.tar.bz2
得到busybox-1.17.2文件夾
b.編譯busybox
#cd busybox-1.17.2
#make menuconfig
/Busybox Settings
/Build Options
/Build BusyBox as a static binary (no shared libs)
/(arm-none-linux-gnueabi-) Cross Compiler prefix
/Busybox Library Tuning
#make clean
#make
c.安裝busybox文件系統
#make install
則文件系統安裝在當前的_install文件夾下
d.拷貝整個文件系統到應該作為文件系統的文件夾
創建一個文件夾作為文件系統用
#mkdir -p /timkyle-dev/my/arm/newnfs
拷貝busybox制作出來的文件到自己的文件系統裡
#cp ./_install/* /timkyle-dev/my/arm/newnfs/ -rf
2. 配置NFS服務
a.配置NFS服務允許訪問的目錄路徑及權限
#vim /etc/exports
增加一行:
/timkyle-dev/my/arm/newnfs *(rw)
b.設置NFS服務開機即啟動
#chkconfig --level 2345 nfs on
c.重啟NFS服務
#service nfs restart
d.查看NFS服務是否啟動成功
#chkconfig --list
結果如下:
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#showmount -e 192.168.1.10
結果如下:
Export list for 192.168.1.10:
/timkyle-dev/my/arm/newnfs *
e.修改文件系統文件夾的權限
#chmod 777 /timkyle-dev/my/arm/newnfs/
3. 配置u-boot給內核啟動的參數
a.啟動開發板進入u-boot狀態,運行如下
配置內核啟動參數
$setenv bootargs "root=/dev/nfs nfsroot=192.168.1.10:/disk2/newnfs ip=192.168.1.20 console=ttySAC0,115200"
保存配置
$saveenv
重啟
$reset
最後停留在如下:
Freeing init memory: 140K
Warning: unable to open an initial console.
4. 完善文件系統
a.進入文件系統對應文件夾
#cd /timkyle-dev/my/arm/newnfs/
b.增加文件夾dev及創建控制台設備
#mkdir dev
控制台:字符設備,主設備號5,次設備號1
#mknod dev/console c 5 1
c.修改啟動腳本
#mkdir -p etc/init.d
#mkdir -p sys/class
#vim etc/init.d/rcS
增加以下內容:
mount -t ramfs none /dev
mount -t sysfs none /sys
/sbin/mdev -s
#chmod 777 etc/init.d/rcS
#vim etc/profile
增加以下內容:
export PS1="root@timkyle \W#"
d.拷貝arm-linux-gcc程序用的庫文件
#cp -rf /timkyle-dev/techer/arm11-resources/arm-4.3.2/arm-none-linux-gnueabi/libc/lib/ ../newnfs/
e.重啟開發板,則能進入nfs文件系統
Please press Enter to activate this console.
看到上句後,直接按回車鍵即可進入NFS的文件系統
5. 打包文件系統
a.查看內核分區信息表
#vim /timkyle-dev/techer/arm11-resources/linux-2.6.28_smdk6410/arch/arm/plat-s3c/include/plat/partition.h
有如下信息:
struct mtd_partition s3c_partition_info[] = {
{
.name = "Bootloader",
.offset = 0,
.size = (256*SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "Kernel",
.offset = (256*SZ_1K),
.size = (4*SZ_1M) - (256*SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
#if defined(CONFIG_SPLIT_ROOT_FILESYSTEM)
{
.name = "Rootfs",
.offset = (4*SZ_1M),
.size = (80*SZ_1M),//(48*SZ_1M),
},
#endif
{
.name = "File System",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};
b.在u-boot命令狀態下
擦除nandflash
$nand erase 0x300000 0xfd00000
查看壞塊信息
$nand bad
c.打包文件系統內容
#cd /timkyle-dev/my/arm/newnfs/
#tar cf nfs.tar *
得到nfs.tar壓縮包
6. 把文件系統燒寫進nandflash裡(通過內核的mtd層)
a.通過開發板進入系統
Please press Enter to activate this console.
看到上句後,直接按回車鍵即可進入NFS的文件系統
b.通過mtd層把系統寫到nandflash裡
$mkdir /mnt
$mount -t yaffs /dev/mtdblock3 /mnt
7. 保存各種內核啟動參數
a.保存內核啟動參數(nfs系統)
$setenv nfsboot $bootargs
b.內核啟動參數配置為nandflash系統
$setenv bootargs "root=/dev/mtdblock3 ip=192.168.1.20 console=ttySAC0,115200"
$setenv nandboot $bootargs
$saveenv
$reset
c.內核啟動參數配置為nfs系統
$setenv bootargs $nfsboot
$saveenv
$reset
相關閱讀:
嵌入式系統搭建之一U-Boot移植 http://www.linuxidc.com/Linux/2012-02/54020.htm
嵌入式系統搭建之二內核移植 http://www.linuxidc.com/Linux/2012-02/54021.htm
U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm