8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

树莓派从3代开始就已经是64位的CPU了,64位的CPU当然要使用64位的系统了。但是即便性能更强大的树莓派4都已经发布两三个月了,树莓派官方也没有放出64位的系统,

我想这可能是为了照顾3代以前的树莓派吧,毕竟一个系统要适配所有的产品,同时系统升级到64位,对于树莓派的整个软件生态来说都是一次改头换面的大更新,树莓派基金会作为一个非营利性的组织,精力可能有点不够,所以官方的64位系统还得再等等。

不过如果你网上搜索 “树莓派 64位系统”, 会发现现在已经有很多非官方的64位系统了,这是因为树莓派的内核是开源的,64位的内核是可以从源码编译的,所以网上的所有的树莓派64位系统,包括所谓的 “全球首发”的64位debain,

都是从树莓派的Linux内核源码编译来的。

对于网上那些魔改内核的64位系统,不做评价。但对于处女座有强迫症的人来说,要想体验到真正原滋原味的树莓派64位系统,还是得自己动手从头编译。

本文背景即基于此。树莓派官方有一篇关于内核编译的文章:kernel building,

作为官方的教程,肯定是很详细的,但是这篇是针对32位内核的,所以我重新梳理一下编译64位内核的过程。

先说一下编译环境:

主机:archlinux x86_64

需要的软件:

make

git

aarch64交叉编译工具: aarch64-linux-gnu-gcc

flex, libssl-dev, vbuild-essential,bison等基础构建工具大部分系统都是会安装的,编译时缺哪一个安装哪一个。

对于archlinux来说,这些软件局可以使用pacman安装。

编译环境的搭建不多说,都是很简单的,aarch64-linux-gnu-gcc可以手动下载压缩包解压,把路径添加到环境变量,或者使用apt, yum等包管理安装。

克隆树莓派内核源码:1git clone -b rpi-5.3.y --depth=1 https://github.com/raspberrypi/linux.git raspberrypi-linux

-b 选择分支,选择了最新的5.3,默认的是4.19,–depth=1 只克隆最新的一次commit,由于只是编译,所以不必把这个仓库都完整的克隆下来(整个仓库有十几个G大小)。

有哪些分支可以很容易在github上看到:

代码将会克隆到raspberrypi-linux目录,

进入这个目录:1cd raspberrypi-linux

先进行一些编译参数设置:也就是内核调参,大部分的内核魔改都基于此处,

生成默认的内核配置文件:

对于编译树莓派4的64位内核来说,执行:1make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

执行该命令后会在raspberrypi-linux的目录下生成一个.config文件,打开是一项项的linux内核配置,

可以根据自己的需要修改各项配置,比如开启kvm支持,取消部分不必要的驱动达到裁剪内核的目的。

关于内核配置,一本书可能都说不完。使用默认配置即可。

如需修改内核配置可以直接编辑.config文件,设置各项的参数值,也可以执行一下命令:1make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

有一个简单的GUI界面来修改内核配置,相信装过gentoo的人对此不会陌生。

开始编译

输入以下命令:

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

这里的-j选项是开启多线程编译,加快编译速度,一般为CPU数量的1.5倍以内,在树莓派上编译设置为4就好了。

如果没什么问题,可以去喝杯茶。

编译完毕,将内核模块安装进树莓派的系统内:1sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt/rootfs modules_install

/mnt/rootfs 是树莓派根目录所在的路径,我这里把装有树莓派系统的tf卡的根目录挂载在了/mnt/rootfs, 所以就把内核安装进这个目录

再把内核的其他文件手动复制进树莓派系统的/boot下的指定目录(tf卡中只有几十兆的那个分区,我这里挂载到了本机的/mnt/boot):

复制编译好的内核:1sudo cp arch/arm64/boot/Image /mnt/boot/kernel8.img

