ARM 和 龍芯上 Arch Linux 安裝手記

七歌杜金房發表於2024-03-25

背景

今天嘗試安裝龍芯版 Linux,本來希望能安裝 Debian 版,但只找到一些文件,沒找到可安裝版的 ISO。

後來順著這篇文章找到了Arch Linux,就嘗試安裝了一下。

安裝後發現竟然不會配置網路 😂。而且龍芯版由於是在 QEMU 虛擬機器裡,執行速度也較慢。所以,我想我需要先學習一下 Arch Linux。

我用的是蘋果電腦,ARM 晶片,所以,希望能安裝 ARM 版的 Linux,這樣執行速才最快。

在 OrbStack 上安裝 Arch Linux

Arch Linux 下載頁面上,可以下載到 x86_64 版本的 ISO,但沒找到 ARM 版。後來想起來我用的是OrbStack,開啟圖形介面,直接按嚮導安裝了一個 Arch Linux,分分鐘就裝好了。然後,測試了網路、編譯安裝 FreeSWITCH 都沒有任何問題。

這是一個好的開端,但上述方法安裝的 Arch Linux 沒有任何網路問題,網路都是自動配置好的,因此,我還需要進一步學習。

在 UTM 中安裝 Arch Linux

後來在 https://github.com/JackMyers001/archiso-aarch64/releases 頁面上找到一個 2021 年的 ARM 版 ISO。雖然有些舊,但學習應該夠用了。

開啟我的UTM虛擬機器,我建立了一個新的 ARM 機器,使用上面下載的 ISO 就開始安裝了。

Arch Linux 與我熟悉的 Debian 和 CentOS 安裝步驟有很大不同!

Arch Linux ISO 啟動後,進入一個 Shell 環境,竟然沒有任何安裝嚮導。還好我的 Linux 基礎比較紮實,順著教程也一步一步安裝完成了。過程主要參考了這個頁面

從光碟啟動虛擬機器。fdisk -l找到我的硬碟,看起來是/dev/vda。然後,使用fdisk /dev/vda命令分割槽。首先輸入g,告訴硬碟使用 GPT 分割槽格式。然後,建立 3 個分割槽,分別是:

  • vda1:UEFI 分割槽,1G
  • vda2:Swap 分割槽,2G
  • vda3:根分割槽,剩餘空間

格式化分割槽:

mkfs.fat -F 32 /dev/vda1
mkswap /dev/vda2
mkfs.ext4 /dev/vda3

掛載分割槽:

mount /dev/vda3 /mnt
mkdir /mnt/boot
mount /dev/vda1 /mnt/boot

安裝系統。

pacstrap -K /mnt base linux linux-firmware

文件上說要使用-K,但我的映象好像比較舊,去掉-K才安裝成功。

生成fstab檔案:

genfstab -U /mnt >> /mnt/etc/fstab

chroot到新安裝的系統:

arch-chroot /mnt

設定 root 密碼:

passwd

安裝載入程式,先安裝grub

pacman -S grub efibootmgr

我使用 UEFI 啟動,將grub安裝到 UEFI 分割槽:

grub-install --target=arm64-efi --efi-directory=/root/EFI --removable

有人說這個--removable很有用,我沒有確認。

生成grub配置檔案:

grub-mkconfig -o /boot/grub/grub.cfg

裝完後,很重要的一步,安裝dhclient,以便能使用 DHCP 獲取 IP 地址:

pacman -S dhclient

其他一些設定好像無關緊要了。exit退出chroot環境,彈出光碟,reboot重啟就可以進入 Arch Linux 了。

進入後,如果沒有網路,手工執行dhclient,就可以獲取 IP 地址了。

Linux 能上網以後,就誰都不怕了,我可以繼續安裝其他軟體了。

龍芯版 Arch Linux

透過上述折騰,也查了一些文件,總算基本上了解了 Arch Linux。誰讓咱還有些 Linux 功底呢。

我推測,龍芯版 Linux 預設沒有安裝dhclient,才導致我上不了網。重灌一遍。

我的 UTM 不支援龍芯,因此,我只能使用 QEMU 了。

下載:

  • 韌體:https://mirrors.pku.edu.cn/loongarch/archlinux/images/QEMU_EFI_7.2.fd
  • ISO:https://mirrors.pku.edu.cn/loongarch/archlinux/iso/latest/archlinux-loong64.iso

建立一個硬碟:

qemu-img create -f qcow2 hd.qcow2 100G

啟動虛擬機器:

qemu-system-loongarch64 \
    -m 5G \
    -cpu la464-loongarch-cpu \
    -machine virt \
    -smp 4 \
    -bios QEMU_EFI_7.2.fd \
    -serial stdio \
    -device virtio-gpu-pci \
    -net nic -net user \
    -device nec-usb-xhci,id=xhci,addr=0x1b \
    -device usb-tablet,id=tablet,bus=xhci.0,port=1 \
    -device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
    -cdrom archlinux-loong64.iso \
    -boot once=d \
    -hda hd.qcow2

令人驚喜的是,龍芯版的 ISO 竟然有一個安裝嚮導。雖然不像 Debian 那麼直觀。

順著安裝嚮導,我做了如下設定:

  • 映象:選 China
  • 磁碟配置:使用最佳,選了/dev/vdb,它是我的硬碟。
  • 設定 root 密碼。
  • 附加軟體包:當然選了dhclient
  • 網路配置:將 ISO 中的配置複製到安裝中。這個很有用。

其他的選擇可以使用預設值,也可以自己定製。接下來按嚮導進行安裝就可以了。

安裝完成後,重啟,進入 Shell,顯示如下:

# uname -a
Linux archlinux 6.7.0-6 #1 SMP PREEMPT Tue, 09 Jan 2024 11:51:31 +0000 loongarch64 GNU/Linux

我是使用如下命令啟動 QEMU 的,透過將22埠對映為2022,可以在外面連線虛擬機器中的 Linux。

qemu-system-loongarch64 \
    -m 5G \
    -cpu la464-loongarch-cpu \
    -machine virt \
    -smp cpus=8,sockets=1,cores=8,threads=1 \
    -bios media/QEMU_EFI_7.2.fd \
    -serial stdio \
    -device virtio-gpu-pci \
    -net nic -net user,hostfwd=tcp::2022-:22 \
    -device nec-usb-xhci,id=xhci,addr=0x1b \
    -device usb-tablet,id=tablet,bus=xhci.0,port=1 \
    -device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
    -hda hd.qcow2

連網,就可以繼續安裝其他軟體了。我安裝了 Git、Vim 等,現在正在編譯 FreeSWITCH。目測沒啥問題,就是在 ARM 上模擬loongarch64 CPU,超級慢。

不知道是否有人能貢獻個真正的 CPU。後續,我會寫寫在龍芯和 Arch Linux 上安裝 FreeSWITCH 的過程。

最近有人批評我寫的文章比較水。流水賬嘛,水一點就水一點好了 😂。

如果有人知道去哪裡下載龍芯版的 UOS,也歡迎留言告訴我:https://www.cnblogs.com/dujinfang/p/18095472

本文永久連結:https://www.dujinfang.com/2024/03/25/arch-linux.html

相關文章