查看“︁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> == 网络 == === NetworkManager === 创建 <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> === iwd === 如果你遇见 <code>brcmfmac: brcmf_set_channel: set chanspec fail</code> 错误,建议使用 <code>systemd-netowrkd</code> + <code>iwd</code> 写入 <code>/etc/systemd/network/25-wireless.network</code> <pre> [Match] Name=wl* [Network] DHCP=yes IgnoreCarrierLoss=3s </pre> 写入 <code>/etc/systemd/resolve.conf</code> <pre> FallbackDNS=223.5.5.5 </pre> 运行如下命令关掉 <code>NetworkManager</code> <pre> systemctl disable NetworkManager --now systemctl enable systemd-networkd systemd-resolved iwd --now </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
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息