标签 64位 下的文章

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

树莓派 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 提供的许多补丁。

构建内核

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

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

我们不能使用“本地构建”的方法,因为它需要一块 64 位的树莓派,这个我们明显还没有。因此我们需要交叉编译它,Ubuntu 是推荐的系统。我个人没有 Ubuntu,因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建,这应该花费我 $0.03。如果你也想这么做,你可以通过[这个链接](https://m.do.co/c/8ef9c5832a9c)得到 $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 移植版。得到它基本有三种方式:

  • 下载一个预构建的根文件系统,这很可能会如页面中提到的那样给你一个过期的版本。
  • 如果你熟悉 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 译者:geekpi 校对:wxy

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

有的时候 Linux 新手们在下载软件的时候十分困惑,因为下载页面常常同时提供32位和64位版本的软件。所以弄清楚你的操作系统是32位的还是64位的十分重要,因为你在做很多事情的时候都需要这个信息。在这篇文章里,我们会讨论五种检测你的Linux系统是32位还是64位的方法。

检测你的 Linux 是32位还是64位的

请注意文中的这些方法是在 Ubuntu 13.10 平台测试.

1. 执行‘uname -a’ 命令

最常见的一个测试方法是运行 uname command 命令。

例如,在我的系统里,它显示了以下信息:

$ uname -a
 Linux ubuntu 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:12:00 UTC 2013 i686 athlon i686 GNU/Linux

那个高亮的 i686 (or 有时候会是i386) 说明操作系统是32位的,但是如果显示的是 x86\_64,那就说明这个操作系统是64位的。

2.运行 ‘uname -m’ 命令

上面的命令内涵太多了,可以用这个参数直指人心:‘uname -m’ 。

例如,在我的系统里,它显示了以下信息:

$ uname -m
 i686

这说明我的 Ubuntu Linux 系统是32位的,如果输出显示的是x86\_64,就说明系统是64位的。

3.使用 file 命令

尽管这样做纯粹是炫耀技巧,但是仍然不失为一种达到目的的方法。使用这个方法,需要你运行 file 命令并带上 /sbin/init 作为参数。

举个例子:

$ file /sbin/init
 /sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xc0d86a25a7abb14cad4a65a1f7d03605bcbd41f6, stripped

高亮的 32-bit 说明这是一个32位的操作系统,如果显示为 64-bit 则说明操作系统是64位的

4. 使用 arch 命令

另外一个可以选择的方法是使用 arch 命令,这个命令用于输出机器的硬件名称。

这里有一个示例:

$ arch
 i686

在这里你可以看到输出的是 i686, 这说明这是一个32位操作系统,对于64位的操作系统,输出的应该是x86\_64。

5. 通过系统设置的方法

如果你使用的是 Ubuntu 12.04 或更高, 你可以很简单地在** All Settings -> Details**里查看你的系统结构。

details

这样你就可以看到系统类型(32-bit)在这里清晰地显示出来。

你还知道别的方法来检测操作系统是32位还是64位的吗?在下面回复与我们分享吧。


via: http://mylinuxbook.com/5-ways-to-check-if-linux-is-32-bit-or-64-bit/

译者:crowner 校对:Caroline

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

大多数使用基于 Ubuntu/Debian 的发行版的人都更倾向于选择64位的系统,对吧?这是因为64位的系统能够充分发挥你的硬件的全部性能, 它使你能够在更紧张的内存资源下使用更复杂的软件,而且是真的快速使用,不必每次做一件小事都要等上许久。现在,32位仅有一个优点,那就是没有太多兼容性上的问题。每次JAVA更新都很让人很困惑,因为大多数用户都不能获得需要的库文件。在过去,很多别的软件和驱动也没有64位版。

因此,如果现在你有一个64位架构的系统,而且你可以使用之前的支持:包括驱动、64位版本和任何一个你需要的软件。这样就避免了所有的问题,对吧?现在有一个让你可以在64位系统中使用32位软件的方法,爽吗?就在你读了这篇文章然后照着做了之后就可以了。如果你有一个13.10或更高版本的Ubuntu/Debian,你需要安装一个叫做 ia32-libs 的基础包。现在,这个包已经被废弃了,所以你必须手工安装。

下面的命令可以在 Ubuntu/Debian 13.10 或更高的发行版上运行。

第一步: 确认你有一个64位架构的内核

你可以打开终端然后输入:

dpkg --print-architecture

你将会看到像下面这样的内容:

amd64

这说明着你已经拥有了64位架构内核。

第二步: 确认你打开了多架构支持功能

(多架构支持可以让你在有64位库的情况下使用32位库。)

输入:

dpkg --print-foreign-architectures

输出是:

i386

如果你还没有多架构支持你需要打开它。

另一种第二步: 打开多架构支持。

输入:

sudo dpkg --add-architecture i386
sudo apt -get update

然后就会开始下载更新然后运行。

之后你需要输入:

sudo apt-get dist-upgrade

它会检查你已经拥有的库文件是否有更新的版本。

若果然有的话,它会问你是否需要更新(y/n)。

如此这般,你就已经成功地为你的64位系统安装了32位支持了。


via: http://www.unixmen.com/enable-32-bit-support-64-bit-ubuntu-13-10-greater/

译者:crowner 校对:wxy

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

Skype最近为Linux系统发布了一个小更新,包括在Ubuntu上修复PulseAudio 3.x 和 4.x 的音频噪声问题,解决由于缺失libasound2-plugins:i386和其他导致在Ubuntu/Debian 64位系统上的崩溃。

如果你正在Ubuntu上使用Skype,你也许想要升级来获取这些修复。这个版本除了解决这些问题没有其他新的。

这是根据changelog的完整修复列表。

  • 临时解决 PulseAudio 3.x 和 4.x 音频噪声问题。
  • Bug 修复 在打开不带表情符号的聊天时的崩溃。
  • Bug 修复 由于缺失libasound2-plugins:i386依赖而导致的在Ubuntu/Debian 64位系统上不正常崩溃。
  • Bug 修复 一些拨号面板数字不能正常工作。

对于Ubuntu用户,这里是如何更新。

如果你已经安装了Skype,你要在更新前先卸载它因为它会也许会创建与当前安装冲突的文件。

要从Ubuntu移除Skype,在终端上运行命令。

sudo apt-get autoremove --purge skype

在卸载完Skype,进入Skype 下载界面并获取最新的Ubuntu下的版本。保存下载并在Ubuntu软件中心打开它。

因为软件中心必须下载额外的Skype包,安装也许会花费一些时间,请耐心等待。

如果你通过软件中心安装Skype时遇到了问题,进入下载文件夹并运行下面的命令来强制按照下面的命令安装Skype。

sudo dpkg -i skype-ubuntu*.deb; sudo apt-get -f install

安装完Skype后,进入Unity 面板并运行此时最新的4.2.0.14版本。

就是这样!享受吧!


via: http://www.liberiangeek.net/2014/01/daily-ubuntu-tips-skype-minor-update-fixes-pulseaudio-64-bit-issues/

译者:geekpi 校对:wxy

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