其实我觉得对于linux内核,真的不知道从哪里入手是好,因为各个环节关联性太强了,以至于看到这里就不得不翻一下那里是怎么实现的,所以对于入门的确是一件很头疼的事情,我也大概在这里折腾了一个多月,把《linux内核设计与实现》也看了两三遍,还是有点摸不着头脑,不过随着接触多了也就对整体有了一定的认识,在西电的一本《linux操作系统分析》的书上,我发现它首先是从linux内核的启动开始的,这让我觉得是个不错的注意,于是我也就从这里看起。

就像在使用软件之前要读一下README一样,内核也有这样的一个文件,何不尝试阅读以下提取一些有用的信息呢。

Linux是UNIX操作系统的一个衍生类型的操作系统,它是由Linus Torvalds创造完成,并且和散布在世界各地的、无组织的内核黑客们通过网络共同编写和维护的操作系统,它遵守POSIX和Single UNIX Specification的规约。

Linux具有你对一个现代的、成熟的、全面的操作系统一切能够期望功能,包括真正的多任务、虚拟内存管理、共享库、动态模块、写时复制、内存管理和覆盖IPV4和IPV6的网络支持。并且它是在GNU General Public License规约下发布的,可以被任何使用者使用、传播,但是要在free的前提下。

Linux能够很轻松的移植到任何通用的32位和64位体系结构上,只要该系统具有分页式内存管理单元(PMMU)和一定的GCC编译器端口的功能,并且Linux还可以一直到不具有PMMU功能的架构上,虽然一些功能会受到限制。

安装内核:

1、首先将内核下载到本地的任何一个目录下,当然最好不要使用/usr/src/linux目录,因为这里已经包含一部分的源代码,可能产生混乱,然后对它进行解压:

gzip -cd linux-3.X.tar.gz | tar xvf -    或者    bzip2 -dc linux-3.X.tar.bz2 | tar xvf -

这里的X表示的是版本号,我们这里使用的是3.0.16版本的内核。

2、可以不在本目录下编译,这时候就需要在make命令下增加一定的选项,使用"make O=output/dir"可以在执行目录下对源代码进行编译,如下例:

kernel source code: /usr/src/linux-3.N

build directory: /home/name/build/kernel

To configure and build the kernel use:

cd /usr/src/linux-3.N

make O=/home/name/build/kernel menuconfig

make O=/home/name/build/kernel

sudo make O=/home/name/build/kernel modules_install install

可以看到,对于内核的编译也是通过类似于编译软件的方式make  config / make / make install三步。

3、配置内核,一般使用make  config之类的方式进行内核的配置,通常我们会有以下几个可以选择的方式:

"make config"                  基于文本的配置

"make menuconfig"       基于图形界面的配置方式

"make xconfig"                基于X-windows(QT)图形界面的配置方式

"make oldconfig"            如果只希望在当前的版本上完成新的选项的配置,它将使用./.config的配置信息完成已存在的配置,然后进行新的配置

"make defconfig"            使用arch/$ARCH/defconfig或者arch/$ARCH/configs/${PLATFORM}_defconfig的配置信息进行配置,并在当前目录下创建一个config文件,使用默认的配置选项。

4、编译内核,首先保证你的GCC编译器版本至少在3.2以上,然后使用make命令会将内核编译成一个压缩的内核映像,为了能够启动新的内核,需要将这个映像(在具体的架构目录的boot目录下的bzImage文件)移动到一般的内核启动的映像所在的目录。

5、修改/etc/lilo.conf文件的一些关于新编译内核的信息,以至于重新启动的时候可以选择新内核启动,配置好这些属性之后就可以重新启动,选择新内核就可以运行新编译的内核了。

以上内容是自己对整个内核编译和使用的理解,关键在于配置内核信息和编译内核,这会消耗一定的时间,最后要选择使用的引导程序完成内核启动时的引导配置,这样就能够使用新编译的属于自己的内核了。

