你的内核是怎么配置的
A. 在Ubuntu上做内核编程,要安装哪个包怎么做
1、gcc (C编译器)
安装 apt-get install gcc
2、make (源代码维护工具,它能自动检测出需要重新编译的源文件并根据你设定的编译规则去重新编译程序)
安装 apt-get install make
3.kernel-source (内核源码包。你可以apt-cache search kernel-source搜索到内核源代码包,并用uname -r命令查看到当前系统内核版本,然后用apt-get install kernel-source-xxxx来安装和你内核版本一致的内核源代码包)
如果你不想重新编译内核,内核源代码包kernel-source是完全可以不下载的。
4.kernel-headers(内核源代码头文件包,不管你是要进行内核模块开发还是进行驱动程序开发,这个包都是必须 要安装的。因为作为一个内核模块编写者,通常会调用内核里的一些东西,比如内核头文件,内核数据结构申明等。它里面包含了一些关键的内核头文件)
安装 apt-cache search kernel-headers
uname -r
apt-get instakk kernel-headers-xxxx
5.kernel-kbuild(用来编译内核模块的,下载安装这个包后会发现在/usr/src目录下多了一个kernel-kbuild-xxxx开头的目录,下面只有scripts一个目录,这是用来编译内核模块的一些脚本程序)
安装 apt-cache search kernel-kbuild
uname -r
apt-get install kernel-kbuild-xxxx
6.build-essential(包含一个在建立deb包过程中起关键作用的包的信息列表,如果你不想建立deb包你就不需要安装此表)
安装 apt-get install build-essential
7.kernel-package(如果你想把内核镜像做成一个deb包来用,那么必须用安装这个包了)
安装 apt-get install kernel-package
8.initrd-tools(如果你想制作启动过程的initrd镜像,则这个包是必不可少的)
安装 apt-get instakk initrd-tools
假设你编写了一个内核模块程序,源代码如下:
/* hello.c */
#include <linux/init.h>
#include <linux/mole.h>
#include <linux/kernel.h>
static int hello_init(void)
{
printk(KERN_ALERT "Hello, linux kernel mole
");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, I've created a linux kernel mole sucessfully
");
}
mole_init(hello_init);
mole_exit(hello_exit);
MODULE_LICENSE("GPL");
你需要这此源程序编写一个makefile,内容如下:
#Makefile for hello.c file
#
KERNEL_DIR:=/usr/src/linux
obj-m:=hello.o
default:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) moles
clean:
$(RM) .*.cmd *.mod.c *.o *.ko -r .tmp
注意:这里的KERNEL_DIR是指内核源代码头文件所在目录的上一级目录,通常就是指内核源代码目录。该目录一般包括有arch,drivers,fs,include,init,ipc,kernel,lib,mm,net,scripts,usr,sound,security等目录。
在本示例中,/usr/src/linux是一个链接,指向了/usr/src/kernel-headers-2.6.8-3目录。
编写好makefile后就可以输入make命令生成hello.ko内核模块了,然后你可以用:
insmode hello.ko
命令来加入内核模块,然后用:
rmmod hello
来删除内核模块。
B. 系统配置的配置文件
内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。
除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:
访问文件
/etc/host.conf 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改。)
/etc/hosts 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。
/etc/hosts.allow 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。
/etc/hosts.deny 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。
引导和登录/注销
/etc/issue & /etc/issue.net 这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串。 它们包括几行声明 Red Hat 版本号、名称和内核ID 的信息。它们由 rc.local 使用。
/etc/redhat-release 包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。
/etc/rc.d/rc 通常在所有运行级别运行,级别作为参数传送。 例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令:init 5。运行级别 5 表示以图形模式引导系统。
/etc/rc.d/rc.local 非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。
/etc/rc.d/rc.sysinit 通常是所有运行级别的第一个脚本。
/etc/rc.d/rc/rcX.d 从 rc 运行的脚本(X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。 当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,系统启动时通常会在引导消息之后显示“entering run-level 3”的消息;这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。
文件系统
内核提供了一个接口,用来显示一些它的数据结构,这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的,称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。例如,/proc/moles 文件列举系统中当前加载的模块。lsmod 命令读取此信息,然后将其以人们可以看懂的格式显示出来。 下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。
/etc/mtab 这将随着 /proc/mount 文件的改变而不断改变。换句话说,文件系统被安装和卸载时,改变会立即反映到此文件中。
/etc/fstab 列举计算机当前“可以安装”的文件系统。 这非常重要,因为计算机引导时将运行 mount -a 命令,该命令负责安装 fstab 的倒数第二列中带有“1”标记的每一个文件系统。
/etc/mtools.conf DOS 类型的文件系统上所有操作(创建目录、复制、格式化等等)的配置。
系统管理
/etc/group 包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务,可以存在于多个组中。例如,如果一个“用户”是“project 1”工程组的成员,同时也是管理员,那么在 group 文件中他的条目看起来就会是这样的:user: * : group-id : project1
/etc/nologin 如果有 /etc/nologin 文件存在,login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。
etc/passwd 请参阅“man passwd”。它包含一些用户帐号信息,包括密码(如果未被 shadow程序加密过)。
/etc/rpmrc rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置,这样,当任何 rpm 命令在该系统中运行时,所有的选项都会全局适用。
/etc/securetty 包含设备名称,由 tty 行组成(每行一个名称,不包括前面的 /dev/),root 用户在这里被允许登录。
/etc/usertty
/etc/shadow 包含加密后的用户帐号密码信息,还可以包括密码时效信息。
/etc/shells 包含系统可用的可能的“shell”的列表。
/etc/motd 每日消息;在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。
初学者在使用电脑过程中,肯定会碰到各种各样的问题:如怎么管理电脑的自启动程序、如何查看加载的系统服务、怎样从安装光盘提取丢失的系统文件等。为了解决类似问题,微软在系统中提供了一个实用工具——系统配置实用程序(Msconfig)。
以系统管理员身份登录系统后,单击“开始→运行”输入“Msconfig”回车后即可启动系统配置实用程序
下面就结合几个应用实例来详细介绍Msconfig的使用(以WinXP为例)。
“一般”选项不一般
默认情况下,Windows采用的是正常启动模式(即加载所有驱动和系统服务),但是有时候由于设备驱动程序遭到破坏或服务故障,常常会导致启动出现一些问题,这时可以利用Msconfig的其它启动模式来解决问题。单击 “一般”选项,在“启动模式”选择“诊断启动”,这种启动模式有助于我们快速找到启动故障原因。此外,还可以选择“有选择的启动模式”,按提示勾选需要启动的项目即可。
小提示:诊断启动是指系统启动时仅加载基本设备驱动程序如显卡驱动,而不加载Modem、网卡等设备,服务也仅是系统必须的一些服务。这时系统是最干净的,如果启动没有问题,可以依次加载设备和服务来判断问题出在哪里。
虽然WinXP具备强大的文件保护功能,不过有时候由于安装/卸载软件或误操作,还是经常会造成系统文件的丢失。一般重要的系统文件,在系统安装光盘CAB文件中都可以找到。单击上图的“展开文件”,然后在弹出窗口中依次输入要还原的文件(填入丢失文件名)、还原自(单击“浏览自”,选择安装光盘的CAB压缩文件)、保存文件到(选择保存文件路径,WinXP/2000一般为c:windowssystem32,Win98则为c:windowssystem),最后单击“展开”,系统会自动解压CAB文件,将系统文件从安装光盘提取到电脑。
可以先用系统的SFC命令来扫描系统文件的改动,找出变化的系统文件,命令格式:SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x]
/SCANNOW:立即扫描所有受保护的系统文件。
/SCANONCE:下次启动时扫描所有受保护的系统文件。
/SCANBOOT:每次启动时扫描所有受保护的系统文件。
/REVERT:将扫描返回到默认设置。
/PURGECACHE:清除文件缓存。
/CACHESIZE=x:设置文件缓存大小。
在电脑应用中经常会看到“权限”这个词,特别是Windows 2000/XP被越来越多的朋友装进电脑后,常常会有读者问,什么是权限呢?它到底有什么用?下面我们将用几个典型实例为大家讲解windows中的权限应用,让你不仅可以在不安装任何软件的情况下,限制别人访问你的文件夹、指定用户不能使用的程序,而且还有来自微软内部的加强系统安全的绝招。
初识Windows的权限
首先,要完全使用windows权限的所有功能,请确保在应用权限的分区为NTFS文件系统。本文将以windowsXP简体中文专业版+SP2作为范例讲解。
在以NT内核为基础的Windows 2000/XP中,权限主要分为七大类完全控制、修改,读取和运行、列出文件夹目录、读取、写入、特别的权限。
其中完全控制包含了其他六大权限.只要拥有它,就等同于拥有了另外六大权限,其余复选框会被自动选中.属于“最高等级”的权限。
而其他权限的等级高低分别是:特别的权限>读取和运行>修改>写入>读取。
默认情况下,Windows XP将启用简单文件共享,这意味着安全性选项卡和针对权限的高级选项都不可用.也就不能进行本文所述的那些权限应用操作了。请右击任意文件或文件夹.选择“属性”,如果没有看到“安全”选项卡,你可以通过如下方法打开它。
打开“我的电脑”,点击“工具→文件夹选项→查看”,接着在然后单击取消“使用简单文件共享(推荐)”复选框即可。
实战权限“正面”应用
以下应用的前提,是被限制的用户不在Administrators组,否则将可能发生越权访问,后面反面应用会讲到。执行权限设置的用户至少需要为Power Users组的成员,才有足够权限进行设置。
实例1:我的文档你别看-保护你的文件或文件夹
假设A电脑中有三个用户,用户名分别为User1、User2、User3。Userl不想让User2和User3查看和操作自己的“test”文件夹。
第一步:右击test文件夹并选择属性,进入安全选项卡,你将会看到组或用户名称栏里有Administrators(AAdministrators)、CREATOR OWNER、SYSTEM Users(AUsers)、User1(A User1)。他们分别表示名为A电脑的管理员组,创建、所有者组,系统组,用户组以及用户User1对此文件夹的权限设置。当然,不同的电脑设置和软件安装情况,此栏里的用户或用户组信息不一定就是和我描述的一样.但正常情况下最少将包含3项之一:Administrators、SYSTEM、Users或Everyone。
第二步:依次选中并删除Administrators、CREATOR OWNER、SYSTEM、Users,仅保留自己使用的Userl账户。在操作中可能会遇到的提示框。
其实只要单击高级按钮,在权限选项卡中,取消从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目的复选框,在弹出对话框中单击删除即可。该操作使此文件夹清除了从上一级目录继承来的权限设置,仪保留了你使用的User1账户。
就这么轻松,你就实现了其他用户,甚至系统权限都无法访问test文件夹的目的。
★需要注意的是,如果这个文件夹中需要安装软件,那么就不要删除SYSTEM,不然可能引起系统访问出错
★Administrator并不是最高指挥官:你可能会问,为什么这里会有一个SYSTEM账户呢?同时许多朋友认为windows2000/XP中的Administrator是拥有权限最高的用户,其实不然,这个SYSTEM才具有系统最高权限,因为它是作为操作系统的一部分工作,任何用户通过某种方法获取了此权限,就能凌驾一切。
实例2:上班时间别聊天-禁止用户使用某程序
第一步:找到聊天程序的主程序,如QQ,其主程序就是安装目录下的QQ.exe,打开它的属性对话框,进入安全选项卡,选中或添加你要限制的用户,如User3。
第二步:接着选择完全控制为拒绝,读取和运行也为拒绝。
第三步:单击高级按钮进入高级权限没置,选中User3,点编辑按钮,进入权限项目。在这里的拒绝栏中选中更改权限和取得所有权的复选框。
也可以使用组策略编辑器来实现此功能,但安全性没有上面方法高。点击开始→运行,输入gpedit.msc,回车后打开组策略编辑器,进入计算机设置→windows设置→安全设置→软件限制策略→其他规则,右击,选择所有任务→新路径规则,接着根据提示设置想要限制的软件的主程序路径,然后设定想要的安全级别,是不允许的还是受限制的。
实例3:来者是客--微软内部增强系统安全的秘技
本实战内容将需要管理员权限。所谓入侵,无非就是利用某种方法获取到管理员级别的权限或系统级的权限,以便进行下一步操作,如添加自己的用户。如果想要使入侵者进来之后不能进行任何操作呢?永远只能是客人权限或比这个权限更低,就算本地登录,连关机都不可以。那么,他将不能实施任何破坏活动。
注意:此法有较高的危险性.建议完全不知道以下程序用途的读者不要尝试.以免误操作引起系统不能进入或出现很多错误。
第一步:确定要设置的程序
搜索系统目录下的危险程序,它们可以用来创建用户夺取及提升低权限用户的权限,格式化硬盘,引起电脑崩溃等恶意操作:cmd.exe、regedit.exe、regsvr32.exe、regedt32.exe、gpedit.msc、format.com、compmgmt.msc、mmc.exe、telnet.exe、tftp.exe、ftp.exe、XCOPY.EXE、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、net.exe、tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、cscript.exe、netstat.exe、issync.exe、runonce.exe、debug.exe、rexec.exe、wscript.exe、command.com、comspd.exe
第二步:按系统调用的可能性分组设置
按照下面分组.设置这些程序权限。完成一组后,建议重启电脑确认系统运行是否一切正常,查看事件查看器,是否有错误信息(控制面板→管理工具→事件查看器)。
(1)cmd.exe、net.exe gpedit.msc telnet.exe command.com
(仅保留你自己的用户,SYSTEM也删除)
(2)mmc.exe、tftp.exe、ftp.exe、XCOPY.EXE、comspd.exe
(仅保留你自己的用户,SYSTEM也删除)
(3)regedit.exe、regedt32.exe、format.com、compmgmt.msc、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、debug.exe、wscript.exe、cscript.exe、rexec.exe
(保留你自己的用户和SYSTEM)
(4)tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、netstat.exe、issync.exe、runonce.exe、regsvr32.exe
(保留你自己的用户和SYSTEM)
第三步:用户名欺骗
这个方法骗不了经验丰富的入侵者,但却可以让不够高明的伪黑客们弄个一头雾水。
打开控制面板一管理工具一计算机管理,找到用户,将默认的Administrator和Guest的名称互换,包括描述信息也换掉。完成后,双击假的Administrator用户,也就是以前的Guest用户.在其属性窗口中把隶属于列表里的Guests组删除.这样.这个假的管理员账号就成了无党派人士,不属于任何组,也就不会继承其权限。此用户的权限几乎等于0,连关机都不可以,对电脑的操作几乎都会被拒绝。如果有谁处心积虑地获取了这个用户的权限,那么他肯定吐血。
第四步:集权控制,提高安全性
打开了组策略编辑器,找到计算机设置→windows设置→安全设置→本地策略→用户权利指派,接着根据下面的提示进行设置。
(1)减少可访问此计算机的用户数,减少被攻击机会
找到并双击从网络访问此计算机,删除账户列表中用户组,只剩下Administrators;
找到并双击拒绝本地登录,删除列表中的Guest用户,添加用户组Guests。
(2)确定不想要从网络访问的用户,加入到此黑名单内
找到并双击拒绝从刚络访问这台计算机,删除账户列表中的Guest用户,添加用户组Guests;
找到并双击取得文件或其他对象的所有权,添加你常用的账户和以上修改过名称为Guest的管理员账户,再删除列表中Administrators。
(3)防止跨文件夹操作
找到并双击跳过遍历检查,添加你所使用的账户和以上修改过名称为Guest的管理员账户,再删除账户列表中的Administrators、Everyone和Users用户组。
(4)防止通过终端服务进行的密码猜解尝试
找到并双击通过终端服务拒绝登录,添加假的管理员账户Administrator;找到通过终端服务允许登录,双击,添加你常用的账户和以上修改过名称为Guest的管理员账户,再删除账户列表中的Administrators,Remote Desktop User和HelpAssistant(如果你不用远程协助功能的话才可删除此用户)。
(5)避免拒绝服务攻击
找到并双击调整进程的内存配额,添加你常用的账户,再删除账户列表中的Administrators
实例4:你的文档别独享——突破文件夹私有的限制
windows XP安装完成并进入系统时,会询问是否将我的文档设为私有(专用),如果选择了是,那将使该用户下的我的文档文件夹不能被其他用户访问,删除,修改。其实这就是利用权限设置将此文件夹的访问控制列表中的用户和用户组删除到了只剩下系统和你的用户,所有者也设置成了那个用户所有,Administrators组的用户也不能直接访问。如果你把这个文件夹曾经设置为专用,但又在该盘重装了系统,此文件夹不能被删除或修改。可按照下面步骤解决这些问题,让你对这个文件夹的访问,畅通无阻。
第一步:登录管理员权限的账户,如系统默认的Administrator,找到被设为专用的我的文档,进入其属性的安全选项卡,你将会看到你的用户不在里面,但也无法添加和删除。
第二步:单击高级按钮,进入高级权限设置,选择所有者选项卡,在将所有者更改为下面的列表中选中你现在使用的用户,如Userl(AUserl),然后再选中替换子容器及对象的所有者的复选框,然后单击应用,等待操作完成。
第三步:再进入这个文件夹看看,是不是不会有任何权限的提示了?可以自由访问了?查看里面的文件,复制、删除试试看.是不是一切都和自己的一样了?嘿嘿。如果你想要删除整个文件夹,也不会有什么阻止你了。
ServerWinStationsRDP-Tcp 改3389 的
C. ubuntu系统下怎么编译内核文件
一、下载源代码和编译软件的准备
安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。有关命令:代码:$sudo apt-get install build-essential kernel-package libncurses5-dev
二、解压源代码注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:代码:$ cd ~$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/现在,源代码就在 ~/src/linux-2.6.25.10进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。代码:$ cd ~/src/linux-2.6.25.10
三、开始编译前的准备工作。首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。相关命令如下:代码:$ sudo make mrproper网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。命令:代码:cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。相关命令:代码:$sudo make menuconfig配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。 请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。我们可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。如果你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。
五、必须强调的几个选项:1、
在“General setup”里面的“Prompt for development and/or incomplete
code/drivers”金步国认为是不需要。但是如果你的硬件比较新,那几乎是必须选的,这样,我们才可以找到4965无线网卡,alsa声音驱动等
等。Kernel log buffer size 我选15,双核。如果你用ia64,要选16。Control Group support 集群支持?可以不要Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。
2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,谁有2TB的文件?
3、Processor type and features中是关于cpu的,要认真选。Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选项取消。Subarchitecture Type 选(PC-compatible)Maximum number of CPUs 输入自己的核心数目,我输入2。SMT (Hyperthreading) scheler support说的是超线程技术,P4有支持的,我的t8100不支持,目前大部分市场上的家用cpu都不支持。High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了。CPU Frequency scaling 是笔记本cpu节电技术Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的统统消灭。
5、Bus options的选择:Bus options (PCI, PCMCIA, EISA, MCA, ISA)PCI support PCI Express support 现在新买的机器基本上都是PCI Express了ISA support 较新的新机器没有ISA设备,可以去掉MCA support 去掉NatSemi SCx200 support 去掉PCI Hotplug Support Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,去掉这里的选项可以考虑全部编译进内核,而不是以模块形式存在。
6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
声卡还有一个细节,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options
snd-hda-intel probe_mask=1
model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用
了。再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。要注意的:ATA/ATAPI/MFM/RLL support Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选*,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。 SCSI emulation support 要用刻录机,必须选。SCSI device support 现在都是SATA硬盘,一定要选* SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选*。
SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选。
Graphics supportSupport for frame buffer devices 选中,进入选择 VESA VGA graphics support 选上,不然字符界面启动会有问题,后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubuntu开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。 Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。 Framebuffer Console support 需要打开。
Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项 简称fuse。是必选的,如果你要用windows分区。
CD-ROM/DVD Filesystems ISO 9660 CDROM file system support 一般选*DOS/FAT/NT Filesystems VFAT (Windows-95) fs support 有FAT32分区就选*吧 NTFS file system support 有NTFS分区就选*吧 NTFS write support 如果想对 NTFS分区进行写操作,选*必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2,ext3相关的必要选项都编译进入内核。
8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。
9、全部设置完成,最后一项是保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630然后再保存到当起目录,文件名 .config退出设置程序。
六、开始编译内核。ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。相关命令:代码:$sudo make-kpkg clean 这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers上述命令中的dell1400可以用自己喜欢的字符代替,最后的字符一定是数字.输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。
我的机器大概十几分钟。
七、安装内核编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。安装相关命令:
代码:$ cd ..$ sudo dpkg -i linux-image-(按tab键)文件名很长,如果不用tab自动补足是不可能的,tab键万岁。安装完成后和老内核比较一下大小代码:
$ ls -l /boot/
八、重新启动验证新内核。代码:$ sudo reboot
九、显卡驱动如果你的显卡和我一样是nvidia显卡,启动之后往往无法正常进入x-window。即使能看到gdm登录界面,效果也是很差的。那么就要安装nvidia驱动。用ctrl+alt+f1 进入字符命令行,输入用户名,密码登录。 #ps ax看看和gdm相关的进程,把这些进程全部关闭;用sudo /etc/init.d/gdm stop有可能有一个进程没有关闭:#kill 进程号然后安装nvidia显卡驱动,当然驱动要先下好,到nvidia驱动所在的目录里,运行:# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run重新启动以后就ok。要用nvidia的驱动,每次升级内核都要这么做。
十、无线网卡相关的内核选项是Networking --->Wireless --->Generic IEEE 802.11 Networking Stack (mac80211)还有4965的驱动。4965
无线网卡驱动虽然已经编入内核,但没有firmware无法使用。需要把原来内核的firmware拷贝到新内核对应的目录,名字和内核一致,我的内核是
linux-image-2.6.25.10dell1400,那建的目录名就是2.6.25.10dell1400。代码:具体命令:$ cd /lib/firmware/$ sudo mkdir 2.6.25.10dell1400把你的老内核中的4965的firmware拷贝过来。$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/上面的命令和下面的命令是等价的:$ cd /lib/firmware/$ sudo cp -R 2.6.24-16-generic/ 2.6.25.10dell1400/
重新启动系统,无线网卡就正常了。
附编译使用的机器配置:dell vostro 1400,t8100,nvidia 8400cs显卡,内置SigmaTel STAC9228芯片的声卡,4965无线网卡,BCM5906M千兆网卡,3G内存,160G硬盘,combo刻录。
编译系统版本:ubuntu 8.04桌面版.
D. Linux中为什么要配置内核,怎样重新配置内核
新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
(1)自己定制编译的内核运行更快(具有更少的代码)
(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
(4)
将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
E. 怎样使用新编译的内核进行启动
step 1
准备:(1). 所需的内核源码
step2:
切换到源码所在的目录,make distclean 命令:删除生产的.o 和 .config 文件
编译内核之前需要一份配置文件,并在此基础上修改,故借用本地/boot/config-3.13.0-24-generic配置文件,命令: cp /boot/config-3.13.0-24-generic /home/yangqi/code/linux/linux-4.2.3/.config
该配置文件.config 即是对内核裁剪的配置,不用直接打开修改,系统提供menu界面修改,命令:make menuconfig (如果此命令报错,说明需要装ncurses库,安装命令:sudo apt-get install libncurses5-dev) (menu目录如下:)