1. 前言
上篇文章介紹了根文件系統(tǒng)的制作與NFS網(wǎng)絡(luò)掛載,這篇文章介紹內(nèi)核如何從本地掛載根文件系統(tǒng),完成系統(tǒng)啟動。本地掛載一般用在產(chǎn)品發(fā)布的時候,本地掛載的操作也分為兩種。
第一種: 在PC機上制作好文件映像rootfs.img,然后利用uboot加載直接燒寫到EMMC里。這種最方便,適合產(chǎn)品批量生產(chǎn)燒錄。需要依賴官方的工具。當前用的開發(fā)板是友善之臂的Tiny4412,官方提供了分區(qū)工具,可以將SD卡分區(qū),將制作好的內(nèi)核、uboot、文件系統(tǒng)映像、配置腳本放在SD卡里,然后開發(fā)板選擇SD卡啟動,就可以通過uboot完成EMMC分區(qū),文件系統(tǒng)格式化、文件系統(tǒng)解壓拷貝過程,在LCD屏上還有執(zhí)行的進度條。
第二種: 自己在uboot命令行對EMMC進行分區(qū),然后拷貝文件系統(tǒng)到指定分區(qū),再設(shè)置uboot環(huán)境變量完成掛載。這種可以了解整個掛載流程,對于學習來講,非常適合。
下面分別介紹兩種掛載方式的執(zhí)行過程。
2. 本地掛載方式1
這種放需要準備一張SD卡,然后需要利用官方光盤里提供的分區(qū)工具,對SD卡進行分區(qū),再將內(nèi)核、uboot、文件系統(tǒng)映像文件拷貝到SD卡上,再修改配置文件,設(shè)置啟動的系統(tǒng)為Linux系統(tǒng)。
根文件系統(tǒng)映像制作需要用到make_ext4fs命令,這個工具在光盤里也有,是一個壓縮包,解壓到PC機Linux系統(tǒng)下就可以使用。
制作完成之后,將根文件系統(tǒng)拷貝到SD卡的image文件夾,與燒寫安卓系統(tǒng)一樣進行燒寫。
說明:其中的zImage文件是可以自己編譯替換掉的。
配置內(nèi)核:
# cp tiny4412_linux_defconfig .config
復制代碼
制作根文件系統(tǒng)的方式:
make_ext4fs -s -l <文件系統(tǒng)映像的大小> <生成的映像文件名稱> <根文件系統(tǒng)存放的目錄>
復制代碼
示例:
make_ext4fs -s -l 500M rootfs.img rootfs
復制代碼
如果不知道rootfs文件系統(tǒng)的大小,可以使用du命令進行查看。 例如:du rootfs -h
注意:在制作根文件系統(tǒng)映像包的時候,需要先將rootfs/dev目錄下的所有文件全部刪除掉。
注意: 運行make_ext4fs命令需要使用超級用戶身份,否則會導致文件系統(tǒng)制作之后無法加載。
如果是普通用戶身份登錄系統(tǒng),在執(zhí)行命令時,加上sudo即可。
示例:
sudo make_ext4fs -s -l 500M rootfs.img rootfs
[wbyq@wbyq work]$ sudo linux_tools/local/bin/make_ext4fs -s -l 500M rootfs.img rootfs/
[sudo] password for wbyq:
Creating filesystem with parameters:
Size: 524288000
Block size: 4096
Blocks per group: 32768
Inodes per group: 8000
Inode size: 256
Journal blocks: 2000
Label:
Blocks: 128000
Block groups: 4
Reserved block group size: 31
Created filesystem with 5534/32000 inodes and 51924/128000 blocks
復制代碼
3. 本地掛載方式2
在完成當前介紹的掛載方式2,需要先完成NFS網(wǎng)絡(luò)掛載才可以繼續(xù),大致的思路就是:
(1)先將uboot、內(nèi)核拷貝到開發(fā)板EMMC
(2)進入到uboot命令行,對EMMC進行分區(qū),格式化文件系統(tǒng)。
(3)配置uboot環(huán)境變量,設(shè)置文件掛載掛載為NFS網(wǎng)絡(luò)掛載,最后成功進入到命令行終端,然后將某個EMMC分區(qū)掛載到文件系統(tǒng)目錄下,將根文件系統(tǒng)壓縮包解壓到這個目錄,最后重啟開發(fā)板進入到uboot命令行再次修改環(huán)境變量,設(shè)置uboot從剛才解壓文件系統(tǒng)的分區(qū)啟動,重啟開發(fā)板,最后完成掛載。
接下來就詳細的完成上面說的步驟:
(1)對EMMC進行分區(qū)安裝文件系統(tǒng) 在uboot命令行執(zhí)行以下代碼。注意: 當前是從SD卡啟動。
TINY4412 # fdisk -c 1 1024 1024 1024
TINY4412 # ext2format mmc 1:2
復制代碼
(2)打包PC機的rootfs文件系統(tǒng)
[wbyq@wbyq work]$ sudo tar cvf rootfs.tar rootfs
[wbyq@wbyq work]$ mv rootfs.tar rootfs/
復制代碼
(3)使用NFS方式掛載解壓文件系統(tǒng)到EMMC指定分區(qū) 以下命令是掛載NFS文件系統(tǒng)之后,進入到Linux命令行執(zhí)行。注意: 當前是從SD卡啟動
[root@wbyq ]# rm /dev/*
[root@wbyq ]# mdev -s
[root@wbyq ]# mount /dev/mmcblk1p2 /mnt/
[root@wbyq ]# cd /mnt/
[root@wbyq mnt]# tar xvf /rootfs.tar
[root@wbyq mnt]# mv rootfs/* ./
[root@wbyq ]# umount /mnt/
復制代碼
(4)切換成EMMC方式啟動設(shè)置UBOOT環(huán)境變量 以下命令在UBOOT命令行執(zhí)行。
TINY4412 # setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext2 init=/linuxrc console=ttySAC0 lcd=S702
TINY4412 # saveenv
TINY4412 # reset
復制代碼
(5)本地方式下,使用NFS方式掛載NFS服務器的目錄實現(xiàn)文件共享
[root@wbyq ]# ifconfig eth0 192.168.10.123
[root@wbyq ]# mount -t nfs -o nolock 192.168.10.11:/home/wbyq/project
復制代碼
把PC機文件拷貝到開發(fā)板上的方式:
(1). SD卡或者U盤拷貝 (2). NFS網(wǎng)絡(luò)方式 (3). 串口傳輸
-
嵌入式
+關(guān)注
關(guān)注
5177文章
20003瀏覽量
325577 -
Linux
+關(guān)注
關(guān)注
88文章
11581瀏覽量
217174 -
根文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
26瀏覽量
12454
發(fā)布評論請先 登錄
linux驅(qū)動開發(fā)_文件系統(tǒng)本地掛載
嵌入式Linux根文件系統(tǒng)構(gòu)建指南
嵌入式Linux根文件系統(tǒng)怎么制作?
嵌入式設(shè)備掛載目錄
Linux啟動掛載根文件系統(tǒng)簡析
適合嵌入式Linux應用的文件系統(tǒng)—— JFFS
適合嵌入式Linux應用的文件系統(tǒng)—— JFFS
用Busybox制作嵌入式Linux根文件系統(tǒng)
嵌入式設(shè)備NFS掛載目錄(基于iTop 4412)
嵌入式Linux開發(fā)使用NFS掛載根文件系統(tǒng)
嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))
i.MX6ULL嵌入式Linux開發(fā)5-根文件系統(tǒng)完善

嵌入式Linux開發(fā)-根文件系統(tǒng)本地掛載
評論