Linux内核编译及管理

内核网站 :www.kernel.org

学习使用内核
 通过linux内核的源代码,了解操作系统的工作原理
 根据主机硬件的具体情况,定制linux内核
 对内核源代码进行修改,以满足特定功能的需要
 升级内核
 重新编译内核,系统能够更加安全地运行
 新的内核为用户提供新功能
 新的内核支持较新的硬件设备正常工作
 正确配置个性化的内核会使系统运行更快捷、稳定

内核版本

编译内核步骤
 检查编译环境是否正常 #rpm -qa | grep gcc
官网下载内核www.kernel.org
安装内核源码包 : 1.make mrproper :配置内核前准备工作 (相当于make clean)
 2.make menuconfig : 定制内核配置文件
3.make : 编译内核(时间很长)
make modules : 编译内核模块
4.make modules_install : 安装内核模块
make install : 安装 内核文件
5.查看内核编译有无成功
#uname -r
 #ls /boot
 #ls /lib/modules/

引导程序配置文件
/boot /grub
/boot/grub/grub.conf (先加载MBR,再寻找这个文件) <—— /etc/grub.conf 软链接


 如何查看硬盘分区的 UUID,我们可以通
 过 dumpe2fs /dev/sda1 |more 来查看。

GRUB限制
GRUB菜单限制 密码记录的位置
 未经授权禁止修改启动参数 <——全局部分(第一个“title"之前)
 未经授权禁止进入指定系统 <——系统引导部分(每个”title“部分之后)

密码设置方式(grub.conf):1.passwd 明文密码串,没多大意义 2.passwd --md5 加密密码串

GRUB限制的实现
 使用#grub-md5-crypt获取加密字串
 修改grub.conf ,添加密码记录 : passwd --md5 $1$TDARd1$1xJFgaNrprkwXEjE1GHee.(注意顶格)

GRUB中应用文件语法
(磁盘,分区编号)文件绝对路径
 磁盘:hd0、hd1 //数字就代表第几个分区
hd0 = hda / sda
 hd1 = hdb / sdb
分区编号:从0开始编号 (严格的讲编号是后面的分区号减1,即sdn -1)
 (hd1,3) = hdb4 / sdb4
 (hd0,7) = hda8 / sda8

扫描二维码关注公众号,回复: 1964838 查看本文章

内核文件的绝对路径:要参考分区的挂载点

引导程序的功能:编写内核命令行、装载初始化虚拟磁盘、将控制权交给Linux内核
 初始虚拟磁盘映像:文件系统映像文件;包含内核引导所需的基本驱动模块;/boot/initrd-2.6.32-279.el6.i686kdump.img
 /boot/initrd-kernekversion 微型根文件系统,加载到内存中。为了保证根分区的正常挂载和驱动正常加载,先加载虚拟根目录

Switching root 相当与 chroot

Linux 内核完成的三个步骤
1.用Linux设备驱动程序替换BIOS设备驱动程序(最关键)
2. 把根分区只读挂载
3. 启动init进程 (加载fstab)

内核配置文件(grub.conf)丢失或破坏了怎么办?
grub> root (hd0,0)
 grub> kernel /vmvmlinuz-2.6.32-279.el6.i686 (补齐)ro root=/dev/sda2
 grub> initrd /initramfs-2.6.32-279.el6.i686.img (补齐)
grub> boot
此时可启动系统,启动系统后修复内核配置文件

内核配置文件(grub.conf)配置错误怎么办?
 在启动菜单中选择要启动的那个系统,按“p"进入直接修改grub配置

模块:一组功能,完成特定的任务,可以加载和卸载
 模块文件扩展名.ko
可以灵活的为内核增加减少相应的功能
 默认位于/lib/modules/kernelversion/目录中

模块操作命令
#lsmod : 列出当前已经加载模块/proc/modules
 Module Size Used by
 rfkill 15242 1 bluetooth — 依赖于该模块的其他模块
/ / /
模块名称 占用内存大小 使用该模块的系统组件数量

#rmmod : 简单卸载指定模块
#modinfo:查看模块信息

#insmod [模块的绝对路径] : 载入指定模块 (绝对路径可以通过moinfo查询)
#modprobe : 载入个别或一组模块(依赖)
-r 卸载模块以及该模块依赖的模块
#depmod : 分析模块的依赖性写入modules.dep文件(和repocreate相似)

猜你喜欢

转载自www.linuxidc.com/Linux/2017-02/140721.htm