筆者操作系統爲Ubuntu16.04,按照官網給的教程結合在網上找到的大家一起踩過的坑,總結出如下安裝手冊。基本思路是在Ubuntu16.04上安裝虛擬機qemu,在虛擬機上跑FreeNOS。
參考博客爲:
官網安裝手冊爲:官網安裝手冊
0.安裝scons
scons 是python寫的一個自動化構建工具。因此安裝之前應確保電腦上已經裝了python。Ubuntu16.04自帶python2.7,因此直接執行下面的命令即可。scons只支持到python2,還未支持python3。
sudo apt-get install scons
1.從github下載FreeNOS源碼
git clone https://github.com/nieklinnenbank/FreeNOS
2.按照官網安裝教程安裝qemu。
- 安裝aptitude
sudo apt install aptitude
- 安裝qemu
sudo aptitude install build-essential scons python-subversion subversion qemu
3.按照官網教程,接下來進入FreeNOS目錄,使用命令scons iso。在輸出一大段內容之後報錯:
報錯的意思是不支持mov指令,這其實是因爲在64位的Ubuntu上跑32位的qemu導致的指令不兼容問題。參考FreeNOS學習,在Ubuntu16.04的64位計算機上編譯32位彙編文件,在SConstruct中添加編譯選項給出的解決方案
- 這裏用到了32位的工具包,編譯過程中可能找不到對應文件,因此可以試試使用命令安裝工具包:(兩條指令隨便一條就可以了)
sudo apt-get install libc6-dev-i386 sudo apt-get install gcc-multilib g++multilib
- 之後在${FreeNOS_HOME}/SConstruct文件中增加一句build_env.Append(CCFLAGS='-m32 -Wno-cpp -Wno-unused-variable -Wno-sign-compare')即可。具體實現如下:
build_env = target Export('build_env') build_env.Append(CCFLAGS='-m32 -Wno-cpp -Wno-unused-variable -Wno-sign-compare')
在系統中的截圖如下:
之後再執行scons iso,會出現以下問題:grub-mkrescue:warning:Your xorriso doesn’t support ‘—grub2-boot-info’,some features are disabled.這是一個警告,但會導致安裝失敗。因此需要安裝xorriso。這裏參考博客FreeNOS初探索
sudo apt install xorriso
安裝之後再執行scons iso指令,就能夠成功生成build文件夾了。該文件夾裏有boot.iso文件。
4.使用quem構建虛擬機
qemu-img create FreeNOS.img 10G
5.將鏡像載入虛擬機
qemu-system-x86_64 -m 512 -smp 4 -hda FreeNOS.img -cdrom ../FreeNOS/build/intel/pc/boot.iso -boot dc
4和5參考博客FreeNOS學習筆記,5的指令中,-m分配虛擬內存,單位爲MB,一開始分配4096提示錯誤!因爲我的電腦也才4G內存;-smp分配虛擬硬盤空間,單位爲GB;-hda指定虛擬機文件路徑和文件名;-cdrom指定ios鏡像文件路徑和文件名;(讀者一定要找到自己的鏡像確實放在哪裏。一般來說是在FreeNOS/build/intel/pc/boot.iso,鏡像的位置需要在該指令中做替換)-boot指定從磁盤啓動。執行命令後(成功)打開虛擬機窗口。
踩了好多坑,終於把坑都彙總起來了。液~