日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

通过Buildroot自制根文件系统

發(fā)布時間:2024/1/1 windows 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Buildroot自制根文件系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

根文件系統(tǒng)是Linux內(nèi)核啟動之后讀取的一個文件系統(tǒng),并從這個文件系統(tǒng)中加載第一個init應用程序并啟動,就是Linux上俗稱的root進程、根進程

制作它的方式有很多,例如busybox、yocto,但是這兩個方式有缺點,第一個是busybox太精簡了,不足以滿足最新版Linux內(nèi)核運行時所需的目錄結(jié)構(gòu),而Yocto比較龐大,Buildroot是最合適的選擇,它基于Busybox來構(gòu)建根文件系統(tǒng),Buildroot完善了busybox目錄結(jié)構(gòu),并且支持創(chuàng)建用戶,如果使用busybox需要我們自己來手動構(gòu)建目錄結(jié)構(gòu)與文件體系

因為新版Linux內(nèi)核啟動時不單單只是需要文件系統(tǒng)里存在幾個目錄,還需要有system v的一些服務,目前4.x版本用的是systemD,如果你對內(nèi)核沒有足夠的了解的情況下最好還是使用這些構(gòu)建工具幫助我們來創(chuàng)建,否則你創(chuàng)建的根文件系統(tǒng)很可能無法引導Linux,就算引導起來了可能也會因為缺失某些文件而導致無法正常工作。

當然你也可以通過copy某些發(fā)行版的Linux文件結(jié)構(gòu)到你的根文件系統(tǒng)下,不過最好還是使用一些構(gòu)建工具來完成,例如你創(chuàng)建用戶的話是需要使用Linux的加密程序與了解Linux用戶存儲結(jié)構(gòu)才能創(chuàng)建用戶。

制作根文件系統(tǒng)純粹就是在通過文件形式來構(gòu)造一個Linux系統(tǒng),為內(nèi)核提供用戶態(tài)的體系

Buildroot與Yocto一樣,它也是用來構(gòu)建Linux嵌入式系統(tǒng)的,但與Yocto不同的是,它比較迷你、小巧,但缺點是移植包比較少,大多數(shù)情況下需要我們自己來移植包,用來構(gòu)建一些小型Linux嵌入式系統(tǒng)比較方便,但如果真正想制作成類型Ubuntu那樣的發(fā)行版還是需要使用Yocto和Debian

Buildroot是使用make來管理項目,通過make menuconfig來控制構(gòu)建哪些項目,同時它也是需要從互聯(lián)網(wǎng)下載所需tools的,但是不同的是它不會向Yocto那樣需要個七八十G的內(nèi)存,所以Buildroot是比較小巧的項目,但可以通過基于Buildroot來定制化你自己的構(gòu)建項目。

獲取源碼

官網(wǎng)下載地址:https://buildroot.org/

github下載地址:https://github.com/buildroot/buildroot

開始制作

將源代碼下載下來之后,Buildroot移植Linux內(nèi)核上的menuconfig,使用與Linux一樣的配置命令:make menuconfig進入配置界面來對它進行配置

首先選擇Target options,然后根據(jù)你板子的信息配置一下,下面是我的配置內(nèi)容:

Target options-> Target Architecture = ARM (little endian)-> Target Binary Format = ELF-> Target Architecture Variant = cortex-A7-> Target ABI = EABIhf-> Floating point strategy = NEON/VFPv4-> ARM instruction set = ARM

然后選擇Toolchian

Toolchain-> Toolchain type = External toolchain //使用用戶自己的編譯器-> Toolchain = Custom toolchain //使用自定義工具鏈-> Toolchain origin = Pre-installed toolchain //預裝的編譯器-> Toolchain path = /home/zhihao/arm/bin //編譯器絕對路徑-> Toolchain prefix = $(ARCH)-linux-gnueabihf //編譯器前綴-> External toolchain gcc version = 8.x //編譯器版本,需要與你編譯器版本對上-> External toolchain kernel headers series = 4.1.x //外部工具鏈內(nèi)核標頭,你可以在編譯器arm-buildroot-linux-gnueabihf/sysroot/usr/include/linux/version.h目錄下找到它的值,是十六進制的,需要轉(zhuǎn)換-> External toolchain C library = glibc/eglibc //選擇嵌入式gcc庫-> [*] Toolchain has SSP support? (NEW) //選中-> [*] Toolchain has RPC support? (NEW) //選中-> [*] Toolchain has C++ support? //選中-> [*] Enable MMU support (NEW) //選中

然后在選擇System configuration

System configuration-> System hostname = Jasonangel //平臺名字,自行設置-> System banner = Welcome to xxxxx //歡迎語-> Init system = BusyBox //使用 busybox-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev-> [*] Enable root login with password (NEW) //使能登錄密碼-> Root password = 123456 //登錄密碼為 123456

最后在配置文件系統(tǒng)格式

-> Filesystem images-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的話就用 ext3/ext4-> ext2/3/4 variant = ext4 //選擇 ext4 格式//-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的話就用 ubifs

最后在將內(nèi)核、bootload關(guān)掉,只編譯根文件系統(tǒng)

-> Kernel-> [ ] Linux Kernel //不要選擇編譯 Linux Kernel 選項!-> Bootloaders-> [ ] U-Boot //不要選擇編譯 U-Boot 選項!

如果你想配置第三方庫,可以選擇Target packages

在這個里面你可以選擇opencv、ffmpeg這些庫,buildroot會自動編譯到根文件系統(tǒng)lib目錄下

配置完成之后直接make即可開始編譯

make

在make期間可能會出現(xiàn)下載404的問題

或者一直卡在下載處Time out的問題,這個原因是因為Buildroot里的鏈接可能失效了,又或者你無法科學上網(wǎng)的原因?qū)е碌?/span>

有兩種解決方案,你可以先跟著報錯包的名字到github上去找release版本或者去官網(wǎng)找,找到下載地址以后進入到package目錄下,然后進入到包名字的目錄,里面有一個包名字.mk的文件,打開它可以看到如下內(nèi)容:

PKGCONF_VERSION = 1.6.3 PKGCONF_SITE = https://github.com/pkgconf/pkgconf/archive/refs/tags PKGCONF_SOURCE = pkgconf-$(PKGCONF_VERSION).tar.gz PKGCONF_LICENSE = pkgconf license PKGCONF_LICENSE_FILES = COPYING PKGCONF_CPE_ID_VENDOR = pkgconfPKG_CONFIG_HOST_BINARY = $(HOST_DIR)/bin/pkg-config

將PKGCONF_SITE修改為你找到可用的地址就可用了,Buildroot會把PKGCONF_VERSION 、PKGCONF_SITE 、PKGCONF_SOURCE 組成一個完整的下載鏈接,注意仔細分割

如果你修改了名字,還需要修改pkgconf.hash里的名字

第二種方法就是在dl目錄下創(chuàng)建一個包名字的目錄,然后把包下載下來放進去就可以了,需要注意,包的版本名字壓縮方式都需要與報錯的名字一致

當下載完成之后幾秒鐘就完成了根文件系統(tǒng)的制作,根文件系統(tǒng)會輸出到output目錄下為rootfs.tar文件

同時如果你想修改busybox可以使用如下命令來設置

sudo make busybox-menuconfig

總結(jié)

以上是生活随笔為你收集整理的通过Buildroot自制根文件系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。