导航:首页 > 操作系统 > linux如何修改内核

linux如何修改内核

发布时间:2023-01-29 19:47:16

㈠ 如何重新编译linux内核

  1. 因为一般电脑安装的系统都是Windows,而整个编译过程都需要在Linux环境下实现,所以最好是在虚拟机里安装Linux系统来完成这一过程。我使用的虚拟机是VMware-workstation-full-v7.1.4。

  2. 然后,我们需要下载一个较高版本的Linux系统的镜像文件,安装在虚拟机上,作为编译环境。我使用的是ubuntu-11.04-desktop-i386。之所以选择较高版本,是因为它的界面比较方便用户操作。

  3. 然后下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。我使用的是linux-2.6.36,下载低版本的原因是,小巧轻便,易于编译。

    解压命令如下:

    bzip2 -d linux-2.6.36.tar.bz2

    tar -xvf linux-2.6.36.ta

  4. 修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。

  5. 修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。

  6. 在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。

  7. 下面就是最重要的内核编译与安装:

    首先配置编译信息,使其生成适合当前机器的Makefile,输入make oldconf ig。

    接着还要输入make menuconfig,在字符界面下进行必要的细微的修改。

    然后要经过四步编译过程(直接输入命令即可):

    (1)make bzImage

    将内核编译为压缩映像,存储在源码根目录下的“System.map”文件中。

    (2)make moles

    编译各个模块。

    (3)sudo make moles_install

    安装模块

    (4)sudo make install

    安装内核

    第(2)(3)步等待时间较长,可能需要数个小时,请耐心等待。

    无报错的话重启进入GRUB界面,就可以看到新编译的内核了。

  8. 按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my call”是否已在内核中:

  9. 编写测试程序,调用新添加的系统调用:

  10. 测试成功,说明系统调用添加成功,进而说明内核编译成功!

    以上的办法你可以试一下,希望对你有所帮助。

㈡ [重庆思庄每日技术分享]-linux 系统 修改内核参数导致不能启动的问题

错误原因:

错误修改了  /etc/selinux/config文件。

错误信息:

重启后发现出现错误,不能继续启动

Kernel panic - not syncing: Attempted to kill init

解决方案:

1.系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet” 一栏,按‘e’键进入编辑,在末尾增加enforcing=0,即:

kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0  或者selinux=0

按‘b’键继续引导,OK顺利前进。

2.后来发现,通过改变/etc/grub.conf 在倒数第二行添加selinux=0 也可。

3.(推荐) 检查/etc/selinux/config文件是否出错

注意事项:

1.系统启动后,按e ,如果没有对应kerne选项继续按e 找到

2.在出现命令行后 空格加入 enforing=0 回车

3.除保存编辑不要按回车,esc等按键。输入enforing=0后直接按b 继续启动。

㈢ linux 修改内核信息

可以改。永久变更主机名用下面方法需要改2处#vi /etc/hosts127.0.0.1 xxxx localhost.localdomain localhost#vi etc/sysconfig/networkNETWORKING=yesHOSTNAME=xxxxGATEWAY=192.168.0.1这样重启之后,主机名也不会变※· xxxx为你要改的主机名

㈣ 在哪里改linux内核

到http://kernel.org上下载新的内核,
然后将文件移动到/usr/src,解压,进入到目录,然后
make menuconfig(定制内核)
make(生成内核模块)
make moles_install (加载内核模块)
make install (修改grub)
以上就是我个人安装新内核的经验

㈤ Linux常用内核网络参数及修改方法

在修改内核参数前,需要注意以下几点:

本文提供以下两种修改Linux实例内核参数的方法。

/proc/sys/ 目录是Linux内核在启动后生成的伪目录,其目录下的 net 文件夹中存放了当前系统中开启的所有内核参数,目录树结构与参数的完整名称相关,如 net.ipv4.tcp_tw_recycle ,它对应的文件是 /proc/sys/net/ipv4/tcp_tw_recycle 文件,文件的内容就是参数值。方法一中修改的参数值仅在当前运行中生效,系统重启后会回滚到历史值,一般用于临时性验证修改的效果。若需要永久性修改,请参见方法二。

