不過照著教學的步驟,使用Ubuntu 12.04來設定QEMU和編譯可能會遇到一些問題,像是一開始安裝QEMU和KVM之後
$ sudo apt-get install qemu-system kvm
改用qemu-system-i386的指令取代qemu就可以在Ubuntu 12.04上跑QEMU虛擬系統了。再來,設定準備子系統
$ dd if=/dev/zero of=disk.img bs=1 count=1 seek=10737418239
切割設定為10GB的硬碟大小。
執行安裝Ubuntu 12.04
$ qemu-system-i386 -hda disk.img -m 1024 -cdrom ubuntu-12.04.3-desktop-i386.iso -boot d
會發現有一個warning,說無法啟動KVM,這個是因為沒有安裝kvm
$ sudo modprobe kvm-intel
但執行後可能會看到
結論是這樣就可以開始載入Ubuntu 12.04到QEMU中了。
安裝過程
安裝完成之後就可以開啟QEMU中的Ubuntu了,不過因為需要用到網路,所以要使用以下指令,net採用user mode有點類似VirtualBox的NAT網路模式,會由Host OS端發虛擬IP給Guset OS端上網使用。
$ qemu-system-i386 -net nic -net user -hda disk.img -m 2047
如果電腦記憶體夠大的話可以給2GB,讓QEMU執行可以快點。
開機後確定上網OK。
\> sudo apt-get build-dep linux
\> sudo apt-get install libncurses5-dev
最後就可以關閉QEMU了。
\> sudo shutdown -h now
接著要利用chroot來編譯Kernel,首先要把Guset OS掛載到Host OS,讓Host端的Ubuntu可以讀取Guest端的File system,藉此傳檔案及編譯Kernel,速度會比在QEMU上跑快速很多,但風險是不要在此時使用root權限,不然有可能會改到Host端的OS本身的內容。
$ sudo losetup /dev/loop0 disk.img
$ sudo fdisk /dev/loop0
$ sudo losetup -d /dev/loop0
在主系統的partition資料夾掛載子系統的分割區
$ mkdri partition
$ sudo losetup --offset 1048576 /dev/loop0 disk.img
$ sudo mount /dev/loop0 partition
掛載成功後會看到partition資料夾內可以看到Guest OS的Ubuntu 12.04的File system
修改資料夾權限,然後把Linux kernel 3.5.5解壓縮到partition資料夾下的usr/src
$ sudo chown brown:brown partition/usr/src
$ tar jxf linux-3.5.5.tar.bz2 -C partition/usr/src
$ sudo chown root:root partition/usr/src
就可以準備來編譯Kernel了。
沒有留言:
張貼留言