复制不同版本的树莓派的dtb文件到树莓派系统的/boot:。1sudo cp arch/arm64/boot/dts/broadcom/*.dtb /mnt/boot

复制overlays中的文件到树莓派系统的/boot/overlays, README也复制一下:1

2sudo cp arch/arm64/boot/dts/overlays/*.dtb* /mnt/loop0p1/overlays/

sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/

最后在树莓派的/boot/config.txt文件中注意指定启动内核为新编译的内核,即kernel8.img:1kernel=kernel8.img

至此,原滋原味的64位内核就编译安装完成了。

如果树莓派运行着64位的系统,以上操作也可以在树莓派上完成,就不需要交叉编译工具,直接编译即可。

在树莓派上编译内核的话可能要喝十杯茶了。

编译64位linux内核,为树莓派4编译64位的内核相关推荐

  1. java 位运算取8位_Java 9 AOT 试用:仅支持 64 位 Linux和java.base 模块编译

    Java 9 引入了 aot 编译方式,能够将 class 文件直接编译成可执行二进制文件.目前 Java 9 的 early access 版本已经提供了编译工具,让我们来看看它的功能吧. 注意:按 ...

  2. found linux系统wget出现not_Java 9 AOT 试用:仅支持 64 位 Linux和java.base 模块编译

    Java 9 引入了 aot 编译方式,能够将 class 文件直接编译成可执行二进制文件.目前 Java 9 的 early access 版本已经提供了编译工具,让我们来看看它的功能吧. 注意:按 ...

  3. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

    linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...

  4. linux 目录的粘滞位,Linux文件和目录的粘滞位(sticky bit)

    文件的粘滞位(sticky)位是作什么用的? 普通文件的sticky位会被linux内核忽略, 目录的sticky位表示这个目录里的文件只能被owner和root删除 粘着位(Sticky bit) ...

  5. linux编译ipp多线程,Linux 下 Intel IPP 模块编译

    1. 平台搭建 平台 CentOs 6.3 2. IPP 下载 3. IPP 编译 不同版本的IPP 版本编译操作差异比较大,最好的办法就是查询下载版本的IPP模块中的document. 3.1  设 ...

  6. 64位linux安装mysql数据库吗_CentOS7 64位安装mysql教程

    从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示 1.先检查系统是否装有mysql rpm -qa | grep mysql 1 1 这里返回 ...

  7. linux下怎么编译贪吃蛇,Linux 环境下C语言编译实现贪吃蛇游戏(转载)

    本文转载 http://www.linuxidc.com/Linux/2011-08/41375.htm本文可以改进的就是它的链表实现的方式,可以考虑内核的链表实现 #include #include ...

  8. linux emule 编译 wx-config --libs,Linux下的wxWidgets静态编译实现方法

    --Linux distribution:Ubuntu 10.04.3 LTS (Lucid Lynx) --wxWidgets version:2.8.12 --gcc version:4.4.3 ...

  9. Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率

    2016-07-29 回答 can位时间特性寄存器 (can_btr) 地址偏移量: 0x1c 复位值: 0x0123 0000 注: 当can处于初始化模式时,该寄存器只能由软件访问. 图2 位31 ...

最新文章

  1. 电大计算机应用模块四实2010,国家开放大学《计算机应用基础》考试与答案形考任务模块2Word2010文字处理系统—客观题测验答案.docx...
  2. maven远程发布jar
  3. mikadonic-iptables学习笔记
  4. div隐藏select显示的解决办法(就死select挡住了div) 不是网上找到的那五种
  5. jqueryForm 异步上传图片文件
  6. ROM与RAM混合设计
  7. 转-ios设备唯一标识获取策略
  8. 素数的判断(c语言)
  9. Esxi 6.7u3 安装之重封装网卡驱动与NVME驱动
  10. FTP搜索引擎的设计与实现
  11. MATLAB绘图函数fplot详解
  12. java 实现屏幕录像_用JAVA捕获屏幕、屏幕录像、播放
  13. matlab运行很多columns,columns函数的使用方法
  14. BMZ-MISC-损坏的压缩包
  15. Part 1: 如何把Power BI 嵌入到sharepoint 网站
  16. 感光器尺寸 面积 转换 计算
  17. 《如果梵高生在中国》笔记
  18. 第十一章:MATLAB:符号运算(符号与数值,符号矩阵)
  19. 前端之网站结构语义化
  20. C primer plus 第四章课后编程练习答案笔记解释整理

热门文章

  1. Java项目:SSM网上外卖订餐管理系统
  2. matlab创建控件失败win7,Win7系统无法安装ActiveX控件的解决方法
  3. 小结:云架构中的IAAS层体系
  4. 区块链学习三——比特币的数据结构
  5. FTP登录提示421 Service not available
  6. 什么是性格不良?如何自我分析性格不良?
  7. mysql序列号生成_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法
  8. tomcat中catalina是什么
  9. 构造函数 和 析构函数 能否抛出异常
  10. 助力打造智慧互联城市,巨杉数据库与东华发思特软件完成产品互认证