Linux内核的Linux开发环境搭建

虚拟机下搭建Linux-0.11的Linux实验环境

机器配置:
Windows 10 Professional 1809
VMWare Workstation 15 Pro
linuxmint-19.1-cinnamon-64bit.iso

做OS课程设计,课题实验是参考于哈工大OS课程的实验课指导,可参考HIT-OS-MANUAL,原文是哈工大一位学长的实验记录,在此表示敬意。

仅对于在实验指导下自己遇到的坑加以描述,作为后期资料,搭建步骤如下:
1.从Github上下载源码资源,包括:Linux-0.11内核源码与相关运行调试工具和gcc-3.4(高版本编译不了linux-0.11,也是我后面出错的原因),因为在Linux各发行版本里大都内置安装了wget,也可以在终端里键入:

$ wget https://github.com/hoverwinter/HIT-OSLab/raw/master/Resources/hit-oslab-linux-20110823.tar.gz
$ wget https://github.com/hoverwinter/HIT-OSLab/raw/master/Resources/gcc-3.4-ubuntu.tar.gz

一般会在Linux用户/home/XXX(XXX为用户名)根目录里找到上述两个压缩包(具体取决于终端打开时的所在目录)。
2.安装必要的工具

$ sudo apt-get install build-essential bin86 manpages-dev

一般执行完这一步,系统会附带安装所需依赖,执行 gcc -v 时 应该会显示已安装 gcc-7.x.x版本,接下来安装gcc-3.4,进入 gcc-3.4-ubuntu.tar.gz所在目录

$ tar zxvf gcc-3.4-ubuntu.tar.gz
$ cd gcc-3.4
$ sudo ./inst.sh xxxx #xxxx换为i386或amd64  我是用amd64装上的,i386显示依赖安装失败

此时gcc -v ,发现显示的还是gcc-7.x.x版本,在终端里键入:

$ sudo rm /usr/bin/gcc    #删除gcc-7.x.x的软连接
$ sudo ln -s /usr/bin/gcc-3.4  /usr/bin/gcc

现在gcc -v 应该就能显示gcc-3.4版本了,此时打开终端:

$ tar zxvf hit-oslab-linux-20110823.tar.gz
$ cd oslab/linux-0.11
$ make (或者make all 等效)

编译完成没有错误的话,回到oslab 目录下(cd …),使用Bochs模拟内核运行( ./run),会出现如下结果
Linux内核的Linux开发环境搭建_第1张图片
下面是可能遇到的错误与解决方法:

  1. asm/*.h : No file or Directory.

可能因为Linux不同发行版本的问题,有的系统里使用asm-generic 代替了 asm,而linux内核找不到相关库文件就会报错,一种解决方法时在/usr/include 里新建一个asm 文件夹,将asm-generic里的内容复制过去(需要在/usr/include 右键以Root身份打开,否则是只读模式,或者 $ cd /usr/include $ sudo cp -r asm-generic asm )

  1. /usr/bin/ld: cannot find crti.o: No such file or director

    $ sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
    
  2. /usr/bin/ld: 跳过不兼容的 -lgcc
    /usr/bin/ld: 找不到 -lgcc
    /usr/bin/ld: 跳过不兼容的 - lgcc_s
    /usr/bin/ld: 找不到 -lgcc_s
    collect2: error: ld returned 1 exit status

    $ sudo apt-get install gcc-multilib
    

你可能感兴趣的:(环境搭建,Linux,llinux-0.11内核,Linux,Mint)