㈥ Linux如何在系统运行过程中修改内核参数

RedHat向管理员提供了非常好的方法,使我们可以在系统运行时更改内核参数,而不需要重新引导系统。这是通过/PRoc虚拟文件系统实现的。/proc/sys目录下存放着大多数的内核参数,并且设计成可以在系统运行的同时进行更改。下面我们以打开内核的 ip转发功能为例说明在系统运行时修改内核参数的两种方法。IP转发是指允许系统对来源和目的地都不是本机的数据包通过网络,RedHat默认屏蔽此功能,在 需要用本机作为路由器、NAT等情况下需要开启此功能。 方法一:修改/proc下内核参数文件内容 直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件内容: # cat /proc/sys/net/ipv4/ip_forward 该文件默认值0是禁止ip转发,修改为1即开启ip转发功能。修改命令如下: # echo 1 >/proc/sys/net/ipv4/ip_forward 修改过后就马上生效,即内核已经打开ip转发功能。但如果系统重启后则又恢复为默认值0,如果想永久打开需要通过修改/etc/sysctl.conf文件的内容来实现。 方法二.修改/etc/sysctl.conf文件 默认sysctl.conf文件中有一个变量是 net.ipv4.ip_forward = 0 将后面值改为1,然后保存文件。因为每次系统启动时初始化脚本/etc/rc.d/rc.sysinit会读取/etc/sysctl.conf文件的内容,所以修改后每次系统启动时都会开启ip转发功能。但只是修改sysctl文件不会马上生效,如果想使修改马上生效可以执行下面的命令: # sysctl –p 在修改其他内核参数时可以向/etc/sysctl.conf文件中添加相应变量即可,下面介绍/proc/sys下内核文件与配置文件 sysctl.conf中变量的对应关系,由于可以修改的内核参数都在/proc/sys目录下,所以sysctl.conf的变量名省略了目录的前面部 分(/proc/sys)。 将/proc/sys中的文件转换成sysctl中的变量依据下面两个简单的规则: 1.去掉前面部分/proc/sys 2.将文件名中的斜杠变为点 这两条规则可以将/proc/sys中的任一文件名转换成sysctl中的变量名。 例如: /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward /proc/sys/kernel/hostname =》 kernel.hostname 可以使用下面命令查询所有可修改的变量名 # sysctl –a 下面例举几个简单的内核参数: 1./proc/sys/kernel/shmmax 该文件指定内核所允许的最大共享内存段的大小。 2./proc/sys/kernel/threads-max 该文件指定内核所能使用的线程的最大数目。 3./proc/sys/kernel/hostname 该文件允许您配置网络主机名。

㈦ linux如何调节和维护内核详细介绍

作为用户程序和系统硬件之间的接口,内核在确保Red Hat Enterprise Linux 应用到广泛到物理和虚拟硬件环境中发挥来重要作用。
识别运行内核

1. cat /etc/redhat-release 安装的Red Hat Enterprise Linux 版本
2. uname -r 当前运行的内核版本
3. yum list installed kernel/* 安装的内核版本
4. uname -m 或arch 当前运行所在处理器体系结构
5.uname -a 查看内核信息
有时,内核会发出日志消息。这些消息记录在/var/log/messages文件中,标记为kernel服务。
内核模块:

模块加载和卸载
● 在引导时加载的核心内核映像位于/boot/vmlinuz-VERSION.
● 虽然可以安装多个内核,但是只有一个是当前运行的内核。若要更改内核,必须重新引导系统。
● 每个内核都包含一组动态加载的模块,这些模块与该内核兼容,保留在/lib/moles/VERSION/ 中。
● 通常,根据需要加载和卸载模块,无需用户(或管理员)交互。
● 可以使用 lsmod 列出当前加载的模块。
● 有时,可能需要使用modprobe MODULENAME 手动加载模块。
● 可以使用modprobe -r MODULENAME 删除不再使用的模块。
可以在 /lib/moles/2.6.32-71.el6.x86_64/kernel 目录下查看内核模块信息

modprobe -l 列出所加载的模块
示例:
# modprobe -l | grep nf_conntrack_ftp
# modprobe nf_conntrack_ftp
# lsmod | grep nf_conntrack_ftp
# modprobe -r nf_conntrack_ftp

内核更新:
下载新内核rpm包
理论上应使用rpm -Uvh kernel-name.rpm 但是如果使用U的话会使当前运行的系统挂掉,
所以用 rpm -ivh kernel-name.rpm 全新安装内核
在 /boot 中会出现一个新的内核
在 /boot/grub/grub.conf 中 default=0 表示使用新内核,此时需重启才能使用到新内核。

㈧ 如何修改 Linux 内核配置

由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。
首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是:
kernel.shmall
=
2097152
kernel.shmmax
=
4294967295
如果系统默认的配置比这里给出的值大,就不要修改原有配置。同时在/etc/sysctl.conf文件最后,添加以下内容:
fs.file-max
=
6553600
kernel.shmmni
=
4096
kernel.sem
=
250
32000
100
128
net.ipv4.ip_local_port_range
=
1024
65000
net.core.rmem_default
=
4194304
net.core.rmem_max
=
4194304
net.core.wmem_default
=
262144
net.core.wmem_max
=
262144
这里的“fs.file-max
=
6553600”其实是由“fs.file-max
=
512
*
PROCESSES”得到的,我们指定PROCESSES的值为12800,即为“fs.file-max
=512
*12800”。
sysctl.conf文件修改完毕后,接着执行“sysctl
-p”使设置生效。
[root@localhost
~]#
sysctl
-p
常用的内核参数的含义如下。
kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系,这里设定的为4GB,即“4294967295/1024/1024/1024=4G”。
kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit.
kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4kB,也就是4096字节。
fs.file-max:表示文件句柄的最大数量。文件句柄表示在Linux系统中可以打开的文件数量。
ip_local_port_range:表示端口的范围,为指定的内容。
kernel.sem:表示设置的信号量,这4个参数内容大小固定。
net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)。
net.core.rmem_max
:表示接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)。
net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)。

㈨ 如何修改新内核linux下的grub配置

1 是手动选择在开机时候按方上下方向键 界面会停留在选择内核的界面
2 自动选择 系统默认会选择最新安装的内核.如果要更改默认使用的内核则修改配置文件/boot/grub/menu.lst(直接修改grub.conf同样可行 )下default默认为0是表示第一个菜单选项(开机时的内核选择菜单),改为1就是使用第二个菜单项了。timeout表示菜单等待时间,单位为秒。

㈩ 应用层修改Linux内核参数的方法

sysctl命令 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录 /proc/sys 中。

示例:

阅读全文

与linux如何修改内核相关的资料

热点内容
android录音开源 浏览:453
弗洛伊德算法c 浏览:6
udp命令字 浏览:659
app服务端java源码 浏览:798
电脑用文件夹玩大型游戏 浏览:254
安卓耳塞失灵怎么办 浏览:765
华三交换机保存命令 浏览:605
命令方块怎么调键盘 浏览:841
不把密码存在服务器上怎么办 浏览:398
怎么让指令方块的命令消失 浏览:543
用单片机做plc 浏览:404
云服务器进入子目录命令 浏览:795
服务器机柜如何配电 浏览:578
怎么删除iphone资源库里的app 浏览:940
pdf鱼 浏览:648
单片机pcf8591什么作用 浏览:805
sql命令学院 浏览:283
加密软件在电脑那个盘 浏览:988
android获取外部存储 浏览:573
怎么查自己家的服务器地址 浏览:858