3.23linux内核编译学习

写了一个小时,结果图书馆网不好,结果没保存,嘤嘤嘤,来重新返工了。

昨天的操作系统第一个实验,编译linux内核,看成实验教程做比较简单,过程也比较顺利。但还有一些小问题。老师要求用Ubuntu14.10,开始自己在极速上随便下个 Ubuntu GNOME 15.10,装起来蛮快的,进系统之后美瞎了,但是怕后续实验出错,就没敢在这个上面编译,哎是个遗憾。后来直接用的之前装Tinyos的ubuntu,内核版本是linux 3.19.1,没用更新的内核版本试下,又是个遗憾。

第一步,解压,因为直接用命令在网络上下载会出现网络错误,所以直接用网教上下载的老师的内核,copy到虚拟机里直接解压的:

sudo tar xvJf ./linux-3.19.1.tar.xz

cd ./linux-3.19.1

第二步安装ncurses,之前照做也没思考这个是什么,后来经老师启发也查了一下:原来作用是提供字符终端处理库;输入的命令:

sudo apt-get install libncurses5-dev build-essential kernel-package

有两个tips:

(1)libncurses5-dev是为了之后配置内核能运行make menuconfig程序做准备;build-sesstial为编译工具,kernel-package是编译内核工具。

(2)如果系统显示无法查找到这三个文件,输入#apt-get update更新数据源

其实我做的时候比较顺利。完全无视这两个tips了,系统并没有显示无法查找到这三个文件。

第三步应该是图形化的内核配置,关于这个命令,加一个连接make menuconfig,讲的比较详细:

 sudo make menuconfig

一个tips是命令执行完成后打开配置菜单,直接关闭即可,不进行改动。实际上却是自动跳出来一个配置菜单,亲测选Exit和Save都没影响。

之后最关键的一步开始编译内核了:

sudo make

命令虽短,但执行起来超级慢。也可能是我电脑的问题,足足编译了一个下午加半个晚上,期间好多次我都以为要宕机了TAT。听同学们说普遍情况是3—4h,快的也有1个多小时的,像我一样7、8h也有几个。据说有加快编译速度的方法,等下补充

第五步,安装内核模块:

sudo make modules_install

sudo make install

这两个命令执行起来比编译快多了,不过这里有个坑让我在找老师检查的时候差点挂掉,立个flag等下说。

最后一步,修改引导菜单配置,编辑启动项的菜单选项。这步自己开始比较晕,不知道怎么找boot/grub/grub.cfg,后来找到了方法:

可以sudo gedit /boot/grub/grub.cfg,menu entry“”里面修改添加了自己的学号,此处应该注意是改的是菜单还是子菜单,不然可能找不到。

Ending,开始重启,虚拟机之后我是开机长按Esc,才能进启动项。

最后问题出在给老师检查的时候,因为第一次做根本没怎么思考,老师直接问我装好的linux内核模块在哪,直接懵逼了。只知道解压好的文件在根目录啊,内核模块是什么啊。后来知道原来内核模块是在/boot下的两个.img文件。感谢老师,是自己学东西只浮于表面了,以后还是要多多思考多多总结呀~

时间: 2024-12-10 15:18:15

3.23linux内核编译学习的相关文章

内核编译安装学习笔记

前提:查看本地硬件信息常用工具 查看CPU信息: #cat /proc/cpuinfo #x86info #lscpu 查看PCI: #lspci 查看USB: #lsusb 查看块设备: #lsblk 查看综合的设备详细信息: #hal-device 编译:交叉编译 cross-compiling用于在宿主机上编译,应用于别的机器上架构迥异的内核. 编译内核的步骤:(安装好开发环境:Development Tools,Server Platform Development,ncurses-de

【Linux学习】Ubuntu下内核编译(一)

(1)当要执行内核配置时,输入make menuconfig时出现错误 遇到这个问题,主要是以为没有ncurses库,而make menconfig 需要这个库,因此需要安装ncurses或者ncurses-devel即可.输入命令:sudo  apt-get  install ncurses或者sudo apt-get  install ncurses-devel. (2)错误 drivers/input/touchscreen/eeti_ts.c: In function 'eeti_ts_

linux学习之路之模块管理和内核编译

我们知道linux内核再启动过程中,主要完成以下几种功能: 1.侦测硬件信息 2.驱动初始化(可能借助intrd文件加载硬件模块) 3.以只读方式挂载根文件系统 4.转载第一支程序init 如果我们的kernel识别不了某些硬件或者实现不了某些功能的话,那么只能将某些功能代码添加在内核当中,或者将这些功能代码做成模块的形式,kernel需要哪些模块就直接调用这些模块即可.通过这两种功能就可以实现相应的功能. 而不同的实现机制和kernel设计有关. kernel设计分为2种: 一种是单内核:这种

linux内核编译与开发

一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高, 这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了 充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法: ·系统调用 ·硬件中断 linux kernel 体系结构: 虚拟文件系统VFS: VFS(虚拟文件系统)隐藏各种文件系统的具体细节,

谢烟客---------Linux之内核编译及LFS制作

内核组成.内核优化.内核编译步骤:开发环境.硬件信息.展开到源码树.内存特性设定.编译 屏幕:在一个终端上,为多个进程,开启多个使用接口. 何谓交叉编译:目标代码非当前平台 有10天没有学习了,去做了LFS,当然得感谢我"瑞哥",学习Linux的导师,www.mykernel.cn , 要不是他告诉我说,选对发行版本和LFS手册很关键,否则很难一次成功的. 前3天就是不懂,好不容易编译到gcc,呀!失败了,..... 心得:体验就够了,没有必要花时间在LFS制作之上,完全浪费时间. 1

Linux内核编译完整过程

Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过程中的一些实际经验. 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可

Linux内核编译详解

学习了网上的一些资料,自己试着摸索了一下,整理出这篇文章. 不当之处,还请大家批评指正.谢谢. 重要的参考资料有: http://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-host http://blog.csdn.net/xdw1985829/article/details/6833319 好了,下面进入正题. 一.准备工作 准备工作如何做,这里就不详说了.

linux内核数据结构学习总结(undone)

本文旨在整理内核和应用层分别涉及到的数据结构,从基础数据结构的角度来为内核研究作准备,会在今后的研究中不断补充 目录 1. 进程相关数据结构 1) struct task_struct 2. 内核中的队列/链表对象 3. 内核模块相关数据结构 2) struct module 1. 进程相关数据结构 0x1: task_struct 我们知道,在windows中使用PCB(进程控制块)来对进程的运行状态进行描述,对应的,在linux中使用task_struct结构体存储相关的进程信息,task_

Linux内核编译步骤

编译之前,一定要查看,内核源码中,Documentation/Changes文件,查看内核编译时,需要的运行环境,如果不适合编译和有可能失败. 由于2.4和2.6内核的编译方法不是完全一样,所以我们分开两种情况讨论 编译2.4内核:                                                         编译2.6内核 第一步:make mrproper -清理内核源代码树(清理垃圾信息)             make mrproper 第二步:mak