热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内核的编译

文章标题:内核的编译。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  1. 要怎麽进行核心的配置?
  
  1.1. 取得原始程序码
  
  你可以经由 ftp 从 ftp.funet.fi 或是 mirror in /pub/OS/Linux/PEOPLE/Linus 取
  得原始程序码。也可以到这个节点的 mirror 或其他节点去拿。档案名称一般是以标记
  成 linux-x.x.x.tar.gz 为代表,其中的 x.x.x 是版本编号。较新的(更好的?)版
  本以及修补档一般是放在类似”v1.1 ”以及”v1.2”这样的子目录下。
  
  强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去!底下是一些
  mirrors 以及其他节点的简要列表
  
  ( ftp.funet.fi 的 mirror 节点:)
  Germany: ftp.Germany.EU.net
  UK: doc.ic.ac.uk
  Australia: kirk.bu.oz.au
  
  ( 其它有摆放核心档案的节点:)
  USA: tsx-11.mit.edu
  USA: sunsite.unc.edu
  Germany: ftp.dfv.rwth-aachen.de
  
  如果你没有办法上 ftp ,有个存放 linux 的 BBS 系统列表会定期刊登在
  comp.os.linux.announce 上,试著到那边去找点帮助。
  
  1.2. 解开原始程序码的包装
  
  确定你是以″ root ″的身份签入,然後 cd 到 /usr/src 。如果你的 linux 是从其
  它任何可能的地方取得的,在这个目录底下应该已经存在一个叫做” linux ”的子目
  录。这是旧版的 linux 原始程序码。如果你还有磁碟空间而且想要玩得安全一点,那
  麽你会想要保留这个子目录的。有个好主意是根据你目前使用的核心版本来修改这个子
  目录的名称。″ uname -r ″这个指令将会告诉你新的版本。
  
  所以,如果″ uname -r ″显示″ 1.1.47,″你就可以把″ linux ″改名为
  ″ Linux-1.1.47 。″如果你是个鲁莽型的人,那就直接把这个子目录清除掉。无论是
  哪一种情况,反正只要确定在解开全部的原始程序码之前, /usr/src 目录下没有
  ”linux ”这个子目录就对了。
  
  在 /usr/src 目录下,用″zcat linux.x.x.tar.gz | tar xvf- ″来解开原始程序码
  的包装(你也可以用更简单的″ tar zxvf linux.x.x.x.tar.gz″;如果你拿到的是
  ..tar 的档案(後面没有加上 gz ),那就用” tar xvf linux.x.x.x.tar ”)。你
  将会看到原始程序的内容飞逝而过。当它完成以後,将会出现一个新的″ linux ”子
  目录。
  
  ″ cd ″到 linux 目录下然後查看 README 档,里面应该会有一段标题为
  ″INSTALLING the kernel″ 或类似的文字。如果适当的话,先执行说明里的指示 —
  建立该有的符号链结,移除过时的 .o 档案等等等诸如此类的工作。
  
  1.3. 配置核心
  
  注意:这部份内容有些是重覆 Linus 的 README 档案中的相应章节或加以修订。
  
  在 /usr/src/linux 下执行″ make config ″ 这个命令将会启始一个指令稿,而这个
  指令稿会问你各种问题。它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或
  $BASH 。
  
  你现在该准备好回答这些问题,通常用″ y ″或″ n ″就可以了。有一些很明显或是
  不重要的选项将不会在此加以说明。
  
  1.3.1. Kernel math emulation (核心的浮点运算模拟)
  
  如果你没有数学辅助运算处理机(ie,你只有一台单纯的 386 或 486SX ),那麽你在
  这里要回答″ y ″。如果你已经有数学辅助运算处理机却还回答″ y ″,那也不必太
  担心 — linux 还是会去使用它而忽略掉核心的模拟程序。唯一的影响是编译出来的核
  心变大了。
  
  1.3.2. Normal harddisk support (标准硬碟支援)
  
  你在这里差不多都得回答″ y ″。它代表的意思是核心将会支援标准的 PC 磁碟,例
  如大多数人使用的 IDE 界面硬碟。这不包括 SCSI 设备的支援。
  
  1.3.3. Networking support (网络支援)
  
  如果你有连接网络,譬如说,你与 internet 有连线,或是你将使用 SLIP,PPP,term
  或其它方式拨接到 internet 上的话,回答″ y 。″
  
  1.3.4. Limit memory to low 16MB (限制记忆体在 16 MB)
  
  如果你的记忆体不到 16 MB,几乎一定要回答″ y ″;那麽当你使用这个核心的时候
  将会节省一点记忆体。但是,当然罗,如果你有 16 MB 以上的记忆体而不回答″ n ″
  的话,这个新的核心将只使用其中的 16 MB ,即使你有 34 billion megs 也一样。
  
  也可能会有一些不良的 386 DMA controllers(或是一些与硬件有关的东西)无法正确
  地定址到 16 megs 以上的记忆体位址;你的机器刚好有这种情况时(罕见),那麽你
  也就只好回答″ y ″了。
  
  1.3.5. Use -m486 flag for 486-specific optimizations
  (使用 -m486 旗标指定对 486 做最佳化)
  
  这将会为核心做 486 最佳化处理。新的核心将会变得稍微大一些,如果你担心的话的
  话,其实它还是可以在 386 上执行。只是会比较慢,不过你感觉不出来的。
  
  1.3.6. SCSI support (SCSI 的支援)
  
  如果你有 SCSI 设备,那麽就回答” y 。”接著会有提示要求更进一步的资讯,像是
  你是否要支援光碟机,磁碟机,还有你使用的是那一种 SCSI 介面卡。这部份请参阅
  SCSI-HOWTO ,有更详细的说明。
  
  1.3.7. Network device support (网络设备支援)
  
  如果你有以太网络卡,或者你想要使用 SLIP,PPP,或是并列埠界面卡,那就回答
  ″ y ″,接著会有提示问你使用的是那一种网络卡,或要使用那一种串列通讯协定。
  
  1.3.8. Filesystems (文件系统)
  
  这将会有提示要你回答所要支援的文件系统种类,计有:
  
  Standard( minix )— 新的套件不再建立 minix 文件系统,而且很多人不使用它,
  但是把它配置在核心里仍然是个好主意。某些″ rescue-disk ″ 程序会用到它,而且
  仍然有许多磁片可能用 minix 文件系统,因为 minix 文件系统对於处理磁片方面是最
  好的。
  
  Extended fs — 这是扩充文件系统的第一版,现在已经不再使用。使用的时机是,如
  果你有需要,你就会知道的。
  
  Second extented — 这是现在新发行的套件所广泛采用的文件系统,你可能会有其中
  一种。
  
  xiafs filesystem — 这个文件系统曾经一度很普遍,但是在写这份文件时,我已经不
  知道有任何人在使用它了。
  
  msdos — 嗯,你猜对了;如果你想要在 linux 下使用你硬碟中的 MS-DOS 分割区,或
  是想将用 MS-DOS 格式化的磁片挂进来的话,回答″ y ″。
  
  ums-dos — 这是一个相当 slick 的文件系统,它能使 MS-DOS 文件系统拥有更多的特
  性,像是长档名等等。这对那些不使用 MS-DOS 的人(像我)并不是很有用。
  
  /proc — 这是最 slick 的文件系统之一(我猜这个概念是无耻地从贝尔实验室里偷过
  来的)。它不是你硬碟分割区里的任何东西,而是核心与程序之间的文件系统介面。许
  多程序工具(像″ ps ″)都会用到它。
  
  如果你已经将它安装好了,有空不妨试试看″ cat /proc/meminfo ″或者是
  ″ cat /proc/devices ″。有些 shells ,像是 rc ,会用 /proc/self/fd(在其它
  系统上为 /dev/fd )来处理输出入。几乎可以确定你在这里得要回答″ y ″,有许多
  重要的 Linux 标准工具是靠它来运作的。
  
  NFS — 如果你在网络环境下而且想要分享档案,回答″ y 。″
  
  ISO9660 — 绝大部分的光碟都使用这个文件系统。
  
  OS/2 HPFS — 在编写这份文件的时候,这个文件系统还只支援到 OS/2 HPFS 的读取。
  
  System V and Coherent — 这是为 System V 以及 Coherent 的分割区而设的。
  
  1.3.8.1. 但是我不知道我需要那些文件系统!
  
  好吧,键入″ mount 。″它看起来会像这样:
  
  blah% mount
  /dev/hda1 on / type ext2 (defaults)
  /dev/hda3 on /usr type ext2 (defaults)
  none on /proc type proc (defaults)
  /dev/fd0 on /mnt type msdos (defaults)
  
  仔细看看每一行;在” type ”後面的那个字就是文件系统的格式。在这个例子中,我
  的 / 和 /usr 分割区是 second extended 格式,我有使用 /proc ,而且挂有一张以
  msdos (bleah) 为文件系统格式的磁片。
  
  如果你有使用 /proc ,可以试试″ cat /proc/filesystems ″。它会给你一份目前使
  用的核心所支援的文件系统列表。
  
  1.3.9. Character devices (字元设备)
  
  在这里,你将会发现许多设备名称,用来设定你的印表机,汇流排滑鼠,PS/2 滑鼠(
  大部分笔记型电脑使用内建的 PS/2 滑鼠),以及一些磁带机驱动程序,selection 。
  当有合适的选项时,回答” y ”。
  
  注意:” Selection ”让你能够执行一个程序,这个程序使你可以在 X-windows 之外
  使用滑鼠在各个虚拟控制台间做剪贴的动作。如果你有串列滑鼠的话,这真的很棒,因
  为它与 X-windows 之间的沟通良好,然而在编写这份文件的时候,它跟 PS/2 滑鼠还
  是处不来(它会锁住滑鼠
推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
author-avatar
明月思含含
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有