zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    【LeetCode每天一题】Balanced Binary Tree(平衡二叉树的判断)
    【LeetCode每天一题】Construct Binary Tree from Preorder and Inorder Traversal(使用前序和中序遍历构建二叉树)
    【LeetCode每天一题】Binary Tree Zigzag Level Order Traversal(二叉树的之字形遍历)
    【LeetCode每天一题】Binary Tree Level Order Traversal(二叉树的层次遍历)
    Android TextView : “Do not concatenate text displayed with setText”
    Android 播放视频并获取指定时间的帧画面
    Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback开发实例
    Android SeekBar 和 draw9patch 的使用
    Android SlidingMenu 滑出侧边栏
    Android JNI 由C/C++本地代码向Java层传递数据
  • 原文地址:https://www.cnblogs.com/simpman/p/4192680.html
Copyright © 2011-2022 走看看