笔者操作系统为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
这里分别下载build-essential scons python-subversion subversion qemusudo 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指定从磁盘启动。执行命令后(成功)打开虚拟机窗口。
踩了好多坑,终于把坑都汇总起来了。液~