最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

stm32mp1 linux最小根文件系統(tǒng)制作教程

2020-11-19 09:37 作者:華清遠(yuǎn)見研發(fā)中心  | 我要投稿

有用戶反饋,關(guān)于stm32mp1,ST官方提供的系統(tǒng)太龐大,開機速度慢,占用空間大?;谶@個問題,我們整理了Linux5.4.31最小根文件系統(tǒng)的鏡像及對應(yīng)教程,希望對stm32mp157開發(fā)板使用的用戶有所幫助。

1. 根文件系統(tǒng)開發(fā)實驗

1.1 實驗?zāi)康?/h1>

熟悉Linux 文件系統(tǒng)目錄結(jié)構(gòu),創(chuàng)建自己的文件系統(tǒng),通過NFS 方式測試。

1.2 實驗平臺

華清遠(yuǎn)見開發(fā)環(huán)境,F(xiàn)S-MP1A平臺;

1.3 實驗步驟

1 . 根文件系統(tǒng)制作

可以從http://busybox.net/downloads/網(wǎng)站下載busybox-1.29.3源碼用于制作Linux文件系統(tǒng),為了方便,已將源碼放進了光盤。

安裝交叉編譯工具鏈。

1 | linux@ubuntu:$ sudo apt-get install gcc-arm-linux-gnueabihf

2 |?linux@ubuntu:$ sudo apt-get install g++-arm-linux-gnueabihf

驗證開發(fā)工具是否安裝正確,顯示版本信息如下圖所示。

linux@ubuntu:$ arm-linux-gnueabihf-gcc -v

建立源碼目錄

1 |?linux@ubuntu:$ cd ~

2 |?linux@ubuntu:$ mkdir -p fs-mp1a

將【華清遠(yuǎn)見-FS-MP1A開發(fā)資料\02-程序源碼\04-Linux系統(tǒng)移植\01-官方源碼】下的busybox-1.29.3.tar.bz2拷貝至該目錄。

1 |?linux@ubuntu:$ tar xvf busybox-1.29.3.tar.bz2? ? ? ? ? ? ?//解壓源碼

2?|?linux@ubuntu:$ cd busybox-1.29.3

配置busybox 源碼:

將頂層目錄下的Makefile文件中的CROSS_COMPILE字段修改為“arm-linux-gnueabihf-”

可以使用如下命令配置源碼

linux@ubuntu:$ make menuconfig

編譯源碼:

linux@ubuntu:$ make

安裝:

busybox 默認(rèn)安裝路徑為源碼目錄下的_install

linux@ubuntu:$ make install

進入安裝目錄:

linux@ubuntu:$ cd? _install

linux@ubuntu:$ ls

bin? linuxrc? sbin? ?usr

創(chuàng)建其他需要的目錄:

linux@ubuntu:$ mkdir? ?dev? ?etc? mnt? ?proc? ?var? tmp? ?sys? ?root

添加庫:

將工具鏈中的庫拷貝到_install 目錄下:

linux@ubuntu:$ cp /usr/arm-linux-gnueabihf/lib/ . -a

刪除靜態(tài)庫:

linux@ubuntu:$ rm lib/*.a

添加系統(tǒng)啟動文件:

在etc下添加文件inittab,文件內(nèi)容如下:

注意:修改文件均為_install目錄下

etc/inittab

1?|?#this is run first except when booting in single-user mode.

2?|?::sysinit:/etc/init.d/rcS

3?|?# /bin/sh invocations on selected ttys

4?|?# start an "askfirst" shell on the console (whatever that may be)

5?|?::askfirst:-/bin/sh

6?|?# stuff to do when restarting the init process

7?|?::restart:/sbin/init

8?|?# stuff to do before rebooting

9?|?::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab,文件內(nèi)容如下:

/etc/fstab

1?|?#device mount-point type options? ? dump fsck order

2?|?proc /proc proc defaults 0 0

3?|?tmpfs /tmp tmpfs defaults 0 0

4?|?sysfs /sys sysfs defaults 0 0

5?|?tmpfs /dev tmpfs defaults 0 0

這里我們掛載的文件系統(tǒng)有三個proc、sysfs和tmpfs。

回到創(chuàng)建的文件系統(tǒng)處,在etc下創(chuàng)建init.d目錄,并在init.d下創(chuàng)建rcS文件,rcS 文件內(nèi)容為:

etc/init.d/rcS

1?|?#!/bin/sh

2?|?# This is the first script called by init process

3?|?/bin/mount? ?-a

4?|?/sbin/mdev? ?-s

為rcS 添加可執(zhí)行權(quán)限:

linux@ubuntu:$ chmod a+x init.d/rcS

在etc 下添加profile 文件,文件內(nèi)容為:

etc/profile

1?|?#!/bin/sh

2?|?export HOSTNAME=fsmp1a

3?|?export USER=root

4?|?export HOME=root

5?|?export PS1="[$USER@$HOSTNAME \W]\# "

6?|?PATH=/bin:/sbin:/usr/bin:/usr/sbin

7?|?LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

8?|?export PATH? ?LD_LIBRARY_PATH

2 . NFS 測試

刪除原先的/source/rootfs:

linux@ubuntu:$ sudo rm -rf /source/rootfs

將我們新建的根文件系統(tǒng)拷貝到/source/rootfs目錄下

linux@ubuntu:$ sudo mkdir /source/rootfs

linux@ubuntu:$ sudo cp _install/* /source/rootfs -a

修改ubuntu主機中的/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17文件添加nfs啟動選項

1???|?# Generic Distro Configuration file generated by OpenEmbedded

2?? |?menu title Select the boot mode

3? ?|?MENU BACKGROUND /splash.bmp

4?? |?TIMEOUT 20

5?? |?DEFAULT stm32mp157a-fsmp1a-emmc

6? ?|?LABEL stm32mp157a-fsmp1a-emmc

7?? |?? ? KERNEL /uImage

8?? |?? ? FDT /stm32mp157a-fsmp1a.dtb

9?? |?? ? APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200

10?|?LABEL stm32mp157a-fsmp1a-nfs

11?|?? ? KERNEL /uImage

12?|?? ? FDT /stm32mp157a-fsmp1a.dtb

13?|?? ? APPEND root=/dev/nfs nfsroot=192.168.11.251:/source/rootfs ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200

上述配置中共有兩個啟動項分別為stm32mp157a-fsmp1a-emmc、stm32mp157a-fsmp1a-nfs。其中stm32mp157a-fsmp1a-emmc選項為正常啟動配置;stm32mp157a-fsmp1a-nfs為nfs掛載方式,這里需要注意的是nfsroot=192.168.11.251部分的ip需要根據(jù)ubunut主機的實際ip填寫。

重新啟動開發(fā)板,選擇nfs啟動選項。

查看是否能夠正常掛載,功能是否正常

2. 制作根文件系統(tǒng)鏡像

上小節(jié)已經(jīng)制作好了根文件系統(tǒng),并且從NFS已經(jīng)成功啟動。本小節(jié)將制作一個根文件系統(tǒng)鏡像用于后續(xù)的固化和燒錄。

  1. 制作ext4格式的文件系統(tǒng)

在ubuntu中制作一個EXT4空文件, 此處設(shè)則為300M大小,由于安裝的軟件較多時,文件系統(tǒng)會很大,用戶可以根據(jù)情況自行更改。

linux@ubuntu:$ dd if=/dev/zero of= fsmp1x_rootfs.ext4 bs=300M count=1

linux@ubuntu:$ sudo mkfs.ext4 fsmp1x_rootf.ext4

2. 復(fù)制文件系統(tǒng)

將上小節(jié)我們移植完成的跟文件系統(tǒng)中所的文件夾都fuubuntu18_rootfs.ext4文件掛載到臨時目錄/mnt,并拷貝文件系統(tǒng)。

linux@ubuntu:$ sudo mount -o loop fsmp1x_rootf.ext4 /mnt

如果我們已經(jīng)制作了前面的文件系統(tǒng)則直接拷貝/source/rootfs/下的文件即可

linux@ubuntu:$ sudo cp /source/rootfs/* /mnt -a

如果我們之前沒有編譯制作文件系統(tǒng)也可以將【華清遠(yuǎn)見-FS-MP1A開發(fā)資料\02-程序源碼\04-Linux系統(tǒng)移植\02-移植好的系統(tǒng)鏡像文件】下的rootfs.tar.xz文件導(dǎo)入到虛擬機中,使用我們已經(jīng)移植好的跟文件系統(tǒng)進行制作。

linux@ubuntu:$ sudo tar -xvf rootfs.tar.xz -C /mnt

3. 卸載掛載的fsmp1x_rootf.ext4文件

linux@ubuntu:$ sudo umount /mnt

此時跟文件系統(tǒng)鏡像就制作完成了。可以將這個文件導(dǎo)出到windos下燒錄到開發(fā)板中運行。

4. 修改燒錄文件

如果想要燒錄到開發(fā)板那么就需要修改,燒寫文件。這里以eMMC啟動的trusted鏡像為例來說明。其它啟動的修改方法也類似。

修改flashlayout_fs-mp1a-weston\trusted下的FlashLayout_sdcard_stm32mp157a-fsmp1a-trusted.tsv文件將Id為0x23的rootfs分區(qū)鏡像名由fs-mp1a-weston-openstlinux-weston-fsmp1a.ext4修改為fsmp1x_rootf.ext4。按照《STM32CubeProgrammer燒寫方式》章節(jié)進行燒錄即可。

對應(yīng)的視頻教程,稍后會發(fā)布,可以關(guān)注我個人專區(qū)的視頻更新。或者加入我們的QQ群459754978


stm32mp1 linux最小根文件系統(tǒng)制作教程的評論 (共 條)

分享到微博請遵守國家法律
松滋市| 邵东县| 惠东县| 安泽县| 卓资县| 汉沽区| 横山县| 赤城县| 安阳县| 奎屯市| 得荣县| 军事| 康乐县| 台东县| 溧阳市| 辽阳市| 亳州市| 静宁县| 佛山市| 普宁市| 德州市| 仙居县| 钦州市| 乌审旗| 张家界市| 清河县| 马公市| 团风县| 永德县| 济阳县| 封丘县| 邢台市| 彭山县| 石门县| 东明县| 宝清县| 长白| 江安县| 海伦市| 黄骅市| 蓬溪县|