从README开始吧相关推荐

  1. README 规范和项目文档规范

    1. README 规范 我们直接通过一个 README 模板,来看一下 README 规范中的内容: # 项目名称<!-- 写一段简短的话描述项目 -->## 功能特性<!-- 描 ...

  2. TVM示例展示 README.md,Makefile,CMakeLists.txt

    TVM示例展示 README.md,Makefile,CMakeLists.txt TVM/README.md Open Deep Learning Compiler Stack Documentat ...

  3. uboot readme 文件 (1)

    Software Configuration: ======================= 软件的配置 Configuration is usually done using C preproce ...

  4. github README.md教程

    github README.md教程 总结 github中README.md通过特殊字符标记和缩进来达到格式控制,也可以用HTML标签来实现格式控制. 教程一: Markdown 的目标是实现「易读易 ...

  5. GitHub上README.md教程

    http://blog.csdn.net/kaitiren/article/details/38513715 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文 ...

  6. 论文LaTeX、项目README:无脑套用格式、开源模板最高10万赞

    公众号关注 "视学算法" 设为 "星标",消息即可送达! 来自 | GitHub    转自 | 机器之心 参与 | Jamin.思.一鸣 即使是最具创意性的机 ...

  7. P4factory ReadMe Quickstart 安装p4factory

    操作系统: Ubuntu 14.04 前言 在之前,我直接从P4.org给的GitHub网址上下载了p4factory,但是在根据ReadMe的内容进行QuickStart的时候,发生了shell脚本 ...

  8. 如何写一个通用的README规范

    背景 我们平常在进行项目开发时,一般都会把代码上传至代码托管平台上方便管理和维护.目前大家使用的托管平台最多的还是Github,国内外还有一些比较知名的代码托管平台,比如Gitlab.BitBucke ...

  9. 如何写一个通用的README规范 1

    背景 我们平常在进行项目开发时,一般都会把代码上传至代码托管平台上方便管理和维护.目前我厂使用的托管平台是SVN,国内外还有一些比较知名的代码托管平台,比如github.Gitlab.BitBucke ...

  10. 如何在github存储库中添加屏幕截图到README?

    本文翻译自:How to add screenshot to READMEs in github repository? Is it possible to place a screenshot in ...

最新文章

  1. 50 年人类登月史:那些不为人知的故事
  2. Ubuntu 16.04 安装 CUDA、CUDNN 和 GPU 版本的 TensorFlow 一般步骤总结
  3. HTML标签strong和em
  4. gevent.joinall()开启协程
  5. python数据匹配_python 匹配@
  6. Linux网卡配置(二)网卡配置命令
  7. tracepro应用实例详解_离心铸造工艺(实例)
  8. 微信“看一看“个性化推荐:排序篇
  9. 荣幸参加 微软 Teched 2012 会议
  10. 开启事物_《原神》全新角色甘雨登场 「浮生孰来」活动祈愿开启_新闻资讯_最新手游时评_原创手游资讯...
  11. Windows Azure移动终端云服务管理(公测版)
  12. cuda编程python接口_混合编程[python+cpp+cuda]
  13. 我不够格,但我还是希望事情到此为止,继续工作罢
  14. Tomcat学习总结(4)——基于Tomcat7、Java、WebSocket的服务器推送聊天室
  15. 建立RoBERTa模型以发现Reddit小组的情绪
  16. Mac本终端连接服务器
  17. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接
  18. 下雨天,走一段路,是走淋雨少还是跑
  19. 数据仓库-你不知道的HSQL?
  20. 运行官方byfn.sh跑通网络

热门文章

  1. 未来应用陈鸿:被微信封掉公众号后怎么办?——给微信创业者的10点真诚建议
  2. 寻回犬:笔记本、智能手机守护者
  3. 素描入门工具需要准备哪些
  4. Centos部署Spring cloud微服务(CCE example)
  5. MyBatis-Plus之简介、快速入门、insert、update
  6. css零到一基础教程006:CSS 颜色
  7. Java汉字转拼音(全拼、首字母拼)
  8. 在unity中读取并可视化dicom图像(fo-dicom / C# / unity)
  9. mysql错误1064_mysql 1064异常原因及解决方法
  10. 计算机毕业设计ssm基于ssm流浪宠物领养系统8xg84系统+程序+源码+lw+远程部署