iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
Security

現在是pwn的天下!系列 第 26

【Day-26】QEMU:在虛擬世界中跑起自己的 Linux Kernel

  • 分享至 

  • xImage
  •  

前言

昨天我們已經學會如何 編譯並客製化自己的 Linux Kernel。不過,光是編出來還不夠,還需要一個安全的環境來測試它能不能正常運作。
如果直接把 Kernel 裝進實體機,可能會導致系統壞掉或無法開機。這時候,我們就需要一個「實驗室」—— QEMU。

什麼是 QEMU?

QEMU (Quick Emulator) 是一個開源的虛擬化與模擬器工具。
它可以:

  • 模擬不同的 CPU 架構(x86、ARM、RISC-V…)

  • 提供虛擬硬體(網卡、磁碟、顯示卡)

  • 在安全的環境裡測試 Kernel 或作業系統

  • 簡單來說,QEMU 就像一個虛擬電腦,你可以在裡面盡情實驗,而不會弄壞你的真實系統

安裝 QEMU

在不同的 Linux 發行版,可以這樣安裝:
Ubuntu / Debian

sudo apt update
sudo apt install qemu qemu-system-x86

Arch Linux

sudo pacman -S qemu

Fedora

sudo dnf install @virtualization

使用 QEMU 執行自己的 Kernel

假設你昨天已經編好一個 Kernel:

  • Kernel 映像檔:arch/x86/boot/bzImage
  • 根檔系統:initramfs.cpio.gz
    可以用以下指令啟動:
qemu-system-x86_64 \
  -kernel arch/x86/boot/bzImage \
  -initrd initramfs.cpio.gz \
  -append "console=ttyS0" \
  -nographic

參數說明

  • -kernel:指定要使用的 Kernel
  • -initrd:指定 initramfs 根檔系統
  • -append:傳遞啟動參數(這裡讓 console 輸出到序列埠)
  • -nographic:純文字模式,不開 GUI

測試結果

如果 Kernel 成功啟動,終端機會輸出類似訊息:

[    0.000000] Linux version 6.x.y-custom ...
[    0.123456] Kernel command line: console=ttyS0
[    1.234567] Run /init as init process

這表示你的 Kernel 已經在 QEMU 中順利跑起來

結論

  • QEMU 是 Kernel 開發與學習的最佳工具

  • 它提供一個安全的虛擬環境,不怕測試 Kernel 把系統弄壞

  • 未來我們可以利用 QEMU 來 除錯、玩不同架構、甚至做資安實驗


上一篇
【Day-25】Customize Linux Kernel:打造專屬的作業系統核心
下一篇
【Day-27】Booting:Linux Kernel 如何從零啟動
系列文
現在是pwn的天下!28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言