主要是想学一下Linux内核,所以搭一套环境,其实有几个选择,好几个都是我买了板子的。

首先是正点原子的RK3568,最早是想弄安卓,但是SDK的大小真的把我劝退了,动不动几百个G的空间,还有就是保底16个G的内存。我买的云可没那么豪华的配置。配套的Linux环境也不算小。不过也有好处,配套的中文资料挺多的。可以作为备选。

然后就是Openwrt。说实话,Openwrt也是不错的选择,资料也不少,搞得熟练了就靠这个找个活干也是稳稳的,但是Openwrt没有太合适的开发板。。。

还有一个就是之前买的一本linux驱动的书,是华清远见出的,配套的是一个三星arm的Exynos4412板子,但是看了下那个板子要500块。而且感觉小众了点。

最后还是选的树莓派,本来是买了一个树莓派Zero 2W,价格不贵100大元。资料多而且空间占用小。结果后面又在家里翻出来一个树莓派3B,查了一下7年前买的3B性能比Zero还强了不少。于是把zero又给退了,还是用3B。姑且就叫它黄忠吧。。。

整个空间只用了1.8G,编译时间也能接受。唯一有点缺点就是没有现成的基于树莓派驱动开发的书,起码现在我还没看到。这个我想能克服吧。

其实最后还有个隐藏选项,就是现在单位用的高通。但是那堆垃圾我是真的无力吐槽,一套SDK700G,编译5个小时打底。真的是极不友好,火速劝退。

下载代码还是很easy

sudo apt-get install git bc bison flex libssl-dev make
git clone --depth=1 https://github.com/raspberrypi/linux
KERNEL=kernel7
make bcm2709_defconfig
make -j$(nproc) zImage modules dtbs

但是我这里遇到两个坑。

1 是说在x86下面找不到bcm2709_defconfig,看了一下原来是平台没选。我是直接改的根Makefile,改了个

ARCH            ?= arm

2 交叉编译环境有点问题

找到arm gcc的位置,expert一下就可以了。

export CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-

这样编译就没啥问题了。

做image和烧写待续。。。

4. 打包成.img文件

编译完成后,你需要将内核和相关文件打包成一个.img文件。这个过程比较复杂,通常需要创建一个完整的Raspberry Pi文件系统。你可以使用现成的工具如 pi-gen 来生成一个完整的Raspberry Pi镜像。

 

git clone https://github.com/RPi-Distro/pi-gen.git

cd pi-gen

按照 pi-gen 的文档进行配置和编译。

5. 将.img文件传回本地

编译完成后,你需要将生成的.img文件传回本地。你可以使用 scp 命令来完成这个任务。

 

scp user@remote_server:/path/to/your/image.img /local/path/to/save/image.img

6. 烧录.img文件到SD卡

在本地使用 dd 命令或其他工具(如 Etcher)将.img文件烧录到SD卡。

使用 dd 命令

首先,找到你的SD卡设备名(如 /dev/sdX 或 /dev/mmcblkX)。

 

sudo dd if=/local/path/to/save/image.img of=/dev/sdX bs=4M status=progress

sudo sync

使用 Etcher
  1. 下载并安装 Etcher.
  2. 打开 Etcher,选择你的.img文件和目标SD卡,然后点击“Flash”按钮。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部