跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
MalacoKnowledge
搜索
搜索
登录
个人工具
登录
查看“Raspberry Pi 5”的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
←
Raspberry Pi 5
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
本文介绍如何在 [https://www.raspberrypi.com/products/raspberry-pi-5/ Raspberry Pi 5] 上面安装 [https://archlinuxarm.org/ Arch Linux ARM] 。 = 硬件 = * Raspberry Pi 5 8G * Mcuzone MPS2280P 的 NVME SSD 转接板 * Samsung 980 NVME SSD * Raspberry Pi 5 官方电源 我也尝试过 ZhiTai Ti 600 NVME SSD ,只能使用而 PCIe Gen 3 并且还会出现掉盘问题 = 宿主机 = == 准备分区 == 替换 <code>sdX</code> 为 <code>fdisk -l</code> 显示的你需要格式化的 <pre># fdisk /dev/sdX</pre> 创建两个分区,一个 <code>boot</code>(500 MB 即可) 一个 <code>root</code> (剩下的) <code>n</code> 用于创建新的分区,<code>d</code> 删除老分区,<code>p</code> 展示现在的设置, <code>q</code> 不保存退出,<code>w</code>保存退出 <pre># mkfs.vfat -F 32 -n bootfs /dev/sdX1 # mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -L rootfs -F /dev/sdX2</pre> 格式化就好 == 挂载 == 替换 <code>mnt</code> 为你的挂载点,这里因为 archlinux 的打包习惯,设置 chroot 后的 <code>/boot</code> 为 boot 分区是合适的,而非 <code>/boot/firmware</code> <pre># mount /dev/sdX2 mnt --mkdir # mount /dev/sdX1 mnt/boot --mkdir</pre> <span id="准备-bootstrap-包"></span> == 准备 bootstrap 包 == 下载 bootstrap 包 [http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz ArchLinuxARM-rpi-aarch64-latest.tar.gz] 或者可以选择镜像里的 rpi-aarcxh64-latest.tar.gz 包 <pre>$ curl -JLO http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz</pre> 解压到挂载点 <code>mnt</code> <pre># bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C mnt</pre> == 配置 == 根据 archwiki 配置下面的文件 <pre># ln -sf mnt/usr/share/zoneinfo/Asia/Shanghai mnt/etc/localtime # vim mnt/etc/locale.gen # vim mnt/etc/locale.conf # vim mnt/etc/hostname # vim mnt/etc/hosts # vim mnt/etc/pacman.d/mirrorlist</pre> 编辑分区 <pre># vim mnt/etc/fstab</pre> 如果你的 <code>p1</code> 分区是 boot ,<code>p2</code> 是 root 并且是 NVME SSD 那么就可以这样写 <code>fstab</code> <pre class="mnt/etc/fstab"># Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> /dev/nvme0n1p1 /boot vfat defaults 0 2 /dev/nvme0n1p2 / ext4 defaults 0 1</pre> <span id="准备-qemu-chroot"></span> == 准备 qemu chroot == <pre># pacman -S --no-confirm qemu-user-static qemu-user-static-binfmt arch-install-scripts # systemctl restart systemd-binfmt.service # arch-chroot mnt</pre> = 内部 = == 宿主机配置后续 == <pre># locale-gen</pre> == keyring == 初始化并且更新 keyring <pre># pacman-key --init # pacman-key --populate archlinuxarm # pacman -Sy archlinux-keyring archlinuxarm-keyring</pre> == 安装必要的软件 == 启动所需要的内核 firmware 以及 bootloader 等 <pre># pacman -S --no-confirm linux-rpi linux-rpi-headers firmware-raspberrypi raspberrypi-bootloader rpi5-eeprom</pre> 文本编辑软件,我更倾向于安装 <code>vim</code> 作为文件编辑 <pre># pacman -S --no-confirm vim</pre> 网路管理工具 <pre># pacman -S --no-confirm networkmanager iwd wireless-regdb</pre> <span id="一般-boot"></span> == 一般 boot == 编辑 boot 命令 <pre># vim /boot/cmdline.txt</pre> 内容是,如果 <code>p2</code> 是 root 并且是 NVME SSD <pre>root=/dev/nvme0n1p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes</pre> <span id="ssd-boot"></span> == SSD boot == 编辑 config.txt 可以选择启用或者不启用 PCIe gen 3,默认是 gen 2 <pre># vim /boot/config.txt</pre> 文本最后写入 <code>[all]</code> 后面的内容 <pre>[all] dtparam=pciex1 #dtparam=pciex1_gen=3</pre> <span id="eeprom"></span> == EEPROM == 更新 eeprom <pre># rpi-eeprom-update -a</pre> 查看当前配置 <pre># rpi-eeprom-config /boot/pieeprom.upd</pre> 修改当前配置 <pre># EDITOR=vim rpi-eeprom-config -e</pre> 我的配置 <pre>[all] BOOT_UART=1 POWER_OFF_ON_HALT=0 BOOT_ORDER=0xf416</pre> 如果 <code>POWER_OFF_ON_HALT=1</code> 则会降低功耗,但是也可能会导致问题 <span id="kernel-修复"></span> == Kernel 修复 == 删除 <code>HOOKS</code> 里的 <code>kms</code> 能修复 <code>==> WARNING: errors were encountered during the build. The image may not be complete.</code> 报错 <pre># vim /etc/mkinitcpio.conf</pre> 修改后如下 <pre>HOOKS=(base udev autodetect modconf keyboard keymap consolefont block filesystems fsck)</pre> 然后运行 <pre># mkinitcpio -P</pre> == 网络 == 创建 <code>/etc/NetworkManager/system-connections/<wifi_name>.nmconnection</code> 可以参考你宿主机器的配置,下面不一定标准 <pre> [connection] id=<wifi_name> type=wifi interface-name=wlan0 [wifi] mode=infrastructure ssid=<ssid> [wifi-security] key-mgmt=wpa-psk psk=<password> [ipv4] method=auto [ipv6] addr-gen-mode=default method=auto [proxy]</pre> 编辑<code>/etc/networkmanager/conf.d/powersave.conf</code>启用省电模式,避免 nvme 掉盘报错 <pre class="/etc/networkmanager/conf.d/powersave.conf">[connection] wifi.powersave = 2</pre> 取消掉所在国家的注释,避免<code>brcmfmac: brcmf_set_channel: set chanspec fail</code> <pre># vim /etc/conf.d/wireless-regdom # set-wireless-regdom</pre> 准备自启动 <pre># systemctl enable NetworkManager</pre> <span id="省电休眠配置"></span> == 省电/休眠配置 == <pre># systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target</pre> == 用户配置 == 删除 <code>alarm</code> 用户 <pre># userdel alarm # rm -rf /home/alarm</pre> 创建新用户 <pre># useradd -m -G wheel <your_user> # passwd <your_user> # EDITOR=vim visudo</pre> 修改密码 <pre># passwd root # passwd <your_user></pre> <span id="ssh"></span> == SSH == 对于每个用户都要有这个文件才能自动登陆 <pre>$ mkdir -p ~/.ssh $ vim ~/.ssh/authorized_keys</pre> 写入宿主机器的 <code>~/.ssh/<ssh_key>.pub</code> 的内容 = 使用 = == 连接 == 同一个网路下 <pre>$ ssh <user>@<hostname>.local</pre> == GPIO == 可以安装 <code>python-gpiozero</code> 和 <code>python-rpi-gpio</code> 来使用 <code>pinout</code> == 测速 == <pre># hdparm -t /dev/nvme0n1</pre> = 已知问题 = == nvme == 如果硬盘不兼容,很有可能出现 <pre>nvme nvme0: controller is down; will reset: CSTS=0xffffffff, PCI_STATUS=0x10 nvme nvme0: Does your device have a faulty power saving mode enabled? nvme nvme0: Try "nvme_core.default_ps_max_latency_us=0 pcie_aspm=off" and report a bug nvme0n1: I/O Cmd(0x2) @ LBA 34489736, 512 blocks, I/O Error (sct 0x3 / sc 0x71) I/O error, dev nvme0n1, sector 34489736 op 0x0:(READ) flags 0x80700 phys_seg 59 prio class 2 nvme 0000:01:00.0: enabling device (0000 -> 0002) nvme nvme0: Shutdown timeout set to 8 seconds nvme nvme0: 4/0/0 default/read/poll queues</pre> 然后出现 <pre>brcmfmac: brcmf_set_channel: set chanspec 0xd0<两个字符> fail, reason -52</pre> 当然,这可能出现任何硬盘上面,并且一般是是和 NetworkManager / iwd / netcl 一类的网路管理器启动与否相关,可能二次启动网路管理器就会出现这种问题 == 错误教程 == 一些错误的教程,比如 [https://kiljan.org/2023/11/24/arch-linux-arm-on-a-raspberry-pi-5-model-b/ kiljan] 和 [https://ikuyo.dev/2024/02/09/raspberry-pi5-arch/ ikuyo] 或许是已经过时,其中的删除 ArchLinuxARM-rpi-aarch64-latest.tar.gz 解压出来后的 boot 文件夹内的所有文件是完全错误的,因为正常的 树莓派5 的 boot 是由多个包掌握的,如果粗暴删除掉 bootstrap 压缩包的 <code>boot</code> 会导致 bootloader 也被删除,而不仅仅是删除内核。 <pre># pacman -Qo /boot /boot/ is owned by filesystem 2024.01.19-1 /boot/ is owned by linux-rpi 6.6.22-2 /boot/ is owned by raspberrypi-bootloader 20240320-1</pre>
返回
Raspberry Pi 5
。
开关有限宽度模式