From 4349fc4cd3dc2e2b28f28b3c2888fdb495f592f7 Mon Sep 17 00:00:00 2001
From: wxy <xingyu.wang@gmail.com>
Date: Sun, 2 Jul 2017 22:59:43 +0800
Subject: [PATCH] PRF&PUB:20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI
 3.md

@geekpi
---
 ...A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md | 165 ++++++++++++++++++
 ...A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md | 142 ---------------
 2 files changed, 165 insertions(+), 142 deletions(-)
 create mode 100644 published/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md
 delete mode 100644 translated/tech/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md

diff --git a/published/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md b/published/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md
new file mode 100644
index 0000000000..be292912f2
--- /dev/null
+++ b/published/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md	
@@ -0,0 +1,165 @@
+为树莓派 3 构建 64 位内核
+============================================================
+
+
+> 编辑：在写完这个这篇文章之后，我在树莓派 3 上基于 Debian 开始打造 64 位的系统。你可以[在这里找到][3]。
+
+**树莓派 3** 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 处理器，它是一个 **64 位 CPU**。如果你有一块，运行以下命令可能会让你感到惊讶：
+
+```
+uname -a
+Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux
+```
+
+是的，这是一个 **32 位内核**。这是因为树莓派基金会还没有为官方的树莓派系统 Raspbian 提供 64 位版本。然而你可以构建一个，多亏了 [Electron752][9] 提供的许多补丁。
+
+### 构建内核
+
+树莓派基金会维护着[它们自己的 Linux 内核分支][10]，它为它们的设备特别裁剪过，同时定期地从上游合并。
+
+我们将会遵照[这个页面][11]的指导来**构建一个 64 位内核**。
+
+我们不能使用“本地构建”的方法，因为它需要一块 64 位的树莓派，这个我们明显还没有。因此我们需要**交叉编译**它，**Ubuntu** 是推荐的系统。我个人没有 Ubuntu，因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建，这应该花费我 $0.03。如果你也想这么做，你可以通过[这个链接][12]得到 $10 的免费额度。或者你可以通过使用 Virtualbox 中的 Ubuntu VM 作为实例。
+
+首先，我们需要一些**构建工具**以及** aarch64 交叉编译器**：
+
+```
+apt-get update
+apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip
+```
+
+接着我们可以下载 **Linux 内核源码**：
+
+```
+git clone –depth=1 -b rpi-4.8.y https://github.com/raspberrypi/linux.git
+```
+
+进入到创建的 git 目录。另外你可以为你的内核添加额外的版本标签，可以通过编辑 `Makefile` 的开始几行完成：
+
+```
+VERSION = 4
+PATCHLEVEL = 8
+SUBLEVEL = 13
+EXTRAVERSION = +bilal
+```
+
+为了**构建它**，运行下面的命令：
+
+```
+make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
+make -j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
+```
+
+第一个应该很快。第二个则会完全不同，我没有精确计时，但是对我来说大概要半个小时。根据你的 CPU 数（nproc * 1.5）调整 `-j` 标志。
+
+### 选择一个 Linux 发行版
+
+在内核编译的时候，我们可以开始准备它的 Linux 发行版了。在本教程中为了简单我使用 **Raspbian**，即使这是一个只有 32 位的发行版。
+
+> 如果你想要一直用 64 位系统，你应该选一个有 aarch64 支持的发行版，Debian 有一个健壮的 [ARM64 移植版][4]。得到它基本有三种方式：
+>  - 下载一个预构建的根文件系统，这很可能会如页面中提到的那样给你一个过期的版本。
+>  - 如果你熟悉 debootstrap，用它构建你自己的（这回比较棘手，因为它需要一些手工调整，它最初的目的是在已经运行的主机上进行 chroot，而不是为其他机器构建根文件系统）
+>  - 我建议使用 multistrap，这里有一个很好的教程：http://free-electrons.com/blog/embdebian-with-multistrap/
+
+回到 Raspbian，我们现在可以下载官方系统，并开始准备了。
+
+打开一个新的 shell 会话并运行下面的命令：
+
+```
+wget -O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
+unzip raspbian.zip
+```
+
+我们用下面的命令审查：
+
+```
+fdisk -l 2016-11-25-raspbian-jessie-lite.img
+Disk 2016-11-25-raspbian-jessie-lite.img: 1.3 GiB, 1390411776 bytes, 2715648 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / 512 bytes
+Disklabel type: dos
+Disk identifier: 0x244b8248
+
+Device Boot Start End Sectors Size Id Type
+2016-11-25-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
+2016-11-25-raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux
+```
+
+我们可以看到它有**两个分区**。第一个是**启动分区**，它主要包含了 bootloader、Linux 内核以及少量配置文件。第二个是**根分区**。
+
+我们可以在我们的文件系统上**挂载这些分区**，从**根分区**开始：
+
+```
+mount -o loop,offset=70254592 2016-11-25-raspbian-jessie-lite.img /mnt
+```
+
+`offset` 取决于扇区大小（512）：70254592 = 512 * 137216
+
+接着是**启动分区**：
+
+```
+mount -o loop,offset=4194304,sizelimit=66060288 2016-11-25-raspbian-jessie-lite.img /mnt/boot
+```
+
+`offset` ：4194304 = 512 * 8192，`sizelimit`：66060288 = 512 * 129024 。
+
+树莓派系统现在应该可以在 `/mnt` 中看到了。我们基本要完成了。
+
+### 打包内核
+
+内核编译完成后，最后一步包括**复制 Linux 内核**以及**设备树**到启动分区中：
+
+```
+cp arch/arm64/boot/Image /mnt/boot/kernel8.img
+cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/
+```
+
+调整 `config.txt` :
+
+```
+echo “kernel=kernel8.img” >> /mnt/boot/config.txt
+```
+
+安装**内核模块** :
+
+```
+make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
+umount /mnt/boot
+umount /mnt
+```
+
+就是这样了，用于树莓派 3 的** ARM64 Linux 内核**诞生了！
+
+现在你可以压缩镜像，通过 scp 下载下来，并按照标准的步骤放到你的 SD 卡中。
+
+最后你会得到：
+
+```
+uname -a
+Linux raspberrypi 4.8.13+bilal-v8+ #1 SMP Wed Dec 14 14:09:38 UTC 2016 aarch64 GNU/Linux
+```
+
+--------------------------------------------------------------------------------
+
+via: https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/
+
+作者：[Bilal Amarni][a]
+译者：[geekpi](https://github.com/geekpi)
+校对：[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:http://devsidestory.com/about-me
+[1]:https://devsidestory.com/author/bamarni/
+[2]:https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/
+[3]:https://github.com/bamarni/pi64
+[4]:https://wiki.debian.org/Arm64Port
+[5]:https://devsidestory.com/#twitter
+[6]:https://devsidestory.com/#linkedin
+[7]:https://devsidestory.com/#google_plus
+[8]:https://www.addtoany.com/share#url=https%3A%2F%2Fdevsidestory.com%2Fbuild-a-64-bit-kernel-for-your-raspberry-pi-3%2F&title=Build%20a%2064-bit%20Kernel%20for%20your%20Raspberry%20Pi%203
+[9]:https://github.com/Electron752
+[10]:https://github.com/raspberrypi/linux
+[11]:https://www.raspberrypi.org/documentation/linux/kernel/building.md
+[12]:https://m.do.co/c/8ef9c5832a9c
diff --git a/translated/tech/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md b/translated/tech/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md
deleted file mode 100644
index 4d8e92ed40..0000000000
--- a/translated/tech/20161214 BUILD A 64-BIT KERNEL FOR YOUR RASPBERRY PI 3.md	
+++ /dev/null
@@ -1,142 +0,0 @@
-为树莓派 3 构建 64 位内核
-============================================================
-
-
-> 编辑：在写完这个这篇文章之后，我开始在树莓派 3 上开始 64 位基于 Debian 的系统。你可以[在这里找到][3]
-
-**树莓派 3** 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 处理器，它是一个 **64 位 CPU**。如果你有一块，运行以下命令可能会让你感到惊讶：
-
-> > uname -a
-> Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux
-
-是的，这是一个 **32 位内核**。这是因为树莓派基金会还没有为官方的树莓派系统 Raspbian 提供 64 位版本。然而可以构建一个，多亏了 [Electron752][9] 提供的许多补丁。
-
-# 构建内核
-
-树莓派基金会维护了[它们自己的 Linux 内核分支][10]，它为它们的设备特别裁剪过，同时会有规律地从上游合并。
-
-我们将会从[这个页面][11]接受指导来**构建一个 64 位内核**。
-
-我么不能使用“本地构建”的方法，因为它需要一块 64 位的树莓派，这个我们明显还没有。因此我们需要**交叉编译**它，**Ubuntu** 是推荐的系统。我个人没有 Ubuntu，因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建，这应该花费我 $0.03。如果你也想这么做，你可以通过[这个链接][12]得到 $10 的免费额度。或者你可以通过使用 Virtualbox 中的 Ubuntu VM 作为实例。
-
-首先，我们需要一些**构建工具**以及** aarch64 交叉编译器**：
-
-> > apt-get update
-> > apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip
-
-接着我们可以下载** Linux 内核源码**：
-
-> > git clone –depth=1 -b rpi-4.8.y https://github.com/raspberrypi/linux.git
-
-在创建的 git 目录中输入。另外你可以为你的内核添加额外的版本标签，可以通过编辑 Makefile 的开始几行达到：
-
-
-> VERSION = 4
-> PATCHLEVEL = 8
-> SUBLEVEL = 13
-> EXTRAVERSION = +bilal
-
-为了**构建它**，运行下面的命令：
-
-> > make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
-> > make -j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
-
-第一个应该很快。第二个则会完全不同，我没有精确计时，但是对我大概有半个小时。根据你的 CPU 数（nproc * 1.5）调整 -j 标志。
-
-# 选择一个 Linux 发行版
-
-在内核编译的时候，我们可以开始准备它的 Linux 发行版了。在本教程中为了简单我使用 **Raspbian**，即使这是一个只有 32 位的发行版。
-
-_如果你想要一直只用 64 为系统，你应该选一个有 aarch64 支持的发行版，Debian 有一个鲁棒的 [ARM64 移植版][4]。得到它基本有三种选择：_
- _- 下载一个预构建的根文件系统，这很可能会如页面中提到的那样给你一个过期的版本。_
- _- 如果你熟悉 debootstrap，用它构建你自己的（否则这回比较棘手，因为它需要一些手工调整，它最初的目的是从已经运行的主机上 chroot，而不是为其他机器构建根文件系统）_
- _- 我建议使用 multistrap，这里有一个很好的教程：http://free-electrons.com/blog/embdebian-with-multistrap/_ 
-
-回到 Raspbian，我们现在可以下载官方系统，并开始准备了。
-
-打开一个新的 shell 会话并运行下面的命令：
-
-> > wget -O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
-> > unzip raspbian.zip
-
-我们用下面的命令审查：
-
-> > fdisk -l 2016-11-25-raspbian-jessie-lite.img
-> Disk 2016-11-25-raspbian-jessie-lite.img: 1.3 GiB, 1390411776 bytes, 2715648 sectors
-> Units: sectors of 1 * 512 = 512 bytes
-> Sector size (logical/physical): 512 bytes / 512 bytes
-> I/O size (minimum/optimal): 512 bytes / 512 bytes
-> Disklabel type: dos
-> Disk identifier: 0x244b8248
-> 
-> Device Boot Start End Sectors Size Id Type
-> 2016-11-25-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
-> 2016-11-25-raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux
-
-我们可以看到它有**两个分区**。第一个是**启动分区**，它主要包含了 bootloader、Linux 内核以及少量配置文件。第二个是**根分区**。
-
-我们可以在我们的文件系统上**挂载这些分区**，从**根分区**开始：
-
-> > mount -o loop,offset=70254592 2016-11-25-raspbian-jessie-lite.img /mnt
-
-offset 取决于扇区大小，它的大小是 512：70254592 = 512 * 137216
-
-接着是**启动分区**：
-
-> > mount -o loop,offset=4194304,sizelimit=66060288 2016-11-25-raspbian-jessie-lite.img /mnt/boot
-
- _(offset : 4194304 = 512 * 8192, sizelimit: _  _66060288 = 512 * 129024)_ 
-
-树莓派系统现在应该可以在 /mnt 中看到了。我们基本我要完成了。
-
-# 打包内核
-
-内核编译完成后，最后一步包括**复制 Linux 内核**以及**设备树**到启动分区中：
-
-> > cp arch/arm64/boot/Image /mnt/boot/kernel8.img
-> > cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/
-
-调整 **config.txt** :
-
-> > echo “kernel=kernel8.img” >> /mnt/boot/config.txt
-
-安装**内核模块** :
-
-> > make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
-> > umount /mnt/boot
-> > umount /mnt
-
-就是这样了，用于树莓派 3 的** ARM64 Linux 内核**诞生了！
-
-现在你可以压缩镜像，从实例中通过 scp 下载下来，并按照标准的步骤放到你的 SD 卡中。
-
-最后你会得到：
-
-> > uname -a
-> Linux raspberrypi 4.8.13+bilal-v8+ #1 SMP Wed Dec 14 14:09:38 UTC 2016 aarch64 GNU/Linux
-
-[Twitter][5][LinkedIn][6][Google+][7][Share][8]
-
---------------------------------------------------------------------------------
-
-via: https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/
-
-作者：[Bilal Amarni][a]
-译者：[geekpi](https://github.com/geekpi)
-校对：[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:http://devsidestory.com/about-me
-[1]:https://devsidestory.com/author/bamarni/
-[2]:https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/
-[3]:https://github.com/bamarni/pi64
-[4]:https://wiki.debian.org/Arm64Port
-[5]:https://devsidestory.com/#twitter
-[6]:https://devsidestory.com/#linkedin
-[7]:https://devsidestory.com/#google_plus
-[8]:https://www.addtoany.com/share#url=https%3A%2F%2Fdevsidestory.com%2Fbuild-a-64-bit-kernel-for-your-raspberry-pi-3%2F&title=Build%20a%2064-bit%20Kernel%20for%20your%20Raspberry%20Pi%203
-[9]:https://github.com/Electron752
-[10]:https://github.com/raspberrypi/linux
-[11]:https://www.raspberrypi.org/documentation/linux/kernel/building.md
-[12]:https://m.do.co/c/8ef9c5832a9c
