《LINUX學(xué)習(xí):為樹莓派 3 構(gòu)建 64 位內(nèi)核》要點(diǎn):
本文介紹了LINUX學(xué)習(xí):為樹莓派 3 構(gòu)建 64 位內(nèi)核,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
編纂:在寫完這個(gè)這篇文章之后,我在樹莓派 3 上基于 Debian 開始打造 64 位的系統(tǒng).你可以在這里找到.
樹莓派 3 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 處置器,它是一個(gè) 64 位 CPU.如果你有一塊,運(yùn)行以下命令可能會(huì)讓你感到驚訝:
是的,這是一個(gè) 32 位內(nèi)核.這是因?yàn)闃漭苫饡?huì)還沒有為官方的樹莓派系統(tǒng) Raspbian 提供 64 位版本.然而你可以構(gòu)建一個(gè),多虧了 Electron752 提供的很多補(bǔ)丁.
?
樹莓派基金會(huì)維護(hù)著它們本身的 Linux 內(nèi)核分支,它為它們的設(shè)備特別裁剪過,同時(shí)定期地從上游合并.
我們將會(huì)遵照這個(gè)頁面的指導(dǎo)來構(gòu)建一個(gè) 64 位內(nèi)核.
我們不能使用“本地構(gòu)建”的辦法,因?yàn)樗枰粔K 64 位的樹莓派,這個(gè)我們明顯還沒有.因此我們需要交叉編譯它,Ubuntu 是推薦的系統(tǒng).我個(gè)人沒有 Ubuntu,因此我在一個(gè)有 2 個(gè) CPU 的 Ubuntu 16.04 Digital Ocean 實(shí)例上構(gòu)建,這應(yīng)該花費(fèi)我 $0.03.如果你也想這么做,你可以通過這個(gè)鏈接得到 $10 的免費(fèi)額度.或者你可以通過使用 Virtualbox 中的 Ubuntu VM 作為實(shí)例.
首先,我們必要一些構(gòu)建工具以及** aarch64 交叉編譯器**:
apt-get update
apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip
接著我們可以下載 Linux 內(nèi)核源碼:
gitclone–depth=1-b rpi-4.8.y https://github.com/raspberrypi/linux.git
進(jìn)入到創(chuàng)建的 git 目錄.另外你可以為你的內(nèi)核添加額外的版本標(biāo)簽,可以通過編纂 Makefile
的開始幾行完成:
VERSION =4
PATCHLEVEL =8
SUBLEVEL =13
EXTRAVERSION =+bilal
為了構(gòu)建它,運(yùn)行下面的敕令:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
make-j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
第一個(gè)應(yīng)該很快.第二個(gè)則會(huì)完全不同,我沒有精確計(jì)時(shí),但是對(duì)我來說大概要半個(gè)小時(shí).根據(jù)你的 CPU 數(shù)(nproc * 1.5)調(diào)整 -j
標(biāo)記.
?
在內(nèi)核編譯的時(shí)候,我們可以開始準(zhǔn)備它的 Linux 刊行版了.在本教程中為了簡單我使用 Raspbian,即使這是一個(gè)只有 32 位的刊行版.
如果你想要一直用 64 位系統(tǒng),你應(yīng)該選一個(gè)有 aarch64 支持的發(fā)行版,Debian 有一個(gè)健壯的 ARM64 移植版.獲得它基本有三種方式:
- 下載一個(gè)預(yù)構(gòu)建的根文件系統(tǒng),這很可能會(huì)如頁面中提到的那樣給你一個(gè)過期的版本.
- 如果你熟悉 debootstrap,用它構(gòu)建你本身的(這回比較棘手,因?yàn)樗枰恍┦止ふ{(diào)整,它最初的目的是在已經(jīng)運(yùn)行的主機(jī)上進(jìn)行 chroot,而不是為其他機(jī)器構(gòu)建根文件系統(tǒng))
- 我建議使用 multistrap,這里有一個(gè)很好的教程:http://free-electrons.com/blog/embdebian-with-multistrap/
回到 Raspbian,我們現(xiàn)在可以下載官方系統(tǒng),并開始準(zhǔn)備了.
打開一個(gè)新的 shell 會(huì)話并運(yùn)行下面的敕令:
wget-O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
unzip raspbian.zip
我們用下面的敕令審查:
fdisk-l 2016-11-25-raspbian-jessie-lite.img
Disk2016-11-25-raspbian-jessie-lite.img:1.3GiB,1390411776 bytes,2715648 sectors
Units: sectors of 1*512=512 bytes
Sectorsize(logical/physical):512 bytes /512 bytes
I/O size(minimum/optimal):512 bytes /512 bytes
Disklabel type: dos
Disk identifier:0x244b8248
DeviceBootStartEndSectorsSizeIdType
2016-11-25-raspbian-jessie-lite.img1 819213721512902463M c W95 FAT32 (LBA)
2016-11-25-raspbian-jessie-lite.img2 137216271564725784321.2G83Linux
我們可以看到它有兩個(gè)分區(qū).第一個(gè)是啟動(dòng)分區(qū),它主要包括了 bootloader、Linux 內(nèi)核以及少量配置文件.第二個(gè)是根分區(qū).
我們可以在我們的文件系統(tǒng)上掛載這些分區(qū),從根分區(qū)開端:
mount-o loop,offset=702545922016-11-25-raspbian-jessie-lite.img /mnt
offset
取決于扇區(qū)年夜小(512):70254592 = 512 * 137216
接著是啟動(dòng)分區(qū):
mount-o loop,offset=4194304,sizelimit=660602882016-11-25-raspbian-jessie-lite.img /mnt/boot
offset
:4194304 = 512 * 8192,sizelimit
:66060288 = 512 * 129024 .
樹莓派系統(tǒng)現(xiàn)在應(yīng)該可以在 /mnt
中看到了.我們根本要完成了.
?
內(nèi)核編譯完成后,最后一步包含復(fù)制 Linux 內(nèi)核以及設(shè)備樹到啟動(dòng)分區(qū)中:
cp arch/arm64/boot/Image/mnt/boot/kernel8.img
cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/
調(diào)整 config.txt
?:
echo“kernel=kernel8.img”>>/mnt/boot/config.txt
安裝內(nèi)核模塊?:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
umount/mnt/boot
umount/mnt
便是這樣了,用于樹莓派 3 的** ARM64 Linux 內(nèi)核**誕生了!
現(xiàn)在你可以壓縮鏡像,通過 scp 下載下來,并依照標(biāo)準(zhǔn)的步驟放到你的 SD 卡中.
最后你會(huì)獲得:
uname-a
Linux raspberrypi 4.8.13+bilal-v8+#1 SMP WedDec1414:09:38 UTC 2016 aarch64 GNU/Linux
via: https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/
作者:Bilal Amarni 譯者:geekpi 校對(duì):wxy
本文由 LCTT 原創(chuàng)編譯,Linux中國 榮譽(yù)推出
本文永遠(yuǎn)更新鏈接地址:
歡迎參與《LINUX學(xué)習(xí):為樹莓派 3 構(gòu)建 64 位內(nèi)核》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/10532.html