内核、内核编译、/proc、/sys

Linux Kernel:

    单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
        内核组成部分:
            kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE;
            kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/
                [ ]: N
                [M]: M
                [*]: Y

            辅助文件:ramdisk
                initrd
                initramfs

    运行中的内核:

        uname命令:
            uname - print system information
            uname [OPTION]...
                -n: 显示节点名称;
                -r: 显示VERSION-RELEASE; 

        模块:
            lsmod命令:
                显示由核心已经装载的内核模块

                显示的内容来自于: /proc/modules文件

            modinfo命令:
                显示模块的详细描述信息

                modinfo [ -k kernel ]  [ modulename|filename... ]
                    -n: 只显示模块文件路径
                    -p: 显示模块参数
                    -a: author
                    -d: description
                    -l: license

            modprobe命令:
                装载或卸载内核模块

                modprobe [ -C config-file ]  [ modulename ]  [ module parame-ters... ]
                    配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf

                  modprobe [ -r ] modulename...

              depmod命令:
                  内核模块依赖关系文件及系统信息映射文件的生成工具;

              装载或卸载内核模块:
                  insmod命令:
                      insmod [ filename ]  [ module options... ]

                  rmmod
                      rmmod [ modulename ]

 

/proc目录:


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

        参数:
            只读:输出信息
            可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
                /proc/sys

                (1) sysctl命令用于查看或设定此目录中诸多参数;
                    sysctl -w path.to.parameter=VALUE

                    ~]# sysctl -w kernel.hostname=mail.magedu.com

                (2) echo命令通过重定向的方式也可以修改大多数参数的值;
                    echo "VALUE" > /proc/sys/path/to/parameter

                    ~]# echo "www.magedu.com" > /proc/sys/kernel/hostname

            sysctl命令:
                默认配置文件:/etc/sysctl.conf
                    (1) 设置某参数
                        sysctl -w parameter=VALUE
                    (2) 通过读取配置文件设置参数
                        sysctl -p [/path/to/conf_file]

            内核中的路由转发:
                /proc/sys/net/ipv4/ip_forward

                常用的几个参数:
                    net.ipv4.ip_forward
                    vm.drop_caches
                    kernel.hostname

    /sys目录:

        sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性。

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

        udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目录下;

    ramdisk文件的制作:

        (1) mkinitrd命令
            为当前正在使用的内核重新制作ramdisk文件
                ~] # mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

        (2) dracut命令 
            为当前正在使用的内核重新制作ramdisk文件
                ~] # dracut /boot/initramfs-$(uname -r).img $(uname -r) 

 

 

    编译内核:


        前提:
            (1) 准备好开发环境;
            (2) 获取目标主机上硬件设备的相关信息;
            (3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
            (4) 获取内核源代码包;
                www.kernel.org

        准备好开发环境:
            包组(CentOS 6):
                Server Platform Development
                Development Tools

        目标主机硬件设备相关信息:
            CPU:
                ~]# cat /proc/cpuinfo
                ~]# x86info -a
                ~]# lscpu

            PCI设备:
                ~]# lspci
                    -v
                    -vv

                ~]# lsusb
                    -v
                    -vv

                ~]# lsblk

            了解全部硬件设备信息
                ~]# hal-device

        简单依据模板文件的制作过程:
            ~]# tar xf linux-3.10.67.tar.xz -C /usr/src
            ~]# cd /usr/src
            ~]# ln -sv linux-3.10.67 linux
            ~]# cd linux
            ~]# cp /boot/config-$(uname -r) ./.config

            ~]# make menuconfig
            ~]# screen
            ~]# make -j #

            ~]# make modules_install
            ~]# make install

            重启系统,并测试使用新内核;

        练习:编译好,并启用之;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值