Perintah Build Kernel Linux untuk RISC-V di macOS
· 1min
Referensi cepat untuk alur kerja yang dibahas di Cara Saya Mengompilasi dan Menjalankan Kernel Linux untuk RISC-V di Mac Apple Silicon.
Buat Config Awal
cd /Volumes/linuxkernel/linux
gmake ARCH=riscv LLVM=1 defconfigAktifkan Opsi Konfigurasi
./scripts/config --enable NONPORTABLE
./scripts/config --enable HVC_RISCV_SBI
gmake ARCH=riscv LLVM=1 olddefconfigVerifikasi Opsi Konfigurasi
grep -E "^CONFIG_HVC_RISCV_SBI" .configBuild Kernel
gmake ARCH=riscv LLVM=1 -j$(nproc) \
HOSTCFLAGS="-Iscripts/macos-include -I$(brew --prefix libelf)/include -Wno-incompatible-pointer-types -D_UUID_T"Build Binary Init
clang --target=riscv64-linux-gnu -static -nostdlib -fuse-ld=lld \
-o /Volumes/linuxkernel/initramfs/init \
/Volumes/linuxkernel/initramfs/init.cRepack Initramfs
/Volumes/linuxkernel/linux/usr/gen_init_cpio /Volumes/linuxkernel/initramfs.txt \
| gzip > /Volumes/linuxkernel/initramfs.cpio.gzBoot di QEMU
qemu-system-riscv64 -M virt -nographic \
-kernel /Volumes/linuxkernel/linux/arch/riscv/boot/Image \
-initrd /Volumes/linuxkernel/initramfs.cpio.gz \
-append "earlycon=sbi console=hvc0"Boot untuk Debugging
CPU dijeda, gdb stub di port 1234.
qemu-system-riscv64 -M virt -nographic \
-kernel /Volumes/linuxkernel/linux/arch/riscv/boot/Image \
-initrd /Volumes/linuxkernel/initramfs.cpio.gz \
-append "earlycon=sbi console=hvc0" \
-s -SSambungkan LLDB
Jalankan di terminal terpisah ketika QEMU sedang dijeda.
lldb /Volumes/linuxkernel/linux/vmlinux
# Lalu di dalam lldb:
# gdb-remote localhost:1234
# breakpoint set --name start_kernel
# continue