精华内容
下载资源
问答
  • linux内核编译步骤
    千次阅读
    2021-05-13 00:47:31

    linux内核编译步骤

    对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,我通过在网上收集这方面的资料,最终编译成功.现在我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手有一些

    帮助。

    1、  准备工作

    (1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。

    (2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。

    (3) A:下载并解压linux内核,建议从http://www.kernel.org/pub/linux/kernel/ 下载内核,因为安装系统时所安装的源代码默认情况下支持很多设备,这样给内核裁减增加了难度。以下假设你已经下载了内核的为linux-x-y-z.tar.gz。一般都将linux内核源代码放在/usr/src下,这里仍然遵守这个习惯,如果你的这个路径下已经存在这个版本的内核,建议将已有的改个名称。

    B:如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号), 比如RedHat linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm -ivh kernel-source-2.xx.xx.rpm安装内核

    2、清除从前编译内核时残留的.o 文件和不必要的关联

    cd /usr/src/linux

    make mrproper

    确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作

    3、配置内核,修改相关参数,请参考其他资料

    在图形界面下,make xconfig;字符界面下,make menuconfig

    在内核配置菜单中正确设置个内核选项,保存退出

    4、正确设置关联文件

    make dep

    根据上一步所选择的选项,建立文件的依赖关系。

    5、make clean

    清理一些不必要的文件,如果你在上次编译的基础上,删去了一些选项,建议你执行这一步操作,否则,就没有必要了。

    6、编译内核

    对于大内核(比如需要SCSI支持),make bzImage

    对于小内核,make zImage

    7、编译模块

    make modules

    编译可加载模块(即内核选项中选择为M的选项),编译时间跟M选项的数量有关。

    8、安装模块

    make modules_install

    即将编译好的modules拷贝到/lib/modules下,这就是为什么在“准备工作”的第三步提醒你备份的原因了。

    9、使用新内核

    方法一:

    (1)更换内核:A、mv /usr/src/linuxX.X.X/system.map    /boot/system.map

    B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage   /boot/vmlinuz

    (2)然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。格式如下:

    boot=/dev/hda

    map=/boot/map

    install=/boot/boot.b

    prompt

    timeout=50

    linear

    default=linux-new    ### 告诉lilo缺省使用新内核启动linux ###

    append="mem=256M"

    p_w_picpath=/boot/vmlinuz-2.2.14-5.0

    label=linux

    read-only

    root=/dev/hda5

    p_w_picpath=/boot/bzImage(zImage)

    label=linux-new

    read-only

    root=/dev/hda5

    保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。

    保存退出后,不要忘记了最重要的一步,运行/sbin/lilo,使修改生效

    方法二:使用GRUB(修改grub.conf文件)

    (1)更换内核:A、mv /usr/src/linuxX.X.X/system.map    /boot/system.map

    B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage   /boot/vmlinuz

    (2)修改引导管理程序Grub,/etc/grub.conf

    内容如下:

    #boot =/dev/had

    default =0

    timeout =10

    splashp_w_picpath =(hd0, 0)/grub/splash.xpm.gz

    title Red Hat Linux(2.4.20-8)

    root(hd0, 0)

    kernel /vmlinuz -2.4.20-8  ro root =LABEL =/

    initrd /initrd-2.4.20-8.img

    方法三:修改启动配置文件

    现在大多数使用的都是grub启动,需要修改/boot/grub/grub.conf,添加相应的启动信息,添加内容的最简单格式如下:

    title 显示在启动菜单上的名称

    root 根文件系统挂载分区

    kernel 压缩过的内核文件名

    initrd 根文件系统文件名

    如:

    title My new kernel

    root (hd0,2)

    kernel /boot/vmlinuz-x.y.z

    initrd /boot/initrd-x.y.z.img

    10、重新生成ram磁盘

    如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过

    如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd,

    使用mkinitrd initrd-内核版本号 内核版本号命令重新生成ram磁盘文件,例如我的Redhat 6.2:

    mkinitrd initrd-2.2.14-5.0 2.2.14-5.0

    之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:

    initrd=/boot/initrd-2.2.14-5.0

    ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件

    11、重新启动,OK!

    更多相关内容
  • linux内核编译.config文件,编译出的内核很小,用于内核调试,内核版本4.19.23
  • 本文详细介绍了VMware环境下Linux内核编译过程。
  • ARM-Linux内核编译流程

    2016-10-16 14:56:47
    适合arm-linux内核编译, 包含u-boot,kernel,rootfs
  • linux内核编译.pdf

    2021-09-27 13:02:36
    linux内核编译.pdf
  • Linux内核编译配置选项详解,可以帮助您了解内核配置。
  • Linux内核编译

    万次阅读 多人点赞 2018-09-03 15:38:41
    下面简单介绍一下Linux内核编译过程。(附注:本博客所讲的内容是在Ubuntu上进行操作的,Cent OS并未验证) 1、下载内核源码,可以到kernel.org上进行下载。 2、解压内核源文件(注意:要先使用cd命令进入压缩包...

    下面简单介绍一下Linux内核编译过程。(附注:本博客所讲的内容是在Ubuntu上进行操作的,Cent OS并未验证)

    1、下载内核源码,可以到kernel.org上进行下载。

    2、解压内核源文件(注意:要先使用cd命令进入压缩包所在目录),可以使用如下命令:

    tar -xvf  压缩包名称

    3、进入解压后的文件夹:

    如下图:

    4、配置内核:

    使用 make menuconfig 命令

    menuconfig是基于ncurse库编制的图形工具界面,截图如下:

    进入到该图形界面后,进行内核配置。配置时,大部分都是使用其默认选项,小部分才根据需要进行选择。

    其中,每一个配置选项有三种选择,它们的含义如下:

    <*>或[*]:表示将该功能编译进内核

    [ ]:表示不将该功能编译进内核

    [M]:表示将该功能编译成在需要时动态插入到内核的代码

    用户根据需要进行配置。

    注意:

    (1)如果在这一步中,输入make menuconfig命令时出现了下面的错误:

        

        说明你没有进入内核解压后的文件夹中。

     (2)如果在这一步中,输入make menuconfig命令时缺少相应的文件,可以使用如下命令进行解决:

    apt-get install libncurses5-dev libncursesw5-dev

    5、使用如下命令,进行编译:

    sudo make -j4
    sudo make modules_install
    sudo make install 
    reboot

    其中,j4表示分成4个任务运行,以加快速度,建议使用机器的所有CPU核来进行编译以加快速度,为此可以使用指令“make -j `getconf _NPROCESSORS_ONLN`”。

    如果在这一步骤出现了错误:“openssl/opensslv.h: No such file or directory”

    则说明系统缺乏OpenSSL开发包,执行如下指令:

    sudo apt-get install libssl-dev

    5、如果重启系统后,出现了选择内核的界面,说明内核编译成功。

    如果重启后直接开机,没有出现选择内核的页面,则在进入系统后,执行下面的命令:

    vi /etc/default/grub

    然后将GRUB_HIDDEN_TIMEOUT=0使用#注释掉,如下图:

    之后执行如下指令,然后重启机器就好了。

    sudo update-grub

    当然,你如果想将你刚才编译的内核版本作为系统默认启动的版本的话,可以使用如下方法:

    (1)如果你的系统中存在多个内核的话,可以在启动界面高级选项中看到内核版本,如下图:

    (2)现在系统默认的启动版本为Linux 4.15.0.39-generic(也就是前面有“*”的那个),如果你想将Linux 3.14.69作为默认启动内核版本的话,只需要修改/etc/default/grub文件中的GRUB_DEFAULT选项(该选项默认值是GRUB_DEFAULT=0),如下图:

    其中“1>3”中的“1”表示前一个选项,“3”表示你想默认启动的内核版本的顺序,如(1)中的图,linux 3.14.69的顺序是3(从0开始编号),然后再使用 sudo update-grub指令更新grub文件,最后重启机器就会3.14.69作为默认启动的内核版本了。

    展开全文
  • Linux内核编译与升级

    千次阅读 2022-04-03 17:02:20
    linux 内核编译与升级

    介绍

    对于学习linux内核的入门,首先要的是如何编译内核并且将内核替换成自己编译的,进行调试打印等操作。下面主要介绍linux内核的编译全过程。
    下载 www.kernel.org 对应的内核版本;用的是Ubuntu LTS 16.04,虚拟机采用VMWare workstation 11。
    查看内核版本 uname -a

    编译流程

    第一步: 下载的内核源码: linux-4.9.309.tar.xz

    第二步:解压安装包
    xz -d linux-4.9.309.tar.xz 得到tar包
    tar -xvf linux-4.9.309.tar得到目录
    在这里插入图片描述
    第三步:安装需要的软件包
    apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

    第四步:配置内核代码
    a:进入源代码目录 cd linux-4.9.309目录
    b: 从当前机器启动目录拷贝配置信息到源代码目录。这边操作与当前环境一致的配置:
    cp -v /boot/config-$(uname -r) .config

    在这里插入图片描述
    3 命令启动配置界面
    make menuconfig
    在这里插入图片描述
    可以配置相关的模块参数,如果对于不熟悉的情况,可以直接采用默认的形式

    4 编译内核
    make -j 4
    编译采用多核 4就是4核
    在这里插入图片描述
    5 安装模块
    make modules_install 安装对应的模块

    6 安装内核
    make install 安装的最新版本直接替换

    7 重启,验证版本
    uname -mrs

    总结

    编译的过程中出现了安装编译成功,出现只要一重启就无法打开最新的版本内核出现加载login service。可能是由于vmware workstation 版本过低,虚拟化不支持新的内核版本

    展开全文
  • linux内核编译原理

    2011-08-15 11:26:29
    linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核...
  • 嵌入式Linux内核编译

    千次阅读 2019-04-10 11:16:49
    实验环境 VMware Workstation Player Ubuntu16.04 s5p4418-kitkat.tar.bz2.aa 、 s5p4418-kitkat.tar.bz2.ab、android-patch.tgz、arm-2009q3.tar.bz2系统源码...Linux内核配置与编译 将系统源码(s5p4418-kitka...

    实验环境

    • VMware Workstation Player
    • Ubuntu16.04
    • s5p4418-kitkat.tar.bz2.aas5p4418-kitkat.tar.bz2.abandroid-patch.tgzarm-2009q3.tar.bz2系统源码压缩包

    【注意】虚拟机安装分配硬盘内存应当50G以上。

    Linux内核配置与编译

    • 将系统源码(s5p4418-kitkat.tar.bz2.aas5p4418-kitkat.tar.bz2.abandroid-patch.tgzarm-2009q3.tar.bz2)上传到虚拟机/tmp目录下
      在这里插入图片描述
    • 创建文件夹/usr/local/src/s4418,并设置其权限为777
      在这里插入图片描述
    • 解压目标文件
    $ cd /usr/local/src/s4418
    $ cat /tmp/s5p4418-kitkat.tar.bz2.a* |tar jxv
    $ tar jxvf /tmp/android-patch.tgz
    $ tar zxvf /tmp/arm-2009q3.tar.bz2
    

    解压成功之后/usr/local/src/s4418目录如下:
    在这里插入图片描述

    • 进入s5p4418-kitkat文件夹下,开始编译u-boot
    $ cd /usr/local/src/s4418/s5p4418-kitkat
    $ ./mk -u
    

    等待一段时间,成功编译之后,即可在/usr/local/src/s4418/s5p4418-kitkat/out/release目录下生成镜像文件ubootpak.bin
    在这里插入图片描述

    • 开始进行内核配置,拷贝drivertest
      将提供的drivertest拷贝到/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers文件夹内
      在这里插入图片描述

    • 修改drivers/Kconfig
      修改/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers/Kconfig文件,添加以下内容:

      > source “drivers/drivertest/Kconfig”
      

      在这里插入图片描述

    • 修改kernel/drivers/Makefile文件
      修改/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers/Makefile文件,添加以下内容:

      > Obj-$(CONFIG_DRIVER_VMALLOC)  += drivertest/
      

      在这里插入图片描述

    • 在kernel目录下使用make menuconfig重新配置内核,其中包括重载我们编写的新设备myalloc,具体设置分支时:Device drivers – > DRIVER KMALLOC support,选择添加myalloc设备。在选择DRIVER KMALLOC support后,按空格键使得<*>出现,表示选择该驱动。
      Device drivers目录如下:
      在这里插入图片描述
      Device drivers目录,选择DERIVER KMALLOC support展开后如下图所示,按空格键,使<*>出现:
      在这里插入图片描述

    • 编译Linux内核
      首先进入到kernel文件夹下,执行以下命令:

      $ export PATH=../uboot/tools:$PATH
      $ cp arch/arm/configs/x4418_defconfig  .config
      

      然后使用以下命令进行编译:

      $ make uImage ARCH=arm CROSS_COMPILE=../prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-
      

      在这里插入图片描述
      编译成功后,会在在/usr/local/src/s4418/kernel/arch/arm/boot/目录下看到编译生成的镜像文件 uImage在这里插入图片描述

    可能遇到的问题

    如果提示make menuconfig命令找不到,可以使用以下命令安装

    $ sudo apt-get install libncurses5
    $ sudo apt-get install libncurses5-dev
    
    展开全文
  • linux内核编译文档

    2014-08-30 11:27:30
    编译内核相对学习linux系统的初学者有一定的困难,本文从实用的角度介绍编译的方法。
  • 实验一:Linux内核编译及添加系统调用 一、实验目的 理解Linux系统处理系统调用的流程 增加一个系统调用 二、实验内容 nice,可以理解为谦让度,CPU在选择进程时根据优先级prio选择,当nice值越高,可理解为这个...
  • 起初在CentOS7上编译安装5.13和4.14的内核都不行,也不知道是哪里出了问题,查了一下说似乎是GCC版本与内核版本不兼容,然后赶紧太麻烦了,遂放弃。 然后装了一个Ubuntu18.04,可以make menuconfig了,但是手贱不...
  • x86_64(AMD64)平台的内核编译,所以这个是必选项64编译位内核.本文仅讲述General setup 常规设置 Cross-compiler tool prefix CONFIG_CROSS_COMPILE .进行编译相当于使用make 剃协当佃偍?牡?楬畮?交叉编译工具前缀
  • Linux内核编译中build目录设置

    千次阅读 2021-05-09 00:04:21
    在对内核进行定制的时候,看到了一个在进行内核编译时挺有用的特性,之前(作为野生程序员的我)一直没有发现。该特性就是将源码与编译工作目录分离。其实在很多软件源码编译时都用到了该特性。这个特性好处是,一方面...
  • 实验四Linux内核编译阅读Linux内核b源码b.doc
  • Zynq 7000 Linux内核编译方法,很实用的教程,适合快速上手
  • linux内核编译及添加系统调用(详细版)

    千次阅读 多人点赞 2020-03-16 20:00:46
    linux内核编译及添加系统调用 注:文章共四部分,分别是 1、编译更换内核 2、添加一个简单系统系统调用 3、添加读取/修改nice值的系统调用 4、自己设计简单(真的简单)系统调用 注:四个部分结构相似,请根据自身...
  • 其实,通常其它操作系统的内核编译是比较繁琐的。然而,由于Debian强大的dpkg软件包管理系统,使得内核的升级、编译也变得容易很多。如果下面的步骤都注意并执行了,编译内核不是很复杂的事情,我在基于debian的...
  • linux-内核编译各个选项的含义,详细说明了linux Kernel菜单中的各种配置含义
  • Linux内核编译提示内存不足解决办法

    千次阅读 2020-05-10 11:03:21
    1.先关闭虚拟机,扩展硬盘50G以上 2.开启虚拟机,进入root 3.执行fdisk –l,查看磁盘信息。当看到第一行Disk /dev/sda: 与实际df -h显示内容不符时,说明增加磁盘成功了 4.使用fdisk /dev/sda, 创建新分区 ...
  • linux内核编译以及烧写

    千次阅读 2019-06-14 07:03:23
    先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,...linux内核包...
  • Linux内核编译实验

    2013-08-09 19:48:45
    Linux内核编译实验
  • linux内核编译步骤(新手)(转)

    千次阅读 2019-04-13 15:03:08
    linux内核编译步骤(新手)(转) 对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,现在我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手有一些帮助。 1、安装内核 如果内核已经安装...
  • linux内核编译过程的最终总结版

    万次阅读 多人点赞 2018-09-15 19:01:28
    学习重新编译Linux内核,理解、掌握Linux内核和发行版本的区别。 二、实验内容 在Linux操作系统环境下重新编译内核。实验主要内容: A.查找并且下载一份内核源代码,本实验使用最新的Linux内核2.6.36。 B.配置...
  • 用于提交操作系统小实验,PDF版,可以结合笔者的csdn中的linux内核编译一起看,事半功倍,半天搞定Linux内核编译小实验。
  • Linux内核编译与裁剪

    2017-04-05 10:20:13
    Linux内核编译 裁剪
  • Linux内核编译(Menuconfig图形化方式)、制作文件系统的步骤 Linux内核配置原理 Menuconfig主要功能选项介绍 编译配置内核步骤 制作文件系统步骤 文件系统和根文件系统区别联系 Linux内核配置原理 Linux内核的配置...
  • 树莓派Linux内核编译

    千次阅读 2018-10-30 17:29:31
    1、获取编译所需源码1)下载地址: ... 上面列出了树莓派所有的... linux:内核源码,可以在branches下进行版本的选择。 tools:编译内核和其他源码所需的工具——交叉编译器等。 以上三个文件最为重要,下面的工程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 278,497
精华内容 111,398
关键字:

linux内核编译

友情链接: AAC2M1p4.rar