8.3.1. 安装内核

编译内核包含几个步骤(配置、编译和安装)请阅读内核源码树里的 README 文件,选择不同于本书的其它配置内核的方式。

运行下面的命令做编译前的准备:

make mrproper

这样可以确保内核源码树是绝对干净的,内核开发组推荐每次编译内核之前都先运行这个命令。请不要以为解包后内核源码树自动就是干净的。

如果在 Section 7.6. "配置 Linux 控制台" 中决定了要把键盘映射表编入内核,请运行下面的命令:

loadkeys -m /usr/share/kbd/keymaps/[path to keymap] > \

drivers/char/defkeymap.c

例如,如果您使用荷兰语键盘,请使用 /usr/share/kbd/keymaps/i386/qwerty/nl.map.gz 。

通过菜单界面配置内核:

make menuconfig

BLFS 有一些关于 LFS 之外的一些软件包的特别的内核配置需求,具体参见这里:http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index 。另外,在某些情况下 make oldconfig 可能是更恰当的,请参考 README 以获得更多信息。

如果您愿意,可以跳过配置内核的步骤,直接把宿主系统里的内核配置文件 .config(如果存在的话)复制到解压后的 linux-2.6.11.12 目录下。当然,我们不推荐这样做,考察全部的配置菜单并从头开始创建内核配置是更好的办法。

注意

NPTL 的支持要求内核使用 GCC-3.x 及以上的版本编译,在这本书里是GCC-3.4.3 。不推荐使用 GCC-2.95.x ,因为它会导致 Glibc 测试套件失败并且在 LFS Book 中不会提及这样的失败,因为 LFS 不是用 GCC-2.95.x 创建的。很不幸,内核文档相当陈旧,还在建议使用 GCC-2.95.3 作为编译器。

编译内核镜像和模块:

make

如果使用内核模块,就需要 /etc/modprobe.conf 文件。关于模块和内核配置的信息请参考 linux-2.6.11.12/Documentation 目录下的内核文档,modprobe.conf(5) 也是有用的。

阅读其它文档的时候请小心,因为它们通常只适用于 2.4.x 版本的内核。据我们所知,关于 Hotplug 和 Udev 的内核配置问题还没有文档说明。这个问题是这样的:如果 Hotplug 或用户写的脚本把模块插入内核,Udev 只创建了一个设备节点,而且不是所有模块都可以被 Hotplug 检测到。请注意,/etc/modprobe.conf 文件里像下面这样的语句在 Udev 下是不起作用的:

alias char-major-XXX some-module

因为 Hotplug、Udev 和模块的复杂性,我们强烈推荐您从完全非模块化的内核配置开始,特别是第一次使用 Udev 的时候。

如果内核配置了模块,就安装它们:

make modules_install

内核编译完之后,还需要一些步骤来完成安装,有些文件要复制到 /boot 目录里去。

内核镜像文件所在的路径根据您使用的平台不同而不同,x86平台上请运行下面的命令安装内核:

cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12

System.map 是内核的符号文件,它映射了每个内核 API 函数的入口,以及运行中内核数据结构的地址。请运行下面的命令安装这个文件:

cp -v System.map /boot/System.map-2.6.11.12

上面 make menuconfig 这一步产生的内核配置文件 .config 包含了刚才编译的内核的全部配置选项,保留这个文件以备将来参考:

cp -v .config /boot/config-2.6.11.12

很重要的一点是要注意到内核源码目录里的文件所有者不是 root 。只要是用 root 用户解压软件包(像我们在 chroot 环境里做的那样),解压出来的文件的用户和组 ID 是这个软件包打包者计算机上的用户和组 ID,对于其它软件包,这通常不是问题,因为安装完这些软件包之后源码目录就删除了,但是 Linux 内核源码树常常会保存很长的时间,这样就有可能打包者的用户 ID 和您计算机上某个用户的 ID 相同,从而让您计算机上的这个用户获得了内核源码的写权限。

如果您准备保留内核源代码,在 linux-2.6.11.12 目录下运行 chown -R 0:0 命令以确保全部文件的所有者是 root 。

警告

一些内核文档推荐创建一个从 /usr/src/linux 指向内核源代码目录的符号连接。这只是一个对 2.6 以前版本内核的特殊要求,并且在 LFS 系统上是 不允许 这样做的,因为这样做会导致你的基本 LFS 系统安装好以后再安装别的软件包的时候导致问题。

