您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何移植linux kernel及含busybox的yaffs2文件系統鏡像,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、建立根文件系統目錄
進入到/opt/studyarm目錄,新建建立根文件系統目錄的腳本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改變文件的可執行權限,./create_rootfs_bash運行腳本,就完成了根文件系統目錄的創建。
#!/bin/sh echo "------Create rootfs directons start...--------" mkdir rootfs cd rootfs echo "--------Create root,dev....----------" mkdir root dev etc boot tmp var sys proc lib mnt home usr mkdir etc/init.d etc/rc.d etc/sysconfig mkdir usr/sbin usr/bin usr/lib usr/modules echo "make node in dev/console dev/null" mknod -m 600 dev/console c 5 1 mknod -m 600 dev/null c 1 3 mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/run var/tmp chmod 1777 tmp chmod 1777 var/tmp echo "-------make direction done---------"
改變了tmp目錄的使用權,讓它開啟sticky位,為tmp目錄的使用權開啟此位,可確保tmp目錄底下建立的文件,只有建立它的用戶有權刪除。盡管嵌入式系統多半是單用戶,不過有些嵌入式應用不一定用root的權限來執行,因此需要遵照根文件系統權限位的基本規定來設計。
二、建立動態鏈接庫
cd rootfs/lib cp -fr /home/working/arm-linux-gcc/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/* ./
將交叉編譯器下的:相應庫文件,拷貝到 rootfs/lib 下
注:本用的交叉編譯器是:arm-linux-gcc 4.3.2
三、交叉編譯Bosybox
Bosybox是一個遵循GPL v2協議的開源項目,它在編寫過程總對文件大小進行優化,并考慮了系統資源有限(比如內存等)的情況,使用Busybox可以自動生成根文件系統所需的bin、sbin、usr目錄和linuxrc文件.
1、解壓busybox cd /mnt/hgfs/share
tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm 2、進入源碼,修改Makefile文件: cd /opt/studyarm/busybox-1.13.3 修改: CROSS_COMPILE ?=arm-linux- //第164行 ARCH ?=arm //第189行 3、配置busybox
輸入make menuconfig進行配置
(1)、Busybox Settings--->
General Configuration--->
[*] Show verbose applet usage messages
[*] Store applet usage messages in compressed form
[*] Support –install [-s] to install applet links at runtime
[*] Enable locale support(system needs locale for this to work)
[*] Support for –long-options
[*] Use the devpts filesystem for unix98 PTYs
[*] Support writing pidfiles
[*] Runtime SUID/SGID configuration via /etc/busybox.config
[*] Suppress warning message if /etc/busybox.conf is not readable
Build Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing files>2GB)
Installation Options->
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*]Fancy shell prompts
(4) Copy buffer size ,in kilobytes
[*]Use ioctl names rather than hex values in error messages
[*]Support infiniband HW
(2)、Linux Module Utilities--->
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
[*] insmod
[*] rmmod
[*] lsmod
[*] modprobe
-----options common to multiple modutils [ ] support version 2.2/2.4 Linux kernels
[*]Support tainted module checking with new kernels
[*]Support for module .aliases file
[*] support for modules.symbols file
(3)、在busybox中配置對dev下設備類型的支持
dev的創建有三種方法:
手動創建:在制作根文件系統的時候,就在dev目錄下創建好要使用的設備文件,系統掛接根文件系統后,就可以使用dev目錄下的設備文件了。 使用devfs文件系統:這種方法已經過時,具有不確定的設備映射、沒有足夠的主/次設備號、devfs消耗大量的內存。
udev:它是個用戶程序,能根據系統中硬件設備的狀態動態的更新設備文件,包括設備文件的創建、刪除等。它的操作相對復雜,但靈活性很高
mdev是busybox自帶的一個簡化版的udev,適合于嵌入式的應用埸合。其具有使用簡單的特點。它的作用,就是在系統啟動和熱插拔或動態加載驅動程序時,自動產生驅動程序所需的節點文件。在以busybox為基礎構建嵌入式linux的根文件系統時,使用它是最優的選擇。下面的選項將增加對mdev的支持。
Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
4、 編譯busybox
編譯busybox到指定目錄: cd /opt/studyarm/busybox-1.13.3
make CONFIG_PREFIX=/opt/studyarm/rootfs install
在rootfs目錄下會生成目錄bin、sbin、usr和文件linuxrc的內容。
四、建立etc目錄下的配置文件
1、etc/mdev.conf文件,內容為空。
2、拷貝主機etc目錄下的passwd、group、shadow文件到rootfs/etc目錄下。
3、etc/sysconfig目錄下新建文件HOSTNAME,內容為”MrFeng”。
4、etc/inittab文件:
#etc/inittab ::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r
5、etc/init.d/rcS文件:
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel echo "----------munt all----------------" mount -a echo /sbin/mdev>/proc/sys/kernel/hotplug mdev -s echo "***********************************************" echo "****************BENJAMIN ARM*********************" echo "Kernel version:linux-2.6.32.2" echo "Student:Benjamin" echo "Date:2015.12.02" echo "***********************************************" /bin/hostname -F /etc/sysconfig/HOSTNAME
使用以下命令改變rcS的執行權限: Chmod +x rcS
6、etc/fstab文件:
#device mount-point type option dump fsck order proc /proc proc defaults 0 0 none /tmp ramfs defaults 0 0 sysfs /sys sysfs defaults 0 0 mdev /dev ramfs defaults 0 0
7、 etc/profile文件:
#Ash profile #vim:syntax=sh #No core file by defaults #ulimit -S -c 0>/dev/null 2>&1 USER="id -un" LOGNAME=$USER PS1='[\u@\h]\$ ' PATH=$PATH HOSTNAME='/bin/hostname' export USER LOGNAME PS1 PATH alias ll="ls -l" mknod -m 600 /dev/console c 5 1 mknod -m 600 /dev/null c 1 3
五、制作根文件系統映像文件
使用以下命令安裝好yaffs文件系統制作工具: cd /mnt/hgfs/share
tar –zxvf mkyaffs2image.tgz –C /
在/opt/studyarm目錄下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系統映像文件
注:本人用的 mkyaffs2image-128M 工具
關于如何移植linux kernel及含busybox的yaffs2文件系統鏡像就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。