久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 入門指導 > 嵌(qian)入式linux根文(wen)件(jian)系(xi)統(tong)制作,大神手(shou)把手(shou)教你

嵌入(ru)式(shi)linux根文件(jian)系統(tong)制作,大神手把手教你(ni) 時間:2018-08-07      來(lai)源(yuan):未知

很(hen)(hen)多人對嵌(qian)入式linux根文件(jian)系統制(zhi)作都有(you)一些(xie)疑(yi)惑或者說(shuo)難點,有(you)時候制(zhi)作嵌(qian)入式linux根文件(jian)系統的時候總會達(da)不到自己(ji)預期的效果,其(qi)實我在這(zhe)里(li)告訴你(ni)根文件(jian)系統的制(zhi)作還是(shi)很(hen)(hen)簡單的,只要(yao)你(ni)掌握好方法就好。

首(shou)先(xian)我們(men)就先(xian)來看一(yi)下(xia)什(shen)么是根文件系統,這樣(yang)的話會對接下(xia)來的制作(zuo)有幫助。

根文(wen)件(jian)(jian)系(xi)統(tong)(tong)首先是(shi)一(yi)種文(wen)件(jian)(jian)系(xi)統(tong)(tong),該文(wen)件(jian)(jian)系(xi)統(tong)(tong)不僅(jin)具(ju)有普通文(wen)件(jian)(jian)系(xi)統(tong)(tong)的(de)(de)(de)存儲數據文(wen)件(jian)(jian)的(de)(de)(de)功能,但是(shi)相對于普通的(de)(de)(de)文(wen)件(jian)(jian)系(xi)統(tong)(tong)而言(yan)它還是(shi)內(nei)核啟(qi)動(dong)(dong)時所掛載(zai)(mount)的(de)(de)(de)第一(yi)個(ge)文(wen)件(jian)(jian)系(xi)統(tong)(tong),系(xi)統(tong)(tong)引導啟(qi)動(dong)(dong)程序會在根文(wen)件(jian)(jian)系(xi)統(tong)(tong)掛之后從中(zhong)(zhong)把一(yi)些初始化腳本(如inittab、rcS)和(he)服務加(jia)載(zai)到內(nei)存中(zhong)(zhong)去運行(xing)。我們要明白(bai)文(wen)件(jian)(jian)系(xi)統(tong)(tong)和(he)內(nei)核是(shi)完全獨立的(de)(de)(de)兩個(ge)部分(fen)。在嵌(qian)入式中(zhong)(zhong)移植(zhi)的(de)(de)(de)內(nei)核下載(zai)到開(kai)發板上,是(shi)沒有辦法真正的(de)(de)(de)啟(qi)動(dong)(dong)Linux操作系(xi)統(tong)(tong)的(de)(de)(de),會出(chu)現(xian)無(wu)法加(jia)載(zai)文(wen)件(jian)(jian)系(xi)統(tong)(tong)的(de)(de)(de)錯誤(wu)。

根(gen)文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)之所以(yi)在(zai)前面加一(yi)個(ge)(ge)”根(gen)“,說明(ming)它是(shi)(shi)加載(zai)其(qi)它文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)的”根(gen)“,既(ji)然(ran)是(shi)(shi)根(gen)的話,那么如(ru)果沒(mei)有(you)(you)這(zhe)個(ge)(ge)根(gen),其(qi)它的文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)也(ye)就沒(mei)有(you)(you)辦(ban)法進行加載(zai)的。它包(bao)括了Linux啟(qi)動(dong)(dong)時所必(bi)須的目(mu)錄和(he)關鍵性的文(wen)件(jian)(jian)(jian),例如(ru)Linux啟(qi)動(dong)(dong)時都需要有(you)(you)init目(mu)錄下(xia)的相關文(wen)件(jian)(jian)(jian),在(zai) Linux掛(gua)(gua)載(zai)分(fen)區時Linux一(yi)定(ding)會找/etc/fstab這(zhe)個(ge)(ge)掛(gua)(gua)載(zai)配(pei)置(zhi)文(wen)件(jian)(jian)(jian)等,根(gen)文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)中還包(bao)括了應用程序(如(ru)ls、mkdir、rm、ifconfig等命令)和(he) GNU C 庫(ku)(glibc、eglibc或(huo)uclibc)等。任何(he)包(bao)括這(zhe)些Linux 系(xi)(xi)(xi)(xi)統(tong)(tong)啟(qi)動(dong)(dong)所必(bi)須的文(wen)件(jian)(jian)(jian)都可以(yi)成為根(gen)文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)。Linux啟(qi)動(dong)(dong)時,第一(yi)個(ge)(ge)必(bi)須掛(gua)(gua)載(zai)的是(shi)(shi)根(gen)文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong);若系(xi)(xi)(xi)(xi)統(tong)(tong)不能從指(zhi)定(ding)設備上(shang)掛(gua)(gua)載(zai)根(gen)文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong),則系(xi)(xi)(xi)(xi)統(tong)(tong)會出錯而退(tui)出啟(qi)動(dong)(dong)。成功之后可以(yi)自動(dong)(dong)或(huo)手動(dong)(dong)掛(gua)(gua)載(zai)其(qi)他的文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)。因此,一(yi)個(ge)(ge)系(xi)(xi)(xi)(xi)統(tong)(tong)中可以(yi)同時存在(zai)不同的文(wen)件(jian)(jian)(jian)系(xi)(xi)(xi)(xi)統(tong)(tong)。