另外,系统 include 目录下的头文件应当 永远 保持 Glibc 在编译时使用的那个版本,也就是 Linux-Libc-Headers 包中的那个版本。决不要 使用内核包中的头文件。

linux 彻底定制指南,8.3. Linux-2.6.11.12 《Linux 彻底定制指南》[翻译:金步国]...相关推荐

  1. GCC编译优化指南【作者:金步国】

    GCC编译优化指南[作者:金步国] GCC编译优化指南 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分 ...

  2. linux 软件包kbd 位置,1.10.42 6.42. Kbd-1.12 - Linux 系统构建指南

    Kbd 包含键盘映射表和键盘工具. 预计编译时间: 少于 0.1 SBU所需磁盘空间: 12.3 MB 6.42.1. 安装 Kbd Backspace 键和 Delete 键的功能在 kbd 包的键 ...

  3. 从空中祝福深度Linux 11.12开发者

    在昨天晚上大约9时半左右,当我乘坐的航班(空客321)从深圳起飞经过武昌上空时,我在心中默想着那些集中在武汉市东湖(光谷创业街)8号楼里面的深度"小毛头",一帮很可爱的小家伙(当然 ...

  4. linux降低eigen3版本_玩转 Windows 自带的 Linux 子系统 (图文指南)

    涉及到计算机科学离不开 Linux 系统,当然,也离不开Windows.但是,二者从操作到核心的不同,貌似让鱼和熊掌不可兼得. 但是!微软已经拿出了一款让鱼和熊掌兼得的方案 WSL (Windows ...

  5. Linux系统的基本使用指南(速成,帮助快速上手使用Linux系统)

    Linux 一.Linux背景知识 1.什么是linux Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次 ...

  6. 【正点原子MP157连载】第四十章 Linux I2C驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  7. 【正点原子Linux连载】第三十七章 Linux内核移植 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. linux心跳出血漏洞,heartbleeder 自动检测 OpenSSL 心脏出血漏洞 (附修复指南)

    heartbleeder 可以探测你的服务器是否存在 OpenSSL CVE-2014-0160 漏洞 (心脏出血漏洞). 什么是心脏出血漏洞? CVE-2014-0160,心脏出血漏洞,是一个非常严 ...

  9. 【正点原子Linux连载】第四十三章 Linux设备树 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. 应用程序的数据库从Sql Server迁移到Oracle
  2. 双向链表(C++实现)
  3. 企业网络推广方案浅析网站优化中外链该怎么发布?
  4. 【工具推荐】ELMAH——可插拔错误日志工具(转)
  5. html单页面显示多个文章,从单个html页面上的多个django应用模型获取数据
  6. sdut 双向队列(STL)
  7. mysql双主双从_mysql双主双从
  8. Beetl模板 [记录]
  9. npm install vs. update - 有什么区别?
  10. Python面试基础
  11. 拓端tecdat|R语言聚类有效性:确定最优聚类数分析IRIS鸢尾花数据和可视化
  12. Ubuntu20设置蓝牙
  13. APUE C内存空间详解图
  14. 31省份RD经费内部支出、全时当量、专利数、技术市场成交额(1997-2019年)
  15. Word怎么压缩变小?压缩word文档不妨试试这个方法
  16. html 的title中显示网页logo
  17. Pubwin服务端重装(安装)教程
  18. 张家港python培训_张的解释|张的意思|汉典“张”字的基本解释
  19. python break语句作用_Python break语句详解
  20. 【秋招备战计划第一弹】今天就开始备战秋招

热门文章

  1. Android的历史、版本与开发
  2. c++语言表白超炫图形_C/C++图形界面编程打造——浪漫的表白程序!
  3. 用 PHPRPC 实现 Ajax 安全登录
  4. Meta:绝对没有威胁要离开欧洲市场
  5. 杀入“果链”!闻泰科技取代台厂成苹果MacBook组装供应商
  6. 苹果蜂窝网络版iPad mini 6不支持毫米波5G
  7. 马斯克:特斯拉取消Model S Plaid+生产 Plaid版性能已非常好
  8. 月薪23333元!淘宝招募“首席鉴雕官”,只需天天哈哈哈哈哈
  9. 小米10至尊纪念版DXO第一 雷军:这是小米打拼三年第二次登顶
  10. 苹果WWDC 2020回顾:来看看这个安卓味的iOS 14!