如何移植linuxkernel及含busybox的yaffs2文件系統(tǒng)鏡像

這篇文章給大家介紹如何移植linux kernel及含busybox的yaffs2文件系統(tǒng)鏡像,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)是專業(yè)的新樂網(wǎng)站建設(shè)公司,新樂接單;提供成都網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新樂網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

一、建立根文件系統(tǒng)目錄  

進(jìn)入到/opt/studyarm目錄,新建建立根文件系統(tǒng)目錄的腳本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改變文件的可執(zhí)行權(quán)限,./create_rootfs_bash運行腳本,就完成了根文件系統(tǒng)目錄的創(chuàng)建。

#!/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目錄的使用權(quán),讓它開啟sticky位,為tmp目錄的使用權(quán)開啟此位,可確保tmp目錄底下建立的文件,只有建立它的用戶有權(quán)刪除。盡管嵌入式系統(tǒng)多半是單用戶,不過有些嵌入式應(yīng)用不一定用root的權(quán)限來執(zhí)行,因此需要遵照根文件系統(tǒng)權(quán)限位的基本規(guī)定來設(shè)計。

二、建立動態(tài)鏈接庫

cd rootfs/lib
cp -fr /home/working/arm-linux-gcc/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/* ./

將交叉編譯器下的:相應(yīng)庫文件,拷貝到 rootfs/lib 下

注:本用的交叉編譯器是:arm-linux-gcc 4.3.2

三、交叉編譯Bosybox

Bosybox是一個遵循GPL v2協(xié)議的開源項目,它在編寫過程總對文件大小進(jìn)行優(yōu)化,并考慮了系統(tǒng)資源有限(比如內(nèi)存等)的情況,使用Busybox可以自動生成根文件系統(tǒng)所需的bin、sbin、usr目錄和linuxrc文件.

1、解壓busybox cd /mnt/hgfs/share 

tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm 2、進(jìn)入源碼,修改Makefile文件: cd /opt/studyarm/busybox-1.13.3 修改:  CROSS_COMPILE ?=arm-linux-   //第164行  ARCH    ?=arm   //第189行 3、配置busybox

輸入make menuconfig進(jìn)行配置

 (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下設(shè)備類型的支持

dev的創(chuàng)建有三種方法: 

手動創(chuàng)建:在制作根文件系統(tǒng)的時候,就在dev目錄下創(chuàng)建好要使用的設(shè)備文件,系統(tǒng)掛接根文件系統(tǒng)后,就可以使用dev目錄下的設(shè)備文件了。 使用devfs文件系統(tǒng):這種方法已經(jīng)過時,具有不確定的設(shè)備映射、沒有足夠的主/次設(shè)備號、devfs消耗大量的內(nèi)存。 

udev:它是個用戶程序,能根據(jù)系統(tǒng)中硬件設(shè)備的狀態(tài)動態(tài)的更新設(shè)備文件,包括設(shè)備文件的創(chuàng)建、刪除等。它的操作相對復(fù)雜,但靈活性很高 

mdev是busybox自帶的一個簡化版的udev,適合于嵌入式的應(yīng)用埸合。其具有使用簡單的特點。它的作用,就是在系統(tǒng)啟動和熱插拔或動態(tài)加載驅(qū)動程序時,自動產(chǎn)生驅(qū)動程序所需的節(jié)點文件。在以busybox為基礎(chǔ)構(gòu)建嵌入式linux的根文件系統(tǒng)時,使用它是最優(yōu)的選擇。下面的選項將增加對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的內(nèi)容。

四、建立etc目錄下的配置文件

1、etc/mdev.conf文件,內(nèi)容為空。 

2、拷貝主機(jī)etc目錄下的passwd、group、shadow文件到rootfs/etc目錄下。 

3、etc/sysconfig目錄下新建文件HOSTNAME,內(nèi)容為”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的執(zhí)行權(quán)限: 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

五、制作根文件系統(tǒng)映像文件 

使用以下命令安裝好yaffs文件系統(tǒng)制作工具:  cd /mnt/hgfs/share 

tar –zxvf mkyaffs2image.tgz –C / 

在/opt/studyarm目錄下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系統(tǒng)映像文件

注:本人用的 mkyaffs2image-128M 工具

關(guān)于如何移植linux kernel及含busybox的yaffs2文件系統(tǒng)鏡像就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章標(biāo)題:如何移植linuxkernel及含busybox的yaffs2文件系統(tǒng)鏡像
文章來源:http://bm7419.com/article4/igeeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、云服務(wù)器、網(wǎng)站建設(shè)網(wǎng)站設(shè)計、網(wǎng)站收錄品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計