亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

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

嵌入式linux根文件系統制作,大神手把手教你 時間:2018-08-07      來源:未知

很多人對嵌入式linux根文件系統制作都有一些疑惑或者說難點,有時候制作嵌入式linux根文件系統的時候總會達不到自己預期的效果,其實我在這里告訴你根文件系統的制作還是很簡單的,只要你掌握好方法就好。

首先我們就先來看一下什么是根文件系統,這樣的話會對接下來的制作有幫助。

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

根文件系統之所以在前面加一個”根“,說明它是加載其它文件系統的”根“,既然是根的話,那么如果沒有這個根,其它的文件系統也就沒有辦法進行加載的。它包括了Linux啟動時所必須的目錄和關鍵性的文件,例如Linux啟動時都需要有init目錄下的相關文件,在 Linux掛載分區時Linux一定會找/etc/fstab這個掛載配置文件等,根文件系統中還包括了應用程序(如ls、mkdir、rm、ifconfig等命令)和 GNU C 庫(glibc、eglibc或uclibc)等。任何包括這些Linux 系統啟動所必須的文件都可以成為根文件系統。Linux啟動時,第一個必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會出錯而退出啟動。成功之后可以自動或手動掛載其他的文件系統。因此,一個系統中可以同時存在不同的文件系統。

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

首先第一步:就是目錄結構的構建

根文件系統的目錄是要創建的,他的目錄主要包括:

/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

第二步:開始使用busybox來對/bin /sbin linuxrc進行構建

我們用的是busybox-1.16.1,進入,然后執行下面的命令:

#make defconfig

#make menuconfig

Busybox Setting ----->

Build Options ----->

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

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

//2.指定交叉編譯器為

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

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

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

Busybox Library Tuning--->

[*]Username completion

[*]Fancy shell prompts

[*]Query cursor position from terminal

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

保存退出

#make

#make install

通過上面的步驟,那么在busybox目錄下你就會看到 _install目錄,里面就有/bin /sbin linuxrc三個文件

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

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

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

第三步:etc目錄的構建:

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

拷貝Busybox-1.16.1/examples/bootfloopy/etc/* 到當前目錄下

#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):開機免登陸,直接打開shell(前面數字為行號)

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):開機需要登陸(前面數字為行號)

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)拷貝虛擬機上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下

# cp /etc/passwd rootfs/etc

# cp /etc/group rootfs/etc

# cp /etc/shadow roofs/etc

對以下三個文件修改,只保存與root相關的項,根據具體情況內容會有所不同。

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

修改group為root:x:0:root

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

登陸開發板時需輸入用戶名密碼,同虛擬機相同

3)修改profile

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

export LD_LIBRARY_PATH=/lib:/usr/lib //動態鏈接庫 環境變量

/bin/hostname osee

USER="`id -un`"

LOGNAME=$USER

HOSTNAME='/bin/hostname'

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

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服務需要

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

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

/bin/mount -a

#######配置網絡################################

/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

第四步: 那也是最后一步lib目錄構建:

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

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

講動態庫拷到rootfs/lib下

#cp *so* roofs/lib -a

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

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

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

這樣就大功告成了,其實你看看這些步驟也就是4步就完成了嵌入式linux根文件系統的制作,其實不難,按著我的這個步驟,如果最后有問題,那么就是你太粗心了,仔細檢查檢查,嵌入式linux根文件系統的制作方法你get到了嗎?

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

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

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

回到頂部

主站蜘蛛池模板: 激情文学亚洲色图 | 九九视频精品全部免费播放 | 欧美成人激情视频 | 欧美精品九九99久久在观看 | 久久精品免费观看视频 | 国产伦精品一区二区三区视频小说 | 91精品亚洲 | 欧美特黄a级高清免费看片 欧美特黄高清免费观看的 欧美特黄三级成人 | 日本高清中文字幕一区二区三区 | 久草视频在线资源站 | 中文字幕在线看片成人 | 精品无人区一区二区三 | 国产一级做a爱片久久片 | 日本一二三视频 | 欧美日韩亚洲一区二区三区在线观看 | 天堂在线观看视频观看www | 天天摸天天操天天爽 | 国产精品v欧美精品v日韩精品 | 欧美情趣视频 | 国产第一区二区三区在线观看 | 一个人免费观看www视频二 | jiucao视频在线观看 | 五月伊人网| 亚洲国产日韩欧美高清片a 亚洲国产日韩在线观看 | 99久久99这里只有免费费精品 | 亚洲日本中文字幕永久 | 日本a∨在线观看 | 黄片毛片在线看 | 亚洲综合在线视频 | 久久在线资源 | 国产精品hd免费观看 | 青青草视频在线免费观看 | 狠狠激情五月综合婷婷俺 | 国产片毛片 | 日本理论片免费观看在线视频 | 成人在线天堂 | 国产做a爰片久久毛片 | 国产高清视频在线观看 | 97人人爽人人喊人人模波多 | 精品中文字幕制服中文 | 日本一二三区视频 |