国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

樹莓派Linux內(nèi)核編譯

這篇具有很好參考價(jià)值的文章主要介紹了樹莓派Linux內(nèi)核編譯。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

樹莓派內(nèi)核源代碼保存在GitHub上github.com/raspberrypi/linux,可以看做是Linux主線內(nèi)核代碼的一個(gè)分支。樹莓派內(nèi)核源代碼是從Linux主線的長期維護(hù)的穩(wěn)定版本加上樹莓派特有的改動形成的。樹莓派的內(nèi)核更新可以通過apt命令自動更新到最新的穩(wěn)定版本。但是如果你需要使用到最新的非穩(wěn)定版本或者指定版本或者要對內(nèi)核進(jìn)行裁剪或者修改內(nèi)核代碼。那么你就會需要對內(nèi)核進(jìn)行編譯。

1、下載內(nèi)核代碼

通過訪問github找到樹莓派內(nèi)核源代碼項(xiàng)目(方法見下載linux內(nèi)核代碼),通過https或者git下載你想要的版本的源代碼到本地主機(jī)。

2、編譯樹莓派內(nèi)核

編譯過成可以分成在本機(jī)上本地編譯和交叉編譯,本地編譯指的是在目標(biāo)主機(jī)上直接編譯,編譯完成后就在目標(biāo)主機(jī)上直接運(yùn)行,交叉編譯是指在其它主機(jī)上編譯,編譯完成后再把編譯出來的程序安裝到目標(biāo)主機(jī)上執(zhí)行。在樹莓派這里,我們可以采用本地編譯與可以采用交叉編譯,因?yàn)闃漭蛇\(yùn)行速度較慢,所以交叉編譯在這里可以顯著的提高編譯速度。

3、本地編譯

3.1、安裝編譯環(huán)境

啟動樹莓派后,輸入如下命令安裝編譯環(huán)境

sudo apt install git bc bison flex libssl-dev make

3.2、下載樹莓派內(nèi)核代碼

然后通過https下載Linux內(nèi)核代碼后解決壓或者通過git下載代碼到/usr/src目錄下,如下所示:

xxx@raspberrypi:/usr/src $ ls -l
total 16
drwxr-xr-x 27 root root 4096 Jun  5 13:56 linux-rpi-6.1.y
xxx@raspberrypi:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@raspberrypi:/usr/src/linux-rpi-6.1.y $ ls -l
total 1012
drwxr-xr-x  24 root root   4096 Jun  4 19:39 arch
drwxr-xr-x   3 root root  12288 Jun  5 14:01 block
drwxr-xr-x   2 root root   4096 Jun  5 10:28 certs
-rw-r--r--   1 root root    496 Jun  4 19:39 COPYING
-rw-r--r--   1 root root 101639 Jun  4 19:39 CREDITS
drwxr-xr-x   4 root root  20480 Jun  5 13:25 crypto
drwxr-xr-x  86 root root   4096 Jun  4 19:39 Documentation

3.3、配置內(nèi)核

開始編譯之前我們需要先對內(nèi)核進(jìn)行配置,讓編譯工程知道我們要編譯的內(nèi)核的目標(biāo)主機(jī)架構(gòu)等信息,編譯工程才知道自己應(yīng)該怎么編譯。

  1. 使用默認(rèn)配置
  • 如果你的設(shè)備是Raspberry Pi 1, Zero 或者 Zero W 或者 Raspberry Pi Compute Module 1 ,那么它們只支持32-bit的Linux內(nèi)核,可以使用如下內(nèi)核配置命令配置成默認(rèn)配置。
xxx@raspberrypi:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@raspberrypi:/usr/src $ KERNEL=kernel
xxx@raspberrypi:/usr/src $ sudo make bcmrpi_defconfig
  • 如果你的設(shè)備是Raspberry Pi 2, 3, 3+ 或者 Zero 2 W 或者 Raspberry Pi Compute Modules 3, 3+,且使用32-bit的內(nèi)核,可以使用如下內(nèi)核配置命令配置成默認(rèn)配置。
xxx@raspberrypi:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@raspberrypi:/usr/src $ KERNEL=kernel7
xxx@raspberrypi:/usr/src $ sudo make bcm2709_defconfig
  • 如果你的設(shè)備是Raspberry Pi 4 或者 400, 或者 Raspberry Pi Compute Module 4 ,且使用32-bit的內(nèi)核,可以使用如下內(nèi)核配置命令配置成默認(rèn)配置。
xxx@raspberrypi:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@raspberrypi:/usr/src $ KERNEL=kernel7l
xxx@raspberrypi:/usr/src $ sudo make bcm2711_defconfig
  • 如果你的設(shè)備是Raspberry Pi 3, 3+, 4, 400 或者 Zero 2 W, 或者 Raspberry Pi Compute Modules 3, 3+ 或者 4,那么它們還支持64-bit的內(nèi)核,可以使用如下內(nèi)核配置命令配置成默認(rèn)配置。
