Hướng Dẫn Cài Đặt Ubuntu 25.04 Trên Orange Pi RV2

📋 Mục Lục


📖 Giới Thiệu

Mình vừa mới nhận được Orange Pi RV2 – một board RISC-V dựa trên CPU Spacemit X60 (được Ky rebrand). Board này chỉ kèm sẵn một image Ubuntu Server pre-built từ trang web tiếng Trung, sử dụng mirror Trung Quốc và mình không thích điều khiển hoàn toàn bị động như vậy.

Mục tiêu của bài viết: Hướng dẫn bạn build và cài đặt Ubuntu Server 25.04 (Plucky Puffin) RISC-V64 hoàn toàn từ nguồn chính thức của Ubuntu, kết hợp kernel & DTB được build từ source code chính hãng của Orange Pi. Kết quả: một hệ thống Ubuntu 25.04 “sạch”, upstream, hoàn toàn do bạn kiểm soát.


🛠️ Phương Pháp Tiếp Cận (Tổng Quan)

  1. Build kernel .deb trên VM Ubuntu 22.04 x86_64 (bắt buộc vì toolchain Orange Pi yêu cầu Ubuntu 22.04).
  2. Cài Ubuntu 25.04 RISC-V lên ổ NVMe gắn vào VM RISC-V (QEMU/KVM).
  3. Cài các file .deb kernel/firmware, cấu hình DTB, GRUB, initramfs.
  4. Cấu hình firmware, network, WiFi.
  5. Tắt VM, tháo NVMe gắn vào Orange Pi RV2 (khe dưới đáy) và boot.

🔨 Bước 1: Build Kernel .deb Từ Nguồn Orange Pi

1.1 Chuẩn Bị VM Ubuntu 22.04 x86_64

Yêu cầu: Ubuntu 22.04 (Jammy) x86_64 – bắt buộc vì build tool của Orange Pi chỉ hỗ trợ distro này.

Tạo VM (VirtManager/VirtualBox/VMware), gán ít nhất 4-8 vCPU, 16-32GB RAM, ổ cứng ≥ 100GB. Cài Ubuntu 22.04 Server (hoặc Desktop).

1.2 Cài Gói Cần Thiết & Clone Repo

sudo apt update && sudo apt dist-upgrade -y
sudo apt install -y git
git clone https://github.com/orangepi-xunlong/orangepi-build.git
cd orangepi-build

1.3 Build Kernel Package

./build.sh
# Menu 1: Chọn "Kernel package"
# Menu 2: Chọn "Do not change kernel config"
# Menu 3: Cuộn xuống chọn "orangepirv2"
# Chờ đợi... (rất lâu, toolchain + kernel compile)

⚠️ Xử Lý Lỗi Download Toolchain Ky (Rất Hay Gặp)

Nếu quá trình download toolchain ky-toolchain treo > 5 phút:

  1. Ctrl+C hủy build.
  2. Tải thủ công toolchain từ mirror ổn định của Spacemit:
    https://archive.spacemit.com/toolchain/spacemit-toolchain-linux-glibc-x86_64-v1.0.1.tar.xz
  3. Giải nén vào thư mục toolchains/ và đổi tên thư mục thành:
    ky-toolchain-linux-glibc-x86_64-v1.0.1
  4. Tạo file flag để build script bỏ qua download:
    touch toolchains/ky-toolchain-linux-glibc-x86_64-v1.0.1/.download-complete
  5. Chạy lại ./build.sh và chọn lại Kernel package → orangepirv2.

1.4 Build Firmware Package (orangepi-firmware)

./build.sh
# Chọn "Rootfs and all deb packages"
# Chọn "orangepirv2"
# Chọn "Noble [..] 24.04"
# Chọn "no" (không build kernel nữa)
# Chọn "no" (không build rootfs)
# Script sẽ build gói orangepi-firmware_1.0.0_all.deb

Quan trọng: Khi script chạy đến bước Installing base system (cài base Ubuntu), hãy Ctrl+C để dừng – ta chỉ cần file .deb firmware thôi.

1.5 Thu Thập File .deb

