结合网上的教程,终于配置好啦~
系统环境为ubuntu 16.04 LTS
1、下载源工程 https://github.com/Neirth/FreeNOS
即终端输入将代码clone至本地 git clone https://github.com/Neirth/FreeNOS.git
2、安装scons(用于构建源代码)
(scons是Linux下的一种自动构建工具,类似于cmake,在安装scons之前,需要确保已经安装过python,Ubuntu16.04自带python2.7,所以不需要重复安装python。)
sudo apt-get install scons
3、安装qemu(安装模拟器,用于在模拟器中运行FreeNOS)
首先安装aptitude(包管理工具)
sudo apt install aptitude
再安装qemu(模拟器)
sudo aptitude install build-essential scons python-subversion subversion qemu
4、安装32位工具包。下面代码二选一即可
(注:我的电脑是64位的,所以跑32位的qemu需安装32位工具包。)
sudo apt-get install libc6-dev-i386
sudo apt-get install gcc-multilib g++multilib
测试:终端输入dpkg --print-foreign-architectures 输出为i386 则32位工具包创建成功
5、添加一行代码。打开FreeNOS/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')
6、安装xorriso
sudo apt install xorriso
7、执行scons iso命令,生成build文件夹。
scons iso
执行成功后会在 FreeNOS/build/intel/pc/ 路径下会生成boot.iso文件,如果生成boot.img则说明scons iso未能成功执行。本人遇到的问题是:
scons: Building targets ...
ISO build/intel/pc/boot.iso
grub-mkrescue: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory
即重新下载,解压放进该/usr/lib/grub/下面。
cd /tmp
sudo apt-get download grub-pc-bin
dpkg-deb -R grub-pc-bin_2.02~beta2-36ubuntu3.20_amd64.deb grub/
sudo mv grub/usr/lib/grub/i386-pc/ /usr/lib/grub/
grub-pc-bin_2.02~beta2-36ubuntu3.20_amd64.deb这个包在/tmp下面。
8、使用quem构建虚拟机
qemu-img create FreeNOS.img 10G
9、将镜像载入虚拟机
qemu-system-x86_64 -m 512 -smp 4 -hda FreeNOS.img -cdrom ../FreeNOS/build/intel/pc/boot.iso -boot dc
10、运行截图
11、阅读源码思路