xxx@raspberrypi:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@raspberrypi:/usr/src $ KERNEL=kernel8
xxx@raspberrypi:/usr/src $ sudo make bcm2711_defconfig

本文使用的是樹莓派zero w,只支持32位內(nèi)核,所以使用的是第一種配置。

  1. 自定義內(nèi)核配置
    待更新

  2. 加入內(nèi)核補(bǔ)丁
    待更新

3.4、定制內(nèi)核版本號

修改當(dāng)前目錄下的.config文件里的
CONFIG_LOCALVERSION=“my_first_kernel”

xxx@raspberrypi:/usr/src/linux-rpi-6.1.y $ ls -a | grep config
.cocciconfig
.config----------------------------修改這個(gè)文件里的LOCAL配置項(xiàng)成你想要的任何字符串
Kconfig

這個(gè)可以在你后續(xù)運(yùn)行中通過uname命令查詢到你自己編譯的Linux內(nèi)核的版本號,也會讓新的內(nèi)核在/lib/modules目錄下產(chǎn)生新的目錄文件去放置新內(nèi)核的模塊,而不是直接覆蓋。

3.5、編譯并安裝內(nèi)核

這一步,我們將編譯,安裝內(nèi)核,模塊和設(shè)備樹,因?yàn)闃漭尚阅鼙容^差,所以這一步會花費(fèi)非常長的時(shí)間,尤其是如果你使用的是樹莓派的早期硬件版本的話,就更慢了。

32bit內(nèi)核

make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

64bit內(nèi)核

make -j4 Image.gz modules dtbs
sudo make modules_install
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm64/boot/Image.gz /boot/$KERNEL.img

編譯安裝完成后,重啟則已經(jīng)用新編譯的內(nèi)核了。

4、交叉編譯

這里以ubuntu為例,介紹如何對樹莓派內(nèi)核進(jìn)行交叉編譯

4.1、安裝編譯環(huán)境

啟動樹莓派后,輸入如下命令安裝編譯環(huán)境

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

根據(jù)你編譯的目標(biāo)是32bit內(nèi)核還是64bit內(nèi)核選擇安裝不同的toolchain

  • 32bit
sudo apt install crossbuild-essential-armhf
  • 64bit
sudo apt install crossbuild-essential-arm64

4.2、下載樹莓派內(nèi)核代碼

然后通過https下載Linux內(nèi)核代碼后解決壓或者通過git下載代碼到/usr/src目錄下,如下所示:

xxx@ubuntu:/usr/src $ ls -l
total 16
drwxr-xr-x 27 root root 4096 Jun  5 13:56 linux-rpi-6.1.y
xxx@ubuntu:/usr/src $ cd ./linux-rpi-6.1.y/
xxx@ubuntu:/usr/src/linux-rpi-6.1.y $ ls -l
total 1012
drwxr-xr-x  24 root root   4096 Jun  4 19:39 arch
drwxr-xr-x   3 root root  12288 Jun  5 14:01 block
drwxr-xr-x   2 root root   4096 Jun  5 10:28 certs
-rw-r--r--   1 root root    496 Jun  4 19:39 COPYING
-rw-r--r--   1 root root 101639 Jun  4 19:39 CREDITS
drwxr-xr-x   4 root root  20480 Jun  5 13:25 crypto
drwxr-xr-x  86 root root   4096 Jun  4 19:39 Documentation

4.3、配置內(nèi)核

開始編譯之前我們需要先對內(nèi)核進(jìn)行配置,讓編譯工程知道我們要編譯的內(nèi)核的目標(biāo)主機(jī)架構(gòu)等信息,編譯工程才知道自己應(yīng)該怎么編譯。

  • 32-bit

如果你的設(shè)備是Raspberry Pi 1, Zero 或者 Zero W 或者 Raspberry Pi Compute Module 1:

cd linux-rpi-6.1.y
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig

如果你的設(shè)備是Raspberry Pi 2, 3, 3+ 或者 Zero 2 W 或者 Raspberry Pi Compute Modules 3, 3+:

cd linux-rpi-6.1.y
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

如果你的設(shè)備是Raspberry Pi 4 或者 400, 或者 Raspberry Pi Compute Module 4 :

cd linux-rpi-6.1.y
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig
  • 64-bit

如果你的設(shè)備是Raspberry Pi 3, 3+, 4, 400 或者 Zero 2 W, 或者 Raspberry Pi Compute Modules 3, 3+ 或者 4:

cd linux-rpi-6.1.y
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

