嵌入式Linux開發-busybox根文件系統制作

      網友投稿 946 2022-05-29

      1. 前言

      如果大家做過linux系統移植、或者Linux相關開發,對根文件系統這個名詞應該很熟悉,在搭建嵌入式開發環境過程中,移植bootloader,移植kernel制作根文件系統是必須要做3件事情。

      根文件系統是內核啟動時所掛載mount的第一個文件系統,系統引導啟動程序會在根文件系統掛載之后從中把一些基本的初始化腳本和服務等加載到內存中去運行。

      Linux啟動時,第一個必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會出錯而退出啟動。成功之后可以自動或手動掛載其他的文件系統。因此,一個系統中可以同時存在不同的文件系統。根文件系統作為系統的根,系統啟動之后為完成一些初始化配置,操作。比如:系統登錄輸入的開機密碼、開機賬戶這些信息就是存放在根文件系統里的。

      根文件系統掛載的流程:先運行uboot引導內核,內核啟動完成之后,根據配置的環境變量,找到根文件系統的位置,將/dev/xxx掛載,然后執行/linuxrc程序,等其執行完后。切換根目錄,再掛載具體的根文件系統,根文件系統執行完之后,執行init的進程,也就第一個用戶進程,對系統進行各種初始化的操作。

      上面說的/dev/xxx 是根文件系統存放位置的設備節點,根文件系統支持從SD卡、光盤、EMMC、NFS網絡位置進行掛載。/linuxrc 是根文件系統制作之后,在頂層目錄生成的文件。

      根文件系統必須具備的幾個重要目錄:/bin、/etc、/lib、/dev

      其中/bin目錄存放系統的基本命令,比如:ls 這些命令就放在這里面。

      /etc存放系統的配置文件,根文件系統掛載之后會執行/etc下的配置文件完成對系統初始化。

      /lib目錄下存放系統運行需要的共享庫文件,也就是動態庫. 格式是: xxx.so

      /dev目錄下存放內核生成的設備節點,這個目錄下的文件是內核自動生成的。

      2. 根文件系統制作

      制作根文件系統,需要用到Busybox工具包。

      BusyBox 是一個集成了三百多個最常用Linux命令和工具的軟件。BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具,例grep、find、mount以及telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Linux 系統的自帶的shell。

      **Busybox-:**https://busybox.net/

      接下來對Busybox進行配置、交叉編譯、安裝,生成根文件系統需要的基本目錄文件。

      我這里用到的版本是1.23.2,下載之后,解壓busybox-1.23.2.tar.bz2 到Linux系統指定目錄下。

      下面是操作的步驟:

      [wbyq@wbyq ~]$ mkdir ~/work/busybox -p [wbyq@wbyq ~]$ tar xvf busybox-1.23.2.tar.bz2 -C ~/work/busybox/ [wbyq@wbyq ~]$ cd work/busybox/ [wbyq@wbyq busybox]$ cd busybox-1.23.2/ [wbyq@wbyq busybox-1.23.2]$ make menuconfig Busybox Settings ---> Build Options ---> (arm-linux-) Cross Compiler prefix Installation Options ("make install" behavior) ---> (/home/wbyq/work/rootfs) BusyBox installation prefix [wbyq@wbyq busybox-1.23.2]$ make && make install

      安裝完成之后,在配置的目錄下就可以看到生成的文件了。

      3. 完善根文件系統

      上面busybox生成的文件只是根文件系統的基本文件,接下來還需要自己做一些完善,比如: 修改etc配置、拷貝動態庫等等。

      (1). 拷貝動態庫

      [wbyq@wbyq lib]$ cp ~/work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/lib/* ./ -rd [wbyq@wbyq lib]$ cp ~/work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/* ./ -rd [wbyq@wbyq lib]$ sudo cp ~/work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./ -rd

      (2).創建fstab文件,完善/etc目錄

      [wbyq@wbyq rootfs]$ cp /etc/fstab etc/ [wbyq@wbyq rootfs]$ cp /etc/passwd etc/ [wbyq@wbyq rootfs]$ cp /etc/group etc/

      (3). 創建inittab

      cp busybox解壓目錄/examples/inittab /tiny4412/rootfs/etc/ [wbyq@wbyq rootfs]$ cp ../busybox/busybox-1.23.2/examples/inittab etc/

      (4). 修改上面拷貝的inittab文件

      ::sysinit:/etc/init.d/rcS #set初始化執行的文件 console::askfirst:-/bin/sh #需要加上console askfirst表示需要按下回車才可以進入系統 respawn表示開機直接進入系統 ::ctrlaltdel:/sbin/reboot #指定重啟命令 ::shutdown:/bin/umount -a -r #指定關機時執行的命令

      (5). 創建 etc/init.d/rcS 文件

      嵌入式Linux開發-busybox根文件系統制作

      [wbyq@wbyq rootfs]$ touch etc/init.d/rcS [wbyq@wbyq rootfs]$ chmod 777 etc/init.d/rcS [wbyq@wbyq rootfs]$ gedit etc/init.d/rcS 寫入以下代碼: mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s /bin/hostname wbyq

      (6).創建 etc/profile文件

      [wbyq@wbyq rootfs]$ touch etc/profile [wbyq@wbyq rootfs]$ gedit etc/profile 編寫以下代碼: USER="id-un" LOGNAME=$USER PS1='[\u@\h \W]\$ ' PATH=$PATH HOSTNAME='/bin/hostname' export USER LOGNAME PS1 PATH HOSTNAME

      參數解釋:

      PS1是命令行樣式設置的環境變量。

      Linux 嵌入式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:華為云FusionInsight MRS云原生數據湖攜合作伙伴共建繁榮生態
      下一篇:FPGA筆試題解析(一)
      相關文章
      久久久精品国产亚洲成人满18免费网站 | 亚洲精品美女视频| 亚洲高清偷拍一区二区三区| 国产成人精品日本亚洲语音| 亚洲国产午夜精品理论片在线播放| 亚洲AV综合色区无码二区偷拍| 亚洲欧洲精品在线| 亚洲精品自在线拍| 精品亚洲国产成人| 国产成人精品亚洲日本在线| 亚洲最大福利视频| 亚洲最大无码中文字幕| 亚洲欧美不卡高清在线| 亚洲va中文字幕| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲av日韩综合一区久热| 午夜亚洲国产理论片二级港台二级| 在线观看免费亚洲| 亚洲精品视频在线观看你懂的| 亚洲精品动漫人成3d在线| 国产亚洲成人久久| 亚洲精品无码久久千人斩| 亚洲成av人片天堂网| 亚洲五月六月丁香激情| 亚洲视屏在线观看| 亚洲Av高清一区二区三区| 亚洲中文无码亚洲人成影院| 亚洲av第一网站久章草| 亚洲精品无码专区久久同性男| 国产黄色一级毛片亚洲黄片大全| 亚洲无人区一区二区三区| 久久91亚洲精品中文字幕| 亚洲影院在线观看| 33333在线亚洲| 亚洲AV无码一区二区三区电影| 亚洲Av无码乱码在线播放| 亚洲深深色噜噜狠狠爱网站| 亚洲成亚洲乱码一二三四区软件| 色拍自拍亚洲综合图区| 亚洲黄色激情视频|