📋 Mục Lục
- Giới Thiệu
- Phương Pháp Tiếp Cận
- Bước 1: Build Kernel .deb Từ Nguồn Orange Pi
- Bước 2: Cài Đặt Ubuntu 25.04 RISC-V Trên VM
- Bước 3: Cài Đặt Kernel & Cấu Hình DTB/GRUB
- Bước 4: Cấu Hình Firmware Cần Thiết
- Bước 5: Cấu Hình Ethernet & WiFi (Netplan)
- Bước 6: Boot Orange Pi RV2 Từ NVMe
- Kết Luận & Ghi Chú Thêm
📖 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)
- 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).
- Cài Ubuntu 25.04 RISC-V lên ổ NVMe gắn vào VM RISC-V (QEMU/KVM).
- Cài các file .deb kernel/firmware, cấu hình DTB, GRUB, initramfs.
- Cấu hình firmware, network, WiFi.
- 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:
- Ctrl+C hủy build.
- 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 - 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 - Tạo file flag để build script bỏ qua download:
touch toolchains/ky-toolchain-linux-glibc-x86_64-v1.0.1/.download-complete - Chạy lại
./build.shvà 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.deblinux-headers-current-ky_1.0.0_riscv64.deblinux-image-current-ky_1.0.0_riscv64.deborangepi-firmware_1.0.0_all.deb
💻 Bước 2: Cài Đặt Ubuntu 25.04 RISC-V Trên VM (Target NVMe)
- Tạo VM mới Kiến trúc RISC-V (riscv64) trên KVM/QEMU (VirtManager).
- Gắn ổ NVMe vật lý (hoặc ổ ảnh qcow2 trên NVMe thật) làm ổ cứng chính của VM.
- Mount ISO:
https://cdimage.ubuntu.com/releases/25.04/release/ubuntu-25.04-live-server-riscv64.iso - Cài đặt Ubuntu Server 25.04 bình thường, chọn ổ NVMe làm target.
- 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
- Tắt hẳn VM:
sudo shutdown -h -P now - 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.
- Cáp HDMI, Ethernet, bàn phím, nguồn.
- 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