本文使用的是樹莓派zero w,只支持32位內(nèi)核,所以使用的是第一種配置。

4.4、定制內(nèi)核版本號

修改當(dāng)前目錄下的.config文件里的
CONFIG_LOCALVERSION=“-v7-MY_FIRST_KERNEL”

xxx@raspberrypi:/usr/src/linux-rpi-6.1.y $ ls -a | grep config
.cocciconfig
.config----------------------------修改這個(gè)文件里的LOCAL配置項(xiàng)成你想要的任何字符串
Kconfig

這個(gè)可以在你后續(xù)運(yùn)行中通過uname命令查詢到你自己編譯的Linux內(nèi)核的版本號,也會讓新的內(nèi)核在/lib/modules目錄下產(chǎn)生新的目錄文件去放置新內(nèi)核的模塊,而不是直接覆蓋。

4.5、編譯內(nèi)核

這一步,我們將編譯,安裝內(nèi)核,模塊和設(shè)備樹,因?yàn)槭墙徊婢幾g,交叉編譯用的主要性能相對于樹莓派而言都是非常非常高的了,所以這一步會花費(fèi)的時(shí)間會比較短,8核 i7用-j12選項(xiàng)一般來說25分鐘就可以編完了。

32bit內(nèi)核

make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

64bit內(nèi)核

make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

4.6、安裝內(nèi)核

完成交叉編譯后,需要將編譯出來的內(nèi)核拷貝到樹梅莓里并安裝內(nèi)核模塊。通過將SD讀卡器插入編譯主機(jī)的方式進(jìn)行的操作會比較簡單。下面就以這個(gè)為例進(jìn)行說明。

將帶有SD卡的SD卡讀卡器插入主機(jī),輸入以下命令(注意,如果你的主機(jī)本來就有多個(gè)硬盤那么插入的SD卡可能顯示的是sdc之類的,注意鑒別一下):


xxx@xx-PC:~$ lsblk -f | grep sdb
sdb
├─sdb1 vfat     FAT32 bootfs CEE7-0DF0
└─sdb2 ext4     1.0   rootfs ebadab55-bd70-46a9-8f18-995c136fb5b2

  1. 掛載這二個(gè)分區(qū):
sudo mkdir mnt
sudo mkdir mnt/fat32
sudo mkdir mnt/ext4
sudo mount /dev/sdb1 mnt/fat32
sudo mount /dev/sdb2 mnt/ext4
  1. 安裝內(nèi)核模塊到sd卡
  • 32bit系統(tǒng)
sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
  • 64bit系統(tǒng)
sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=mnt/ext4 modules_install
  1. 安裝內(nèi)核與設(shè)備樹(安裝前可以先備份原先的內(nèi)核):
  • 32bit系統(tǒng)
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4
  • 64bit系統(tǒng)
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image mnt/fat32/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb mnt/fat32/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm64/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4

退出SD卡,將SD卡插回樹莓派,重啟則可。

5、內(nèi)核更新結(jié)果

我們可以看到內(nèi)核版本已經(jīng)變成6.1.31my_first_kernel,也已經(jīng) 更新了內(nèi)核編譯的時(shí)間。文章來源地址http://www.zghlxwxcb.cn/news/detail-472810.html

xxx@raspberrypi:~ $ uname -a
Linux raspberrypi 6.1.31my_first_kernel #1 Mon Jun  5 20:48:53 CST 2023 armv6l GNU/Linux

