Qemu裝載Linux kernel和busybox根檔案系統

來源:互聯網
上載者:User

奶奶個熊,搞了好幾個晚上,被一個愚蠢的錯誤給害死了,沒有編譯成靜態檔案,跑起來後提示:no init file。

其實整個過程挺簡單的,就是細節沒有注意到。我寫成了指令碼(僅參考,工作還不OK),供大家參考:

#!/bin/bash#為了不影響其它,建立一個目錄來進行我們的工作mkdir kerneldbgcd kerneldbg#利用git版本管理系統,下載linux核心源碼.git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git#利用git版本管理系統,下載busybox源碼git clone git://busybox.net/busybox.git#檢查系統是否有安裝QEMU,如果沒有則要求安裝之dpkg -l | grep qemuif [ $? eq 1 ]    echo "Please install qemu first!"    echo "Usage: sudo apt-get install qemu"fi#先編譯busybox.編譯前需要將busybox設定為靜態連結.否則,哼,害死你@#你可以通過make menuconfig來手動設定.cd busyboxif [ -f .config ]    sed "CONFIG_STAIC=y"    #修改為靜態編譯,此為示意代碼!else    echo "missing .config, please \"make menuconfig\" first"fi#編譯busybox,然後安裝,會在目前的目錄下產生一個_install目錄makemake install#接著要進入到linux目錄cd ..cd linux-stable#進行必要的配置後make bzImage#建立磁碟鏡像dd if=/dev/zero of=rootfs.img bs=1M count=20#格式化磁碟mkfs.ext3 rootfs.img#建立rootfs目錄,用來掛載rootfs.imgmkdir rootfs#掛載rootfs.imgsudo mount -o loop rootfs.img rootfs#將busybox產生的_install目錄下的內容全部copy到rootfs目錄下.#這其實就是所謂的根檔案系統cp -rv ./busybox/_install/* ./rootfs#建立系統啟動必要的裝置檔案 cd rootfssudo mknod rootfs/dev/console c 5 1sudo mknod rootfs/dev/ram b 1 0#將linux編譯產生的bzImage拷貝過來cd ..cp ./linux-stable/arch/x86/boot/bzImage#啟動qemu,同時裝載剛才產生的根檔案系統及核心檔案qemu -hda ./rootfs.img -kernel ./bzImage -append "root=/dev/sda"
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.