加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX学习:为树莓派 3 构建 64 位内核

发布时间:2020-12-13 17:38:05 所属栏目:Linux 来源:网络整理
导读:《LINUX学习:为树莓派 3 构建 64 位内核》要点: 本文介绍了LINUX学习:为树莓派 3 构建 64 位内核,希望对您有用。如果有疑问,可以联系我们。 编纂:在写完这个这篇文章之后,我在树莓派 3 上基于 Debian 开始打造 64 位的系统.你可以在这里找到. 树莓派 3

《LINUX学习:为树莓派 3 构建 64 位内核》要点:
本文介绍了LINUX学习:为树莓派 3 构建 64 位内核,希望对您有用。如果有疑问,可以联系我们。

编纂:在写完这个这篇文章之后,我在树莓派 3 上基于 Debian 开始打造 64 位的系统.你可以在这里找到.

树莓派 3 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 处置器,它是一个 64 位 CPU.如果你有一块,运行以下命令可能会让你感到惊讶:

是的,这是一个 32 位内核.这是因为树莓派基金会还没有为官方的树莓派系统 Raspbian 提供 64 位版本.然而你可以构建一个,多亏了 Electron752 提供的很多补丁.

?

构建内核

树莓派基金会维护着它们本身的 Linux 内核分支,它为它们的设备特别裁剪过,同时定期地从上游合并.

我们将会遵照这个页面的指导来构建一个 64 位内核.

我们不能使用“本地构建”的办法,因为它需要一块 64 位的树莓派,这个我们明显还没有.因此我们需要交叉编译它,Ubuntu 是推荐的系统.我个人没有 Ubuntu,因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建,这应该花费我 $0.03.如果你也想这么做,你可以通过这个链接得到 $10 的免费额度.或者你可以通过使用 Virtualbox 中的 Ubuntu VM 作为实例.

首先,我们必要一些构建工具以及** aarch64 交叉编译器**:

  1. apt-get update
  2. apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip

接着我们可以下载 Linux 内核源码

  1. gitclonedepth=1-b rpi-4.8.y https://github.com/raspberrypi/linux.git

进入到创建的 git 目录.另外你可以为你的内核添加额外的版本标签,可以通过编纂 Makefile 的开始几行完成:

  1. VERSION =4
  2. PATCHLEVEL =8
  3. SUBLEVEL =13
  4. EXTRAVERSION =+bilal

为了构建它,运行下面的敕令:

  1. make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
  2. make-j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

第一个应该很快.第二个则会完全不同,我没有精确计时,但是对我来说大概要半个小时.根据你的 CPU 数(nproc * 1.5)调整 -j 标记.

?

选择一个 Linux 刊行版

在内核编译的时候,我们可以开始准备它的 Linux 刊行版了.在本教程中为了简单我使用 Raspbian,即使这是一个只有 32 位的刊行版.

如果你想要一直用 64 位系统,你应该选一个有 aarch64 支持的发行版,Debian 有一个健壮的 ARM64 移植版.获得它基本有三种方式:

  • 下载一个预构建的根文件系统,这很可能会如页面中提到的那样给你一个过期的版本.
  • 如果你熟悉 debootstrap,用它构建你本身的(这回比较棘手,因为它需要一些手工调整,它最初的目的是在已经运行的主机上进行 chroot,而不是为其他机器构建根文件系统)
  • 我建议使用 multistrap,这里有一个很好的教程:http://free-electrons.com/blog/embdebian-with-multistrap/

回到 Raspbian,我们现在可以下载官方系统,并开始准备了.

打开一个新的 shell 会话并运行下面的敕令:

  1. wget-O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
  2. unzip raspbian.zip

我们用下面的敕令审查:

  1. fdisk-l 2016-11-25-raspbian-jessie-lite.img
  2. Disk2016-11-25-raspbian-jessie-lite.img:1.3GiB,1390411776 bytes,2715648 sectors
  3. Units: sectors of 1*512=512 bytes
  4. Sectorsize(logical/physical):512 bytes /512 bytes
  5. I/O size(minimum/optimal):512 bytes /512 bytes
  6. Disklabel type: dos
  7. Disk identifier:0x244b8248
  8. DeviceBootStartEndSectorsSizeIdType
  9. 2016-11-25-raspbian-jessie-lite.img1 819213721512902463M c W95 FAT32 (LBA)
  10. 2016-11-25-raspbian-jessie-lite.img2 137216271564725784321.2G83Linux

我们可以看到它有两个分区.第一个是启动分区,它主要包括了 bootloader、Linux 内核以及少量配置文件.第二个是根分区.

我们可以在我们的文件系统上挂载这些分区,从根分区开端:

  1. mount-o loop,offset=702545922016-11-25-raspbian-jessie-lite.img /mnt

offset 取决于扇区年夜小(512):70254592 = 512 * 137216

接着是启动分区

  1. mount-o loop,offset=4194304,sizelimit=660602882016-11-25-raspbian-jessie-lite.img /mnt/boot

offset :4194304 = 512 * 8192,sizelimit:66060288 = 512 * 129024 .

树莓派系统现在应该可以在 /mnt 中看到了.我们根本要完成了.

?

打包内核

内核编译完成后,最后一步包含复制 Linux 内核以及设备树到启动分区中:

  1. cp arch/arm64/boot/Image/mnt/boot/kernel8.img
  2. cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/

调整 config.txt?:

  1. echokernel=kernel8.img>>/mnt/boot/config.txt

安装内核模块?:

  1. make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
  2. umount/mnt/boot
  3. umount/mnt

便是这样了,用于树莓派 3 的** ARM64 Linux 内核**诞生了!

现在你可以压缩镜像,通过 scp 下载下来,并依照标准的步骤放到你的 SD 卡中.

最后你会获得:

  1. uname-a
  2. 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 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文永远更新链接地址

欢迎参与《LINUX学习:为树莓派 3 构建 64 位内核》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读