最近新入手了树莓派,第一时间想到的就是给它装上Arch Linux. 我发现网上的教程都比较少,因此写下这一篇教程,来协助大家给自己的树莓派装上Arch Linux!我的树莓派型号是4B,不过本教程理论上通用。
所需工具
- 一个树莓派
- 电源适配器和连接线
- 一个大于8GB的Micro SD卡
- 一个USB键盘
- 一个显示器 与 mini-HDMI的连接线(或者可以使用SSH的方式连接,前提是通过路由器获得树莓派的IP地址)
- 一台能够连接网络的电脑(这里的实验环境是Linux,其他操作系统可能需要更改一些指令)
- 读卡器
思路
你可以把它当作安装一台电脑上的操作系统。Micro SD卡就相当于硬盘,我们需要利用一台电脑往这个Micro SD卡中写入操作系统,安装到树莓派里,然后插上相应的外设即可。
下载系统
因为可以边下载系统边进行后续的操作,所以把这个放在了第一步。官网上下载树莓派的速度太慢了,这里推荐使用清华源。
1 | wget https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/os/ArchLinuxARM-rpi-4-latest.tar.gz |
这一指令便是下载arch linux for RPI 4。你也可以使用aria2等工具,或者直接访问这个上面的链接来下载。如果你的设备是树莓派2或3的话,要更改上面指令对应4的位置。
配置SD卡
- 先备份好SD卡中的重要数据。
- 利用读卡器将SD卡插入到电脑里。
- 我们的思路是这样,将这个SD卡划分为两个分区,第一个作为启动分区,即boot,第二个作为主要的装数据(包括操作系统)的分区,即root。我们给boot分配100M的空间,给root分配剩下的所有空间。两个分区都是主分区。第一个boot分区必须是FAT32的文件系统。以下的指令就是在linux中执行这些操作,在其他操作系统中可以选择你喜欢的方式来实现上述的操作。
- 先使用
sudo fdisk -l
列出所有的存储设备。它会显示很多信息,你可以看到类似/dev/sda
之类的代表你的一个存储设备(入硬盘)。因为它显示了容量,所以你能轻松找到哪一个是你的SD卡。记下来它是sdX
这个X
,下文的所有sdX
都要用你电脑上显示的表示SD卡的这个sdX
。比如在我的电脑上,它是sdc
。(因为我有两块硬盘被分配给了sda
和sdb
) - 使用
sudo fdisk /dev/sdX
来选中SD卡 - 使用
o
删除所有分区 - 使用
n
新建分区,然后p
作为主分区。再1
作为第一个主分区。按回车
选择默认开始扇区,然后输入+100M
设置结束扇区 - 按
t
然后按c
以设置刚才的主分区类型为W95 FAT32(LBA)
. - 按
n
,再p
,再2
来新建第二个分区。直接两次回车
来把剩余部分都添加给第二主分区。 - 按
w
写入保存分区并退出fdisk. - 这一步完成以后,如果再使用
sudo fdisk -l
可以看到你的SD卡的配置应该类似这样。
- 格式化两个分区。使用
mkfs.vfat /dev/sdX1
和mkfs.ext4 /dev/sdX2
- 挂载分区。即相当于给SD卡的两个分区创建两个快捷方式到你的电脑里,这样在你的电脑里点击这两个文件夹就能直达SD卡的两个文件夹。
mkdir boot
和mkdir root
先创建两个空文件夹。然后使用sudo mount /dev/sdX1 boot
和sudo mount /dev/sdX2 root
挂载。
将Arch解压到SD卡当中
- 使用
sudo tar -zxpf ArchLinuxARM-rpi-4-latest.tar.gz -C root
来将刚刚下载的Arch解压到root
文件夹里。注意,如果路径调整过的话,前一个ArchLinuxARM-rpi-4-latest.tar.gz
要改为你存放刚刚下载文件的路径,root
改为刚刚挂载root
的路径。同时前面的文件名要因下载的文件名而异。 - 使用
sync
同步一下,确保文件已经进入SD卡中。 - 使用
mv root/boot/* boot
将刚刚解压后的在root
分区里面的boot
文件夹里的全部内容剪切到boot
分区。 - 完成,使用
sudo umount boot root
卸载分区 - 其他操作系统看情况修改指令,根本思路就是将它解压到
root
里,同时把里面的boot
文件夹里的东西剪切到boot
里。
启动
- 插入SD卡,接上显示器,接上键盘。
- 插入电源线!
- 如果一切正常的话,你会在屏幕里看到你进入了Arch Linux操作系统。
- 剩余还有一些Arch Linux的配置,我都放到了下一篇教程当中。
安装完后的更多关于Arch Linux的配置的内容参加下一篇教程。