【FreeNOS学习笔记】FreeNOS安装手册

笔者操作系统为Ubuntu16.04,按照官网给的教程结合在网上找到的大家一起踩过的坑,总结出如下安装手册。基本思路是在Ubuntu16.04上安装虚拟机qemu,在虚拟机上跑FreeNOS。

参考博客为:

  • FreeNOS初探索
  • FreeNOS学习,在Ubuntu16.04的64位计算机上编译32位汇编文件,在SConstruct中添加编译选项
  • 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 
     这里分别下载build-essential scons python-subversion subversion qemu

3.按照官网教程,接下来进入FreeNOS目录,使用命令scons iso。在输出一大段内容之后报错:

【FreeNOS学习笔记】FreeNOS安装手册_第1张图片

报错的意思是不支持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')

    在系统中的截图如下:

  • 【FreeNOS学习笔记】FreeNOS安装手册_第2张图片

之后再执行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指定从磁盘启动。执行命令后(成功)打开虚拟机窗口。

踩了好多坑,终于把坑都汇总起来了。液~

你可能感兴趣的:(踩过的坑,Linux基础知识,源码学习笔记)