scp output/debs/*.deb user@your-riscv-vm:/tmp/

Các file cần thiết:

  • linux-dtb-current-ky_1.0.0_riscv64.deb
  • linux-headers-current-ky_1.0.0_riscv64.deb
  • linux-image-current-ky_1.0.0_riscv64.deb
  • orangepi-firmware_1.0.0_all.deb

💻 Bước 2: Cài Đặt Ubuntu 25.04 RISC-V Trên VM (Target NVMe)

  1. Tạo VM mới Kiến trúc RISC-V (riscv64) trên KVM/QEMU (VirtManager).
  2. Gắn ổ NVMe vật lý (hoặc ổ ảnh qcow2 trên NVMe thật) làm ổ cứng chính của VM.
  3. Mount ISO: https://cdimage.ubuntu.com/releases/25.04/release/ubuntu-25.04-live-server-riscv64.iso
  4. Cài đặt Ubuntu Server 25.04 bình thường, chọn ổ NVMe làm target.
  5. Sau khi cài xong, reboot VM vào Ubuntu vừa cài (vẫn chạy trong VM).

⚙️ Bước 3: Cài Kernel, Cấu Hình DTB & GRUB

3.1 Cập Nhật & Cài Dependencies

sudo apt update && sudo apt dist-upgrade -y
sudo apt install -y build-essential

3.2 Cài Các Gói .deb Kernel & Firmware

cd /tmp
sudo dpkg -i linux-dtb-current-ky_1.0.0_riscv64.deb \
           linux-headers-current-ky_1.0.0_riscv64.deb \
           linux-image-current-ky_1.0.0_riscv64.deb \
           orangepi-firmware_1.0.0_all.deb

Nếu báo lỗi dependency:

sudo apt --fix-broken install -y

3.3 Sửa Cấu Hình DTB Cho GRUB

Kernel Orange Pi cài DTB dưới dạng thư mục /boot/dtb-6.6.63-ky/ky/x1_orangepi-rv2.dtb, nhưng GRUB cần một file DTB đơn lẻ. Ta sẽ symlink:

cd /boot
sudo mv dtb-6.6.63-ky dtb-6.6.63-ky-orig
sudo ln -s dtb-6.6.63-ky-orig/ky/x1_orangepi-rv2.dtb dtb-6.6.63-ky
sudo rm dtb  # Xóa symlink dtb mặc định để VM vẫn boot được kernel Ubuntu gốc nếu cần
sudo update-grub

3.4 Cấu Hình GRUB Mặc Định

sudo nano /etc/default/grub

Thêm/sửa các dòng sau:

# Boot mặc định vào kernel Ky (Orange Pi)
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.6.63-ky"

# Tắt переименовка interface mạng (eth0/eth1/wlan0 thay vì enp.../wlp...)
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0"

# Timeout menu GRUB (giây)
GRUB_TIMEOUT=5

# Boot headless (không cần HDMI) – BẬT NẾU CHẠY HEADLESS
GRUB_TERMINAL=console

Lưu file (Ctrl+O, Enter, Ctrl+X) rồi:

sudo update-grub

📦 Bước 4: Cấu Hình Firmware (ESOS & Initramfs Hook)

cd ~
git clone https://github.com/orangepi-xunlong/orangepi-build.git

4.1 Copy Firmware ESOS

cd orangepi-build/external/packages/bsp/ky
sudo cp usr/lib/firmware/esos.elf /lib/firmware/

4.2 Copy Initramfs Hook

sudo mkdir -p /etc/initramfs-tools/hooks/
sudo cp etc/initramfs-tools/hooks/add_firmware_to_initrd.sh /etc/initramfs-tools/hooks/

4.3 Tái Tạo Initramfs

sudo update-initramfs -k all -c

🌐 Bước 5: Cấu Hình Ethernet & WiFi (Netplan)

5.1 Reboot VM & Chọn Kernel Ubuntu Gốc (Không Phải Ky Kernel)

sudo reboot

Trong menu GRUB, chọn “Ubuntu, with Linux 6.x.x-generic” (kernel Ubuntu gốc) để cấu hình network trước.

5.2 Tạo File Netplan

sudo nano /etc/netplan/00-network-setup.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: false
      optional: true
    eth1:
      dhcp4: true
      dhcp6: false
      optional: true
  wifis:
    wlan0:
      optional: true
      dhcp4: true
      dhcp6: false
      access-points:
        "ten-wifi-cua-ban":
          password: "mat-khau-wifi"
sudo chmod 600 /etc/netplan/00-network-setup.yaml

5.3 Cài wpasupplicant & Load Module WiFi

sudo apt install -y wpasupplicant
sudo nano /etc/modules-load.d/wifi-rv2.conf
# Thêm dòng sau:
bcmdhd
sudo netplan generate

🚀 Bước 6: Boot Orange Pi RV2 Từ NVMe

  1. Tắt hẳn VM: sudo shutdown -h -P now
  2. Tháo ổ NVMe khỏi máy host (hoặc unmount ổ ảo), gắn vào khe NVMe mặt dưới (bottom side) của Orange Pi RV2. Lưu ý: Khe 2230 mặt trên KHÔNG hỗ trợ boot.
  3. Cáp HDMI, Ethernet, bàn phím, nguồn.
  4. Bật nguồn → Chờ logo Orange Pi bootloader → GRUB menu → Kernel Ky boot → Đăng nhập Ubuntu 25.04!

✅ Kết Luận & Ghi Chú Thêm

Chúc mừng! Bạn đã có một hệ thống Ubuntu 25.04 (Plucky Puffin) RISC-V64 hoàn toàn upstream, sạch sẽ chạy trên Orange Pi RV2. Bạn hoàn toàn kiểm soát được kernel, repository, cập nhật bảo mật – không còn phụ thuộc vào image pre-built từ nguồn không rõ ràng.

🔧 Việc Còn Cần Làm (TODO)

  • Bluetooth: Cần thêm bước cấu hình firmware & bluez – tác giả gốc chưa viết xong phần này.
  • Kernel mới hơn: Có kernel mới hơn (6.15.x) tại LinuxQuestions.org thread. Hiện tại tác giả đã boot được 6.15.8 nhưng chưa có WiFi. Sẽ cập nhật sau.

📚 Tài Nguyên Tham Khảo


Bài viết được dịch và biên tập lại từ gist của thanhtantran để phù hợp định dạng WordPress. Nếu thấy hữu ích, hãy để lại comment hoặc share cho bạn bè chơi SBC RISC-V nhé! 🚀

Tags: Orange Pi RV2 Ubuntu 25.04 RISC-V Spacemit

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *