linux内核编译,内核参数修改

核心(kernel):/boot/vmlinuz-version version 带发行包版本,本地版本
内核模块(kernel object): /lib/modules/version/

内核设计:
    单内核
        模块化设计--内核小,功能做成模块
    微内核
装载模块:
    insmod
    modprobe

内核下载:www.kernel.org

2(主).6(次).17(修正)-->2.6.17.1修复bug
2.6.18.rc1(候补版) 新增功能

用户空间访问,监控内核的方式
通过这两个伪文件/proc,/sys修改

/proc/sys:此目录中的文件很多是可读写的
/sys

设定内核参数的方法:
echo VALUE > /proc/sys/TO/SOMEFILE
echo 1 > /proc/sys/vm/drop_caches | free -m
echo www > /proc/sys/kernel/hostname

sysctl -w(设定值)
sysctl -w kernel.hostname="mylab.mageedu.com"
sysctl -w vm.drop_caches=1

以上立即生效,不能永久有效

永久有效
vim /etc/sysctl.conf
编辑后,立时生效:sysctl -p 让内核重新加载配置文件
sysctl -a :显示所有的内核参数及其值


内核模块管理
当前系统的模块:lsmod
mod size usetimes

modprobe MOD_NAME 加载模块
modprobe -r MOD_NAME 卸载模块
modprobe -r floppy
modprobe floppy

modinfo:查看模块的具体信息
modinfo MOD_NAME
modinfo floppy

insmod /PATH/TO/MODULE_FILE:装载模块
rmmod MOD_NAME 移除模块

depmod /PATH/TO/MODILES_DIR

装驱动:下载源码,编译成ko,加载模块

内核与内核模块必须完全一致
2.6.32-1的内核不能使用在2.6.32-2上编辑的模块(ko)

内核中的功能除了核心功能之外,在编译时,大多数功能有三种选择
1.不使用此功能
2.编译成内核模块 需要modprobe装载
3.编译进内核 内核的一部分,内核装载,他就装载


如何手动编译内核
需要装
Development Libraries
Development Tools

挂在本地光驱进行安装:
挂在镜像
cd /etc/yum.repos.d/
vim local.repo

[base]
name=Server
baseurl=file:///media/cdrom/Server
enabled=1
gpgcheck=0

mkdir /media/cdrom
mount /dev/cdrom /media/cdrom

yum groupinstall "Development Tools" "Development Libraries" -y

#ls
linux-2.6.28.10.tar.gz
#tar xf linux-2.6.28.10.tar.gz -C /usr/src
#cd /usr/src
#ls -sv linux-2.6.28.10 linux
#cd linux
#ls arch
#ls fs

手动编译内核:
make gconfig Gnome 桌面环境  GNOME Software Development
make kconfig KDE 桌面环境    KDE Software Development
还需要装图形开发库【二者不同的库】



可以修改系统的配置:ls /boot/config-2.6.18-308.el5
[root@linux]cp /boot/config-2.6.1-308.el5 /usr/src/linux/.config
[root@linux]# make menuconfig
[root@linux]# make
[root@linux]# make modules_install
[root@linux]# make install

会自动更改grub.menu
重启

为防止中断,可以使用screen


已经编译了,但是不能用
二次编译:
make clean
make mrproper  .config 也会清理
二者都会清理.config等文件。
然后再进行编译

高级:只编译内核中的一个模块,只编译内核的某一个目录
grub->kernel->initrd->ROOTFS(/sbin/init,/bin/bash)

你可能感兴趣的:(linux)