看到這里,你(ni)已經可以做接下來的步驟了,前面其實就是想(xiang)讓(rang)你(ni)對根文件系(xi)統(tong)有(you)一個認識(shi),今天我們就使用BusyBox制(zhi)作嵌(qian)入(ru)式Linux根文件系(xi)統(tong):

首先第一步:就是目錄結(jie)構(gou)的構(gou)建

根文件(jian)系統的(de)目錄是(shi)要(yao)創建的(de),他(ta)的(de)目錄主要(yao)包括:

/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys

#mkdir /home/rootfs

#cd /home/rootfs

#mkdir dev etc lib usr var proc tmp home root mnt sys

第(di)二步:開始使(shi)用busybox來對(dui)/bin /sbin linuxrc進行構建(jian)

我們用的是busybox-1.16.1,進(jin)入,然后(hou)執行下面(mian)的命(ming)令:

#make defconfig

#make menuconfig

Busybox Setting ----->

Build Options ----->

//1選擇將busybox進行靜態編譯(yi)

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

//2.指(zhi)定交(jiao)叉編譯器為

(/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix

Installation Options -----> (選(xuan)擇生成的(de)文件存放(fang)目錄,也可以直接(jie)放(fang)在rootfs下就不(bu)用拷貝了)

//3.選擇上 Don’t use /usr

Busybox Library Tuning--->

[*]Username completion

[*]Fancy shell prompts

[*]Query cursor position from terminal

//4.編譯出的busybox的shell命令(ling)解釋器支持顯(xian)示當前路徑及主機信息(xi)

保存退出

#make

#make install

通(tong)過(guo)上面的步驟,那么在busybox目(mu)(mu)錄(lu)下你就會看(kan)到 _install目(mu)(mu)錄(lu),里(li)面就有/bin /sbin linuxrc三個(ge)文件

將(jiang)這三個目錄或文件(jian)拷到第一步所建的(de)rootfs文件(jian)夾下。

#cp bin/ sbin/ linuxrc /home/rootfs -ra

在(zai)這里一(yi)定要記住要帶上(shang)-a的參數,因為在(zai)bin的這個目錄里很多都(dou)是(shi)鏈(lian)接,如果(guo)你沒有帶-a的參數,那么拷(kao)貝過去就不(bu)是(shi)鏈(lian)接的形式了。

第三步:etc目錄的構建:

1)進(jin)入根文件系統rootfs的etc目(mu)錄,執行(xing)如(ru)下操作:

