九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ext2文件系統(tǒng)的制作

完全是什么都不懂,經(jīng)理大概說了下也沒整明白就開始做.終于今天上午做了個(gè)能跑起來的...淚流滿面啊~下面把學(xué)習(xí)總結(jié)給貼上來.

根文件系統(tǒng)主要包括etc/,bin/,sbin/,lib/,proc/,dev/等根目錄,其他目錄可以根據(jù)應(yīng)用來增加。

創(chuàng)建根文件系統(tǒng)使用了busybox工具,我用的是1.13.3版本,其實(shí)制作方法很簡(jiǎn)單,主要是環(huán)境要和編譯kernel的一樣,編譯鏈?zhǔn)裁吹?/strong>.我這個(gè)kernel是公司原來在cvs服務(wù)器上都做好了的,直接make就出來了,而我之前做kernel出了點(diǎn)問題一直跑不起來,所以為了趕學(xué)習(xí)進(jìn)度就直接用了這個(gè)kernel,因?yàn)槭遣沤佑|嵌入式,最開始沒意識(shí)到這點(diǎn)的重要,浪費(fèi)了很多的時(shí)間,做出來卻沒法跑,或者出現(xiàn)各種錯(cuò)誤,后來反應(yīng)過來1天多點(diǎn)就弄好了.


1.編譯busybox

 

1.1解壓該包

tar -xvjf busybox-1.13.3.tar.bz2

cd busybox-1.13.3

 

1.2.修改Makefile

找到

CROSS_COMPILE ?=

修改為CROSS_COMPILE ?=arm-linux-

(這里需要修改成編譯鏈名稱,我實(shí)際用的是xscale_be-)

 

找到

ARCH ?= $(SUBARCH)

修改為

ARCH ?= arm

 

1.3.進(jìn)行默認(rèn)配置

make defconfig

 

1.4.對(duì)配置信息進(jìn)行修改

make menuconfig

 

Busybox Settings --->

        Build Options --->

            [*]Build BusyBox as a static binry(no shared libs)

(動(dòng)態(tài)或靜態(tài)網(wǎng)上各有討論,總體來說在空間不緊張的時(shí)候使用靜態(tài),不容易出錯(cuò))

            ()Cross Compilerprefix=/usr/local/arm/3.4.1/bin/

(這里是添加編譯器路徑,如果沒有exportPATH環(huán)境變量里,則可以在這里添加)

 

        Installation Options --->

            [*]Don't use /usr

 

其他的設(shè)置可以根據(jù)需要來,這里就默認(rèn)了(不過后面編譯會(huì)出錯(cuò)一些,然后相應(yīng)的修改或者干脆去掉那些用不著的)

 


1.5.make (下面是我make中出現(xiàn)的錯(cuò)誤與解決)

Error 1.

In file included frommiscutils/watchdog.c:13:

/opt/montavista/pro/devkit/arm/xscale_be/target/usr/include/linux/watchdog.h:17:error: parse error before "__u32"

/opt/montavista/pro/devkit/arm/xscale_be/target/usr/include/linux/watchdog.h:20:error: parse error before "identity"

/opt/montavista/pro/devkit/arm/xscale_be/target/usr/include/linux/watchdog.h:21:error: parse error before '}' token

make[1]: *** [miscutils/watchdog.o]Error 1

make: *** [miscutils] Error 2

 

解決:

make menuconfig

去掉Miscellaneous Utilities -> watchdog.

保存,繼續(xù)make

 

Error 2.

networking/brctl.c: In function`brctl_main':

networking/brctl.c:186: error: `SIOCBRADDBR' undeclared (first use inthis function)

networking/brctl.c:186: error: (Each undeclared identifier is reportedonly once

networking/brctl.c:186: error: foreach function it appears in.)

networking/brctl.c:186: error: `SIOCBRDELBR' undeclared (first use inthis function)

networking/brctl.c:202: error: `SIOCBRADDIF' undeclared (first use in thisfunction)

networking/brctl.c:202: error: `SIOCBRDELIF' undeclared (first use inthis function)

make[1]: *** [networking/brctl.o]Error 1

make: *** [networking] Error 2

 

解決: vi (busybox目錄)networking/brctl.c  添加下列

#defineSIOCBRADDBR    0x89a0

#defineSIOCBRDELBR    0x89a1

#defineSIOCBRADDIF    0x89a2

#defineSIOCBRDELIF    0x89a3

繼續(xù)make

 

Error 3.

In file included fromnetworking/ifenslave.c:105:

出現(xiàn)一大堆關(guān)于ifenslave的錯(cuò)

 

解決:

make menuconfig

去掉networking -> ifenslave.

保存,繼續(xù)make

 

Error 4.

networking/interface.c:818:error: `ARPHRD_INFINIBAND' undeclared here (not in a function)

networking/interface.c:818: error: initializer element is not constant

networking/interface.c:818:error: (near initialization for `ib_hwtype.type')

make[1]: *** [networking/interface.o] Error 1

make: *** [networking] Error 2

 

解決:

vi networking/interface.c

找到818.type = ARPHRD_INFINIBAND,

改為.type  = -1,

保存,繼續(xù)make

 

最后出來了一些警告,不過終于編譯通過了


1.6.make install

編譯出來的binsbin就在_install里面

 

2.構(gòu)建文件系統(tǒng)(部分需要root權(quán)限)

 

2.1.mkdir rootfs (后面文件系統(tǒng)就掛載在這里)

2.2.dd if=/dev/zero of=ucfs bs=1k count=6144

后面的6144是指解壓后6M大小的文件系統(tǒng),如果跑的時(shí)候報(bào)錯(cuò),說明可能超過最大空間了.

2.3.losetup -e none /dev/loop0 e2fs如果loop0已被使用,可以使用loop1等。

2.4.mke2fs -m 0 /dev/loop0 6144

2.5.mount -t ext2 /dev/loop0 ./rootfs/

接下來進(jìn)入rootfs/目錄,可以看到里面已經(jīng)有了一個(gè)lost+found目錄.rootfs/目錄中添加相關(guān)的文件和目錄,完成根文件系統(tǒng)的構(gòu)建.

2.6.cp –avrf (busybox目錄)/_install/* rootfs

2.7.cp –avrf (busybox目錄)/example/bootfloppy/etcrootfs

etc里面的是啟動(dòng)init相關(guān)的設(shè)置,這里以最簡(jiǎn)單來設(shè)置,同時(shí)修改ectinttab,保留前2,如下

::sysinit:/etc/init.d/rcS

::respawn:-/bin/sh

2.8.建立剩下需要的文件夾mkdir lib dev proc

2.9.復(fù)制lib,這個(gè)要簡(jiǎn)單的話直接復(fù)制板子提供的文件系統(tǒng)里的lib即可,我就是直接復(fù)制的.如果沒有,則需要拷貝交叉編譯器中的uclibc,進(jìn)入交叉編譯器的lib目錄,然后拷貝必要的庫.

2.10.創(chuàng)建dev,busybox目錄/example/bootfloppy下有一個(gè)mkdevs.sh,

sh mkdevs.sh rootfs/dev/

可以用它來快捷建立需要的設(shè)備.也可以根據(jù)需要來使用mknod建立.

至此,最基本的基于ext2的根文件系統(tǒng)制作完成~

2.11打包壓縮

umount /dev/loop0

losetup -d /dev/loop0

gzip -v9 e2fs

 

最后制作出來的e2fs.gz就是需要的了.

 

busybox的目錄下example里有個(gè)mkrootfs.sh還是什么的,里面的命令可以好好看看學(xué)學(xué),基本上就是制做文件系統(tǒng)的全過程.

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服