Mac下重新编译Linux内核

操作系统实验,要求添加系统调用并重新编译内核,这里记录一下编译内核的过程

0.下载VirtualBox

博主一直用parallel desk,但因为驱动等问题,在PD上重新编译后无法出现图形界面,所以建议采用绝缘性较好的VirtualBox来编译内核。

1.下载内核

从Linux的官网http://www.kernel.org下载内核代码即可,注意版本号,建议用比较新的Ubuntu系统的话就采用新的内核。

这里博主遇到了一个坑,在16.04的Ubuntu下编译3.11.4内核时遇到error,原因是系统的gcc版本是5,而3.11.4内核不包含gcc5.h,直接报错。

2.部署内核源码

# 把内核解压到/usr/src目录下
cd /usr/src
tar -xvf ~/Downloads/linux-4.14.1.tar.xz #解压源码

3.在内核代码目录下创建.config

如果没有大的改动的话可以通过原来的配置文件来生成新的配置文件

cd linux-4.14.1
cp /boot/config-`uname -r` .config #这里`uname -r`可以求出当前的内核版本
sudo make oldconfig

之后会出现一些列配置选项,全部回车即可

4. 编译内核

sudo make
sudo make modules_install
sudo make install

编译时可能出现缺少openssl,apt install即可,make的时间比较长,中途如果出错再次编译前最好先sudo make clean

5. 测试

sudo reboot #重启
uname -r # 查看内核版本

第一次重启可能比较慢,耐心等待即可。

Mac下重新编译Linux内核的更多相关文章

  1. 编译Linux内核(Mac OS平台)

    操作系统第一次实验需要编译Linux内核,我之前在Mac上一直使用的都是Parallels Desktop这个软件,所以这次也将课程网站上提供的Ubuntu安装在了PD上,但是编译完内核后无法进入Ub ...

  2. Centos下编译Linux内核

    Linux内核编译是一件简单却费事的事.但是独立的编译linux内核会帮助你很好的理解Linux内核的工作机理. 首先编译linux内核我们需要在当前linux操作系统下安装gcc编译器,因为我是Ce ...

  3. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    最近帮一位上海的朋友搞一块小板,在ubuntu15.04 vivid上已经加载了对应了.ko驱动包 但关键是系统根本就枚举不到该声卡ALC5640,试了OpenSUSE也是一样的结果,看来是内核漏加载 ...

  4. 编译linux内核时出错

    在编译linux内核的时候使用make menuconfig 可能出现下面的错误 *** Unable to find the ncurses libraries or the*** required ...

  5. 为什么要编译Linux内核?

    新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核. 通常,更新的内核会支持更多的硬件,具 ...

  6. 自定义配置编译linux内核

    1 编译linux内核原因一般情况下,我们是不需要重新去编译linux内核的,但如果你发现你需要修改内核的某个部分或者说你需要的某个模块并没有编译进内核,那里你可以通过重新编译内核来满足你的需求,比如 ...

  7. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #2 如何编译Linux内核

    HACK #2 如何编译Linux内核 本节介绍编译Linux内核的方法.当发现bug而修改源代码或者添加新功能时,就需要对内核进行重新编译,生成二进制映像文件.另外,如果想要使用发布版内核中无效的功 ...

  8. 35、在编译Linux内核中增加程序需要完成以下3项工作

    在编译Linux内核中增加程序需要完成以下3项工作: 将编写的源代码拷入Linux内核源代码的相应目录. 在目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项 在目录的Makefile文 ...

  9. 安装debian总结以及编译linux内核

    1. 安装debian 使用unetbootin(http://unetbootin.sourceforge.net/)来创建启动盘,并且下载debian的基本包. 将磁盘进行压缩操作,并且保留出一个 ...

随机推荐

  1. 腾讯云Ubuntu安装可视化桌面

    1.安装图形界面 sudo apt-get update 更新 1).sudo apt-get install xinit 2).sudo apt-get install gdm  ( 登陆窗口,用于 ...

  2. jQuery 核心 - noConflict() 方法[避免冲突的方法]

    定义和用法 noConflict() 方法让渡变量 $ 的 jQuery 控制权. 语法 jQuery.noConflict([removeAll]) 参数描述removeAll布尔值.指示是否允许彻 ...

  3. Elasticsearch snapshot 备份的使用方法 【备忘】

    常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失.虽然 Elasticsearch 有良好的容灾性,但由于以下原因,其依然需要备份机制. ...

  4. [转] iOS9系统自带字体

    Family: Thonburi Font: Thonburi-Bold Font: Thonburi Font: Thonburi-Light 1 2 3 4 Family: Khmer Sanga ...

  5. 【bzoj4976】宝石镶嵌

    题解: 比较水 注意k<=100这个条件 当n-k比较大的时候 我们显然会把它有的位都给取了 不然的话我们可以考虑dp 暴力状压就可以了 代码: #include <bits/stdc++ ...

  6. asp.net Web API 身份验证 不记名令牌验证 Bearer Token Authentication 简单实现

    1. Startup.Auth.cs文件 添加属性 1 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; ...

  7. 配置windows批处理脚本(.bat)文件路径 | window批处理文件配置执行路径

    以PHP的composer为例 1 . 路径D:\phpStudy\php\php-5.5.38加入环境变量 2.在路径D:\phpStudy\php\php-5.5.38新建composer.bat ...

  8. BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA

    原文链接http://www.cnblogs.com/zhouzhendong/p/9016336.html 题目传送门 - BZOJ4319 题意 给出一个$1,2,\cdots,n$的排列,第$i ...

  9. 存储过程导入excel

    #region 导入订单        protected override string DoExcelData(System.Data.DataTable dt)        {         ...

  10. ELK安装(windows)

    一.安装JAVA环境 在Oracle官网获取最新版的Java版本,官网:http://www.oracle.com/ 安装完成后,配置JAVA_HOME和JRE_HOME. 二.下载安装ELK htt ...