點擊(此處)折疊或打開 List of all partitions: 1f00 384 mtdblock0 (driver?) 1f01 128 mtdblock1 (driver?) 1f02 5120 mtdblock2 (driver?) 1f03 1042944 mtdblock3 (driver?)
燒寫文件系統(tǒng)、測試fs_mini_mdev.yaffs2<該文件系統(tǒng)來自韋東山老師的教程># tftp 32000000 fs_mini_mdev.yaffs2# nand erase.part root# nand write.yaffs 32000000 0x580000 $filesize測試# set bootargs console=ttySAC0,115200 root=/dev/mtdblock3# setenv bootcmd 'tftp 32000000 uImage_3.4.2;bootm 32000000'# boot結(jié)果:No filesystem could mount root, tried: ext3 ext2 cramfs vfat msdos iso9660 romfs測試jffs2 # tftp 32000000 fs_mini_mdev.jffs2# nand erase.part root# nand write.jffs2 32000000 580000 $filesize# set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2# boot不能使用2.2 制作根文件系統(tǒng) ① 編譯安裝busybox編譯 busybox-1.20.0.tar.bz2# tar xjvf busybox-1.20.0.tar.bz2# cd busybox-1.20.0# make menuconfigBusybox Settings ---> Build Options ---> () Cross Compiler prefix 填入arm-linux- 保存、退出,執(zhí)行make# make創(chuàng)建文件系統(tǒng)目錄# cd /work/nfsroot# mkdir fs_mini_mdev_new安裝# make install CONFIG_PREFIX=/work/nfsroot/fs_mini_mdev_new② 安裝libc庫,使用arm-linux-gcc 4.3.2 中的庫文件# cd /work/nfsroot/fs_mini_mdev_new# mkdir lib# cd lib# cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* ./ -d # cd ../# mkdir usr/lib -p# cd usr/lib# cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* ./ -d③ 構(gòu)建etc目錄 # cp -rf ../fs_mini_mdev/etc ./修改inttab# vim inittab將s3c2410_serial0改為console④ 構(gòu)建dev目錄 # mkdir dev# cd dev# mknod console c 5 1 # mknod null c 1 3⑤ 創(chuàng)建其他目錄# mkdir proc tmp mnt sys root⑥ 制作jffs2根文件系統(tǒng),參考《嵌入式Linux應用開發(fā)完全手冊》# mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2 ⑦ 燒寫測試# cp fs_mini_mdev_new.jffs2 /work/tftpboot# tftp 32000000 fs_mini_mdev_new.jffs2# nand erase.part root# nand write.jffs2 32000000 580000 $filesize# set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2# boot⑧ 結(jié)果Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004出錯、退出解決方法
配置內(nèi)核# make menuconfigKernel Features ---> [*] Use the ARM EABI to compile the kernel //選中該項# make uImage# cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2_eabi測試# tftp 32000000 uImage_3.4.2_eabi# bootm 32000000
可正常啟動Please press Enter to activate this console. / #
三. 移植YAFFS文件系統(tǒng) 獲取yaffs2源碼 # git clone git://www.aleph1.co.uk/yaffs2 給內(nèi)核打yaffs2補丁,參考readme # cd yaffs2 # ./patch-ker.sh c m /work/kernel/linux-3.4.2 配置內(nèi)核使其支持yaffs2文件系統(tǒng) # make menuconfig File systems —> [*]Miscellaneous filesystems —> <*> yaffs2 file system support # make uImage
四. 裁剪內(nèi)核 查看現(xiàn)在內(nèi)核大小 # ls arch/arm/boot/uImage -l -rw-r–r– 1 root root 2486104 Dec 30 22:41 arch/arm/boot/uImage # make menuconfig //去掉不需要的項 a. 去掉不需要支持的單板 System Type —> SAMSUNG S3C24XX SoCs Support —> * S3C24XX SoCs * [ ] SAMSUNG S3C2410 [ ] SAMSUNG S3C2412 [ ] SAMSUNG S3C2416/S3C2450 [*] SAMSUNG S3C2440 [ ] SAMSUNG S3C2442 [ ] SAMSUNG S3C2443 * S3C2440 Boards * [ ] Simtec Electronics ANUBIS [ ] Avantech AT2440EVB development board [*] MINI2440 development board [ ] NexVision NEXCODER 2440 Light Board [ ] Simtec IM2440D20 (OSIRIS) module [ ] HP iPAQ rx3715 [*] SMDK2440 [*] SMDK2440 with S3C2440 CPU module
b. 裁剪對文件系統(tǒng)的支持File systems ---> < > Second extended fs support //去掉對ext2的支持< > Ext3 journalling file system support //去掉對ext3的支持DOS/FAT/NT Filesystems ---> //不作修改,對U盤的支持需要
c. 裁剪對驅(qū)動的支持Device Drivers ---> Input device support ---> [ ] Provide legacy /dev/psaux device //delete[ ] Mice ---> //delete[ ] Keyboards ---> //deleted.繼續(xù)裁剪File systems ---> CD-ROM/DVD Filesystems --->< > ISO 9660 CDROM file system support //去掉對光盤的支持[*] Miscellaneous filesystems ---> < > Compressed ROM file system support (cramfs) //delete[ ] Include support for ZLIB compressed file systems //delete< > ROM file system support //deleteDevice Drivers --->Input device support ---> [*] Touchscreens ---><*> Samsung S3C2410/generic touchscreen input driver //配置上該項< > USB Touchscreen Driver //deleteDevice Drivers ---><*> Sound card support ---> <*> Advanced Linux Sound Architecture ---> [ ] USB sound devices ---> //deleteDevice Drivers --->[*] USB support --->[ ] The shared table of common (or usual) storage devices //delete保存、退出編譯內(nèi)核# make uImage# cp arch/arm/boot/uImage /work/tftpboot/uImage_3.4.2_sm
燒寫內(nèi)核# tftp 30000000 uImage_3.4.2_sm# nand erase.part kernel; nand write 30000000 kernel
啟動內(nèi)核# set bootcmd 'nand read 30000000 kernel;bootm 30000000'# set bootargs console=ttySAC0,115200 root=/dev/mtdblock3# set machid 16a# save# boot