拷貝Busybox-1.16.1/examples/bootfloopy/etc/* 到(dao)當(dang)前目(mu)錄下

#cp –r busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc

修改inittab,

原始文件為:

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

2 ::respawn:-/bin/sh

3 tty2::askfirst:-/bin/sh

4 ::ctrlaltdel:/bin/umount -a -r

修改后為:

 ---(1):開機免登陸,直接打(da)開shell(前(qian)面數字為行號(hao))

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

2 #::respawn:-/bin/sh

3 #::respawn:-/bin/login

4 console::askfirst:-/bin/sh

5 #tty2::askfirst:-/bin/sh

6 ::ctrlaltdel:/bin/umount -a -r

---(2):開(kai)機需要登陸(前面數字為行號(hao))

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

2 #::respawn:-/bin/sh

3 ::respawn:-/bin/login

4 #console::askfirst:-/bin/sh

5 #tty2::askfirst:-/bin/sh

6 ::ctrlaltdel:/bin/umount -a -r

2)拷貝虛(xu)擬機(ji)上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下(xia)

# cp /etc/passwd rootfs/etc

# cp /etc/group rootfs/etc

# cp /etc/shadow roofs/etc

對以下三個文件修(xiu)改(gai),只保存與root相關的項(xiang),根據具體(ti)情況(kuang)內容會有(you)所不同(tong)。

 修改(gai)(gai)passwd為root:x:0:0:root:/root:/bin/sh,即只(zhi)保存(cun)與root相關項,而且最后(hou)改(gai)(gai)成/bin/ash。

修改(gai)group為(wei)root:x:0:root

修(xiu)改shadow為root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

登陸開發(fa)板時需輸(shu)入用(yong)戶名密(mi)碼,同(tong)虛擬機相同(tong)

3)修(xiu)改(gai)profile

PATH=/bin:/sbin:/usr/bin:/usr/sbin //可執行(xing)程序 環境變量

export LD_LIBRARY_PATH=/lib:/usr/lib //動態鏈(lian)接庫 環境(jing)變(bian)量

/bin/hostname osee

USER="`id -un`"

LOGNAME=$USER

HOSTNAME='/bin/hostname'

PS1='[\u@\h \W]# ' //顯示主機名、當前路(lu)徑等信(xin)息(xi):

4)修改 etc/init.d/rc.S文件

/bin/mount -n -t ramfs ramfs /var

/bin/mount -n -t ramfs ramfs /tmp

/bin/mount -n -t sysfs none /sys

/bin/mount -n -t ramfs none /dev

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

/bin/mkdir -p /dev/pts //telnet服務需要

/bin/mkdir -p /dev/shm //telnet服務需要(yao)

 #echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自動掛載需要

/sbin/mdev -s //啟動mdev在/dev下(xia)自(zi)動創建設備文件節點

/bin/mount -a

#######配(pei)置網絡################################

/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0

/sbin/ifconfig eth0 192.168.1.70

/sbin/ifconfig eth0 netmask 255.255.255.0

/sbin/route add default gw 192.168.1.1 eth0

/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0

/sbin/route add default gw 192.168.1.1 eth1

5)修改etc/fstab文件,增加以下文件

none /dev/pts devpts mode=0622 0 0

tmpfs /dev/shm tmpfs defaults 0 0

第四(si)步: 那也是最(zui)后一步lib目錄構建:

(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我的只是把(ba)這個(ge)目錄下的SO文件復制就可以了)

1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

講(jiang)動態庫拷到(dao)rootfs/lib下

#cp *so* roofs/lib -a

2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

將下(xia)面動態庫拷貝到rootfs/lib下(xia)

#cp ./libstdc++.so.* rootfs/lib -a

這樣就(jiu)大功告成了(le),其(qi)實你看(kan)看(kan)這些(xie)步驟也就(jiu)是4步就(jiu)完成了(le)嵌入(ru)式linux根文(wen)件系(xi)統(tong)的制作(zuo),其(qi)實不難,按(an)著我的這個(ge)步驟,如果(guo)最(zui)后有問(wen)題,那么就(jiu)是你太(tai)粗心了(le),仔細檢(jian)查(cha)檢(jian)查(cha),嵌入(ru)式linux根文(wen)件系(xi)統(tong)的制作(zuo)方法(fa)你get到了(le)嗎?

上一篇:嵌入式原理及應用題庫,都是經典題型

下一篇:純科普:什么是嵌入式?三分鐘瞬間了解嵌入式系統開發

熱點文(wen)章推薦(jian)
華清(qing)學員就業榜單
高薪學員經驗分享
熱(re)點新(xin)聞推薦
前臺專線:010-82525158 企業培訓(xun)洽談專線:010-82525379 院校合作洽(qia)談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部