20170903 系统启动与内核管理(二)

  • 自制linux系统
  • /proc目录
  • /sys目录
  • 内核编译

一、自制linux系统

  • 分区并创建文件系统
    fdisk /dev/sdb
    设计成:/dev/sdb1对应/boot目录 /dev/sdb2对应根目录
    mkfs.ext4 /dev/sdb1
    mkfs.ext4 /dev/sdb2

  • 挂载boot
    mkdir /mnt/boot:子目录必须为boot,grub-install安装时会自动寻找/boot目录
    mount /dev/sdb1 /mnt/boot

  • 安装grub
    grub-install --root-directory=/mnt /dev/sdb

  • 恢复内核和initramfs文件
    cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot/
    cp /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot

  • 建立grub.conf

vim /mnt/boot/grub.conf
title DIY_linux
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash
//虽然制作系统时,硬盘名称为/dev/sdb,但是制作完成后硬盘拆下来作为启动磁盘时名称应为/dev/sda,故root=/dev/sda2
//selinx=0用于禁用selinux,保证启动过程顺利
//没有默认初始化程序/sbin/init,设置为/bin/bash保证系统能够启动
initrd /initramfs-2.6.32-642.el6.x86_64.img
  • 创建一级目录
mkdir /mnt/sysroot
mount /dev/sdb2 /mnt/sysroot
mkdir -pv/mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}
  • 复制bash和相关库文件
    利用脚本将程序和相关依赖的库文件复制到/mnt/sysroot

二、/proc目录

  • 定义:内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出

  • 参数:分为只读参数和可写参数

    • 只读:输出信息
    • 可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
  • /proc/sys:有两种方式修改目录下的参数

    • echo命令:通过重定向方式修改大多数参数的值
      echo "VALUE" > /proc/sys/path/to/parameter
    • sysctl命令:用于查看或设定此目录中诸多参数
      sysctl -w path.to.parameter=VALUE
  • 无论是sysctl命令还是echo命令重定向,对内核参数的修改都只在本次开机中有效,重启后修改的设置消失。通过修改/etc/sysctl.conf文件,可以实现永久生效。

  • sysctl命令用法:

    • sysctl -w parameter=VALUE:修改参数值,临时生效
    • sysctl -p:重新读取配置文件/etc/sysctl.conf使之生效,永久生效
    • sysctl -a:查看所有生效的参数
  • 实验:修改/proc/sys/net/ipv4/icmp_echo_ignore_all参数

1、echo修改参数值为1

2、sysctl修改参数值为0

可以看到其他主机对本机的ping命令在修改参数值为1后,忽略了icmp请求,当参数值改为0后,恢复了对icmp请求的响应。可以看到ping结果中的断层。

3、修改/etc/sysctl.conf文件,将参数改为1
在文件中加入一行net.ipv4.icmp_echo_ignore_all=1,执行sysctl -p重新读取配置文件

注意:删除之前增加的记录,执行sysctl -p重新读取配置文件后,会发现参数并没有消失。这是因为sysctl -p命令在读取配置文件后,对当前参数执行的是覆盖操作,而配置文件里面没有的参数将保留原状。

三、/sys目录

  • 定义:为用户使用的伪文件系统,输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性

  • udev通过此路径下输出的信息动态为各设备创建所需要设备文件,udev是运行用户空间程序

    • udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d/usr/lib/udev/rules.d目录下,使用udevadm trigger命令可以使修改的规则文件立即生效

四、内核编译

(一)内核的组成与管理
  • 内核组成部分:一般可以理解分为内核核心和内核对象

    • kernel:内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE。还有内核启动需要的辅助文件ramdisk,与kernel位于相同目录下,名称为initramfs-VERSION-RELEASE-img。
    • kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/目录下。
  • 系统信息查询uname:
    uname -n:显示主机名称,等于hostname命令
    uname -r:显示内核版本信息
    uname -a:显示所有信息

  • 内核模块管理

    • lsmod命令:显示核心已经装载的内核模块
      显示的内容来自于: /proc/modules文件
    • modinfo命令: 显示模块的详细描述信息
      语法:modinfo [options] module_name
      -n: 只显示模块文件路径
      -p: 显示模块参数
      -a: author
      -d: description
      -l: license
    • modprobe命令:装载或卸载内核模块
      语法:
      modprobe module_name:装载内核模块,自动解决依赖模块
      modprobe -r module_name:卸载内核模块
    • depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具
    • insmod module_name:装载内核模块,不自动解决依赖模块
    • rmmod module_name:卸载模块
(二)编译内核前的准备工作
  • 准备工作一:
    开发环境准备:安装Server Platform Development和Development Tools包组

  • 准备工作二:获取主机硬件设备的相关信息

    • 查询CPU信息:
      cat /proc/cpuinfo
      x86info -a
      lscpu
    • 查看PCI设备信息:
      lspci
      lsusb
      lsblk
    • 了解全部硬件设备信息
      hal-device(CentOS 6专有)
  • 准备工作三:下载源码文件

(三)编译内核
  • 第1步,内核选项配置
    准备文本配置文件.config,位于源码解压缩目录中。里面详细说明了每个内核编译选项的配置。可以复制/boot/config-VERSION-RELEASE文件,并改名为.config
    ,再根据需要修改。

    make menuconfig:配置内核选项的字符界面工具,以源码目录下的.config为模板,可以对.config文件进行微调。
    菜单选项分为[ ], [M], []三种类型:[ ]指明该选项不编译,[M]指明该选项编译为内核模块,[]选项指明该选项编译进入kernel文件

    在general setup-->local version中,自定义内核本地版本号

  • 第2步,编译过程
    make [-j #]:-j 选项指定几个CPU核心用于编译内核

  • 第3步,安装
    make modules_install:安装模块
    make install :安装内核相关文件,完成以下几个工作

    • 安装bzImage为/boot/vmlinuz-VERSION-RELEASE
    • 生成initramfs文件
    • 编辑grub的配置文件
(四)编译内核清理
  • make clean:清理大多数编译生成的文件,但会保留config文件等
  • make mrproper:清理所有编译生成的文件、config及某些备份文件
  • make distclean:mrproper、patches以及编辑器备份文件
(五)卸载内核
  • 删除/lib/modules/目录下不需要的内核库文件
  • 删除/usr/src/linux/目录下不需要的内核源码
  • 删除/boot目录下启动的内核和内核映像文件
  • 更改grub的配置文件,删除不需要的内核启动列表
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容