到了這里,關(guān)于樹莓派Linux內(nèi)核編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • blender源代碼編譯運(yùn)行

    blender源代碼編譯運(yùn)行

    其實(shí)在blender官網(wǎng)上已經(jīng)給出了編譯步驟https://wiki.blender.org/wiki/Building_Blender/Windows,由于在源碼編譯的過程中還遇到了很多問題,特此記錄一下。 Visual Studio2019或者2022(至少選擇【Desktop Development with C++】),我自己是下載的2022版,這里記錄了下載的方法及過程https://blog.csdn.net

    2024年02月02日
    瀏覽(90)
  • Python反編譯exe獲取封裝源代碼

    Python反編譯exe獲取封裝源代碼

    先把exe和pyinstxtractor放在一起 會得到一個(gè)文件夾 安裝解析庫 一共有兩個(gè),還有個(gè)struct 用sublime打開兩個(gè)文件,看到一堆二進(jìn)制,其中struct是多一行的,把struct的第一行復(fù)制到前一個(gè)文件中 uncompyle6 C:UserslenovoDesktop20223102412-李凌飛exemerge_ALL_ALL_V1.0.exe_extractedmerge_ALL_ALL_V1.0

    2024年01月19日
    瀏覽(20)
  • mysql源代碼編譯安裝(可自擬版本)

    mysql源代碼編譯安裝(可自擬版本)

    centOS7 mysql5.6.40為例 關(guān)閉防火墻的條件下 1.yum安裝 2.rpm查詢一下 3.創(chuàng)建mysql用戶,用于授權(quán)目錄 -s /sbin/nologin 不允許用戶進(jìn)行任何交互操作 -M 不要自動創(chuàng)建用戶的 home 目錄 mysql 為用戶名 查看用戶是否已經(jīng)存在 ?在想要指定目錄下載 這里我以/opt/mysql為例 1.下載源碼 可以換別

    2024年02月14日
    瀏覽(24)
  • ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速

    ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速

    使用cpu進(jìn)行軟編解碼時(shí),cpu效率低并且占用高。使用硬件加速,能夠明顯降低CPU的占用,參看博客 ffmpeg學(xué)習(xí)(16)AVDevice使用。 這里以使用英偉達(dá)gpu進(jìn)行h264編解碼加速為例說明,其他平臺類似。 在windows平臺直接下載官方的預(yù)編譯ffmpeg、lib開發(fā)包,都已經(jīng)支持了英偉達(dá)顯卡硬

    2023年04月09日
    瀏覽(23)
  • X86架構(gòu)下交叉編譯arm64源代碼

    glibc在/lib(/lib32 /lib64)目錄下的.so文件為libc.so.6 glibc是GNU發(fā)布的libc庫,即c運(yùn)行庫。glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫都會依賴于glibc。glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù)的實(shí)現(xiàn)。由于 glibc 囊括了幾乎所有

    2023年04月21日
    瀏覽(23)
  • Java源代碼是如何編譯,加載到內(nèi)存中的?

    Java源代碼是如何編譯,加載到內(nèi)存中的?

    相信許多開發(fā)同學(xué)看過《深入理解java虛擬機(jī)》,也閱讀過java虛擬機(jī)規(guī)范,書籍和文檔給人的感覺不夠直觀,本文從一個(gè)簡單的例子來看看jvm是如何工作的吧。 本文所有操作均在mac上進(jìn)行。 示例代碼采用最常見的雙重檢索單例模式: 經(jīng)過編譯后,我們得到class文件,然后用

    2024年02月13日
    瀏覽(25)
  • 樹莓派Linux內(nèi)核編譯

    樹莓派內(nèi)核源代碼保存在GitHub上github.com/raspberrypi/linux,可以看做是Linux主線內(nèi)核代碼的一個(gè)分支。樹莓派內(nèi)核源代碼是從Linux主線的長期維護(hù)的穩(wěn)定版本加上樹莓派特有的改動形成的。樹莓派的內(nèi)核更新可以通過apt命令自動更新到最新的穩(wěn)定版本。但是如果你需要使用到最新

    2024年02月08日
    瀏覽(27)
  • 銀河麒麟V10 SP1 ARM編譯QT源代碼

    銀河麒麟V10 SP1 ARM編譯QT源代碼

    最近因?yàn)橐恍┦虑樾枰阢y河麒麟ARM系統(tǒng)上[銀河麒麟V10 SP1 ARM 2203 linux5.4.96-11]安裝QT5.12.4版本,由于QT官方不提供ARM版的安裝包,無奈只能自己手動編譯源代碼。 后續(xù)補(bǔ)充:實(shí)際上我要裝的是Qt5.14.2 而不是 5.12.4,不過同樣的環(huán)境下Qt5.14.2也編譯成功了。 這是一篇個(gè)人筆記,對

    2024年02月05日
    瀏覽(33)
  • 【Java可執(zhí)行命令】(一)編譯工具javac:從源代碼到字節(jié)碼,深入解析Java編譯工具 javac ~

    【Java可執(zhí)行命令】(一)編譯工具javac:從源代碼到字節(jié)碼,深入解析Java編譯工具 javac ~

    Java 編程語言的可執(zhí)行命令程序 javac 是 Java Development Kit (JDK) 的一部分,旨在將 Java 源代碼編譯為可執(zhí)行的字節(jié)碼文件。 javac 的設(shè)計(jì)目的是為了支持 Java 的跨平臺特性,使開發(fā)人員能夠編寫一次代碼,然后在不同的操作系統(tǒng)上運(yùn)行。 javac 是 Java 編譯器的命令行前端,它將 Ja

    2024年02月16日
    瀏覽(20)
  • 【Linux】源代碼軟件包

    【Linux】源代碼軟件包

    人不走空 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? 目錄 ? ????????個(gè)人主頁:人不走空?????? ??系列專欄:算法專題 ?詩詞歌賦:斯是陋室,惟吾德馨 1. 什么是源代碼軟件包? 2. 源代碼軟件包的主要組成部分 3. 源代碼軟

    2024年01月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包