QEMU搭建樹莓派環境


0x01

最近樹莓派被同學借去做畢設了,沒有其他ARM平台供我研究,無奈之下只好嘗試使用QEMU模擬raspbian,搭建過程比較繁瑣,網上的教程有很多坑都沒有指出,所以有了此文,給同樣有興趣做IoT安全、ARM平台安全的小伙伴們的入門鋪平道路。

0x02 

QEMU是啥?

QEMU是一個托管的虛擬機鏡像,它通過動態的二進制轉換,模擬CPU,並且提供一組設備模型,使它能夠運行多種未修改的客戶機OS,可以通過與KVM(kernel-basedvirtual machine開源加速器)一起使用進而接近本地速度運行虛擬機(接近真實計算機的速度)。

0x03

平台說明:Ubuntu18.04(4G內存,40G硬盤)為項目創建一個新的文件夾

 
 

將下載來的樹莓派鏡像放到這個文件夾下,將從github上下載來的qemukernel(官方內核在qemu中無法運行,所以在github上找了個能用的:https://github.com/dhruvvyas90/qemu-rpi-kernel)也放在這兒,解壓鏡像

 
 

使用fdisk觀察硬盤實體使用情況

 
 

可以看到img2的bootstart為92160,將其乘以512(在上圖中可以看到單位units:sectorsof 1 *512 =512bytes,說明還需乘以512),得到47185920,這就是后面命令中的offset

接下來先創建一個掛載用的文件夾

 
 

然后使用下面的掛載命令

 
 

接下來編輯ld.so.preload文件,將其中的內容注釋,然后使用umount寫在已經加載的文件系統

 
 

接下來通過qemu模擬樹莓派,使用下面的命令

qemu-system-arm-kernel ~/qemu_vms/<your-kernel-qemu> -cpu arm1176 -m 256 -Mversatilepb -serial stdio -append "root=/dev/sda2rootfstype=ext4 rw" -hda ~/qemu_vms/<your-jessie-image.img>-redir tcp:5022::22 -no-reboot

 
 

啟動過程如下圖

 
 

啟動完畢后如圖所示

 
 

為了后續的方便,我們一般會使用遠程連接,所以先安裝ssh服務端

 
 

在ubuntu上啟動ssh服務,在kali上測試下

 
 

然后在樹莓派上也啟動ssh服務,就可以遠程了,下圖是我kali遠程到ubuntu上后再遠程到樹莓派

 
 

或者也可以直接在kali上遠程到書樹莓派

 
 

因為我們后續基本都是靠ssh遠程連接,所以使用下面的命令使得樹莓派能夠開機自啟ssh服務

 
 

樹莓派默認以圖形化界面展示,如果想要以命令行模式啟動的話,按照如下步驟操作即可

輸入sudoraspi-config進入設置頁面,如下選擇bootoption

 
 

然后選擇desktop/cli

 
 

然后選擇consoleautologin

 
 

最后重啟即可

 
 

重啟后的界面就是這樣子的了

 
 

此時使用df–hl可以看到3.9G的空間現在已經用了3.6G了

 
 

為了以便不時之需,我們需要擴大容量,安裝如下步驟進行。先把樹莓派關掉,先拷貝一份原來的鏡像文件

 
 

再給新的鏡像文件擴容

 
 

接下來將擴容后的新鏡像作為第二塊硬盤啟動

 
 

輸入命令后進入如下的界面

 
 

如下圖選中將sdb2刪除

 
 

然后從freespace創建一個新分區,如下圖選中即可

 
 

選中write寫入

 
 

輸入yes確認

 
 

會提示寫入成功

 
 

然后退出即可

 
 

接下來使用fsck檢查文件系統中是否存在錯誤

 
 

可以看到沒有報錯,然后關閉樹莓派。

接下來我們在使用qemu啟動樹莓派的命令中只需要使用新鏡像就可以了,命令如圖中所示

 
 

這樣就完成了全部的工作。

0x04參考

1.https://zh.wikipedia.org/wiki/QEMU

2.https://azeria-labs.com/emulate-raspberry-pi-with-qemu/



作者:合天智匯
鏈接:https://www.jianshu.com/p/da00aea5d666
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM