文章目錄
- 🌹1 下載工具
- ?2 構建目錄
- 🚀3 使用busybox
- 4 🍎補全lib庫
- 5 🍏生成etc組態檔
- 6 🍇修改 etc/init.d/rcS 檔案
- 🌸6.1.根據 fstab 組態檔掛載相應的檔案系統
- 🐟6.2.配置 telnetd 服務器的時候需要以下檔案夾及檔案系統
- 🌺6.3.啟動需要以下檔案夾
- 🐬6.4.在 lib 下創建相應檔案夾(與當前內核版本相同),為驅動模塊加載作準備
- 👑6.5.自動在/dev 下創建設備節點
- 👏7 修改 etc/fstab 檔案,填充以下內容
- 🌹8 修改 profile
- ?9 用戶名、密碼檔案創建
- 💒10 根檔案系統的燒寫與驗證
- 11 使用uboot掛載根檔案系統
- 12 還原原始的根檔案系統
🌹1 下載工具
busybox-1.21.1:或選用其他版本的 busybox,大同小異
下載地址:工具鏈接
?2 構建目錄
創建根檔案系統目錄,主要包括以下目錄
/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin
/sbin /opt /sys /media
命令如下:
mkdir ~/rootfs
cd ~/rootfs
mkdir dev etc lib usr var proc tmp home root mnt bin sbin opt sys media
🚀3 使用busybox
解壓 busubox
進入 busybox 目錄,執行
make defconfig //使用默認配置 busybox,大部分的命令都會被選中 #
進入圖形化配置頁面,把下面的選項都勾上
make menuconfig
Busybox Setting ----->
Build Options ----->//選擇將 busybox 進行靜態編譯,這樣編譯出來的 busybox 可以不依賴動態庫
Busybox Library Tuning—>
[]Username completion
[]Fancy shell prompts
[*]Query cursor position from terminal
保存退出
回到busybox目錄下執行下面陳述句
make
make install
cp * ~/rootfs/ -arf
在 busybox 目錄下cd 進入 _install 目錄,里面有 bin sbin usr linuxrc 四個檔案
將這三個目錄或檔案拷到第一步所建的 rootfs 檔案夾下,
cp bin sbin usr linuxrc $HOME/rootfs -rfa
4 🍎補全lib庫
找到你工具鏈中的lib目錄拷貝到你的根檔案目錄中,我用的是arm-linux-gcc的lib

5 🍏生成etc組態檔
進入到 busybox-1.21.1下查找etc,并復制到你的根檔案目錄下

進入到etc/的inittab 洗掉第三行代碼:tty2::askfirst:-/bin/sh
6 🍇修改 etc/init.d/rcS 檔案
init 行程通過 inittab 啟動的第一個行程為此腳本,我們需要做以下修改#!/bin/sh
🌸6.1.根據 fstab 組態檔掛載相應的檔案系統
/bin/mount -a
🐟6.2.配置 telnetd 服務器的時候需要以下檔案夾及檔案系統
/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t tmpfs tmpfs /dev/shm
🌺6.3.啟動需要以下檔案夾
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
🐬6.4.在 lib 下創建相應檔案夾(與當前內核版本相同),為驅動模塊加載作準備
if ! [ -d /lib/modules ]; then
mkdir /lib/modules
fi
if ! [ -d /lib/modules/
(
u
n
a
m
e
?
r
)
]
;
t
h
e
n
m
k
d
i
r
/
l
i
b
/
m
o
d
u
l
e
s
/
(uname -r) ]; then mkdir /lib/modules/
(uname?r)];thenmkdir/lib/modules/(uname -r)
fi
👑6.5.自動在/dev 下創建設備節點
/sbin/mdev -s
init.d/rsc檔案下的撰寫
#! /bin/sh
/bin/mount-a
/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t tmpfs tmpfs /dev/shm
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
if ! [ -d /lib/modules ]; then
mkdir /lib/modules
fi
if ! [ -d /lib/modules/$(uname -r) ]; then
mkdir /lib/modules/$(uname -r)
fi
/sbin/mdev -s
👏7 修改 etc/fstab 檔案,填充以下內容
#device mount-point type options dump fask order
proc /proc proc defaults 0 0
ramfs /var ramfs defaults 0 0
ramfs /tmp ramfs defaults 0 0
none /sys sysfs defaults 0 0
none /dev ramfs defaults 0 0
🌹8 修改 profile
#1.初始化 PATH 環境變數及元件路徑
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
#2.初始化主機名以及當前作業路徑
/bin/hostname qfedu
USER="`id -un`"
LOGNAME=$USER
HOSTNAME='/bin/hostname'
PS1='[\u@\h \W]#
?9 用戶名、密碼檔案創建
拷貝虛擬機上的/etc/passwd, /etc/group, /etc/shadow 到 rootfs/etc 下,
#cp /etc/passwd $HOME/rootfs/etc
#cp /etc/group $HOME/rootfs/etc
#cp /etc/shadow $HOME/ rootfs/etc
對以下三個檔案修改,只保存與 root 相關的項(每個檔案的第一行)只保留 passwd 第一行,為:
root:x:0:0:root:/root:/bin/sh
最后改成/bin/ash,PC 使用 bash 作為默認 shell,嵌入式系統不支持 bash,這里改為 sh 或 ash
只保留 group 第一行,為:
root:x:0:root
只保留 shadow 第一行,為:
root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::
(注意這個值不一定一樣,各人密碼不一樣,這個值也不一樣,這個的密碼是六個1:
111111)這個檔案在本地登錄或者 ftp、telnet 登錄時起作用
打開/etc/inittab
把第二行:::respawn:-/bin/sh
改為::respawn:-/bin/login//登錄時需要用戶名、密碼驗證
這樣,以后登陸開發板時需輸入用戶名密碼,同虛擬機相同
登陸后可以通過 passwd 命令修改密碼或通過 adduser 增加新用戶
這時我配置的結果
💒10 根檔案系統的燒寫與驗證
根檔案系統的掛載通常有兩種方式,一種是直接燒盡Emmc里面,一種是通過NFS網路檔案系統遠程掛載,這里采用NFS掛載的方式進行驗證
首先在Ubuntu下配置rootfs遠程掛載
sudo gedit /etc/exports輸入
/home/edu/rootfs *(rw,sync,no_root_squash,no_subtree_check)
重啟NFS服務器:sudo /etc/init.d/nfs-kernel-server restart
11 使用uboot掛載根檔案系統
啟動開發板的uboot
執行以下命令:提供一個模板
模板:
setenv bootargs root=/dev/nfs nfsroot=(虛擬機路徑),rsize=1024,wsize=1024 ip=(開發板 iP):(服務器 ip):(網關):255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
執行后用:saveenv保存,重新啟動開發板查看是否進入你的根檔案系統
這是我的掛載場景:
12 還原原始的根檔案系統
執行下面兩條陳述句并重啟開發板
setenv bootargs root=/dev/mmcblk0p8 rw rootfstype=ext4 init=/linuxrc lcd=wy070ml tp=gslx680
saveenv
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/355434.html
標籤:其他


