马哥笔记第十四天内核编译、lftp、内核编译安装

  1. 内核参数配置

                  /proc: 内核映像:许多参数(读写,只读),/proc:把内核参数net.ipv4.ip_forward虚拟成文件系统:net/ipv4/ip_forward

                             只读文件:输出统计信息

                             读写文件:设定内核工作特性,不允许使用文本编辑器打开进行编写,而只能使用重定向的方式或使用专用的工具

    几个常用参数:

            kernel.hostname:设定主机名

            vm.drop_caches:回收虚拟内存中buffers、cache中的空间。例如: echo 1 > /proc/sys/vm/drop_caches

            net.ipv4.icmp_echo_ignore_all:禁止其他主机ping该主机。echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

            net.ipv4.ip_forward:定义本机路由器功能是否开启。echo 1 >/proc/sys/net/ipv4/ip_forward

    sysctl:配置内核参数专用工具,读取配置文件/etc/sysctl.conf,常用选项如下:

            -w:VARAIABLE=VALUE指定内核参数修改值例如:sysctl -w net.ipv4.ip_forward=1

            -a:显示sysctl可修改所有内核参数

            -p:重读配置文件/etc/sysctl.conf并立即生效例如:sysctl -p

    sys:kernel在初始化硬件时,根文件系统尚未挂载,内核会把所有探测到的硬件信息全部映射到/sys目录中,用户空间udev程序就可根据/sys中信息来为每个设备按需创建设备文件。

    udev通过udevadmin命令读取sys目录下硬件信息,检查该硬件设备是否存在,没有就添加并创建设备文件,hotplug会实时监测sys目录,如有设备加入或减去就会通知udev创建或移除设备文件。例如,插入或移除u盘

    udev创建设备文件是根据udev规则进行,规则文件在/etc/udev/rules.d/

    dracut创建虚拟根文件例如:dracut /boot/initramfs-$(uname -r).img  $(uname -r)

     展开initramfs文件:之前需要查看压缩类型file initramfs-RELEASE.img

            # cp /boot/initramfs-RELEASE.img /tmp/initramfs.img.gz

    # gzip -d /tmp/initramfs.img.gz

    # mkdir /tmp/initramfs

    # cd /tmp/initramfs

    # cpio -id < /tmp/initramfs.img.gz

    exec COMMAND :能启动command为一个进程,此进程会取代当前shell进程;

    screen工具:启动新屏幕:screen、exit, 关闭屏幕、Ctrl+a, d:切换屏幕、

                          screen -ls: 查看所有被隐藏的屏幕SID、screen -r SID打开屏幕

    lftp: ftp客户端工具

             -u USERNAME,PASSWORD:指定用户名和密码。

             -p PORT:指定端口。

             -e 'CMD':执行一个命令 :例如 lftp -u root,root -p 123 192.17.54.1

    lftp: 命令:

              help: 获取帮助

              cd: 切换远程服务器上的文件系统目录

              lcd: 切换本地文件系统目录

              get FILE: 下载、mget FILE1...: 下载多个文件,支持使用通配符

               !COMMAND: 执行本地shell命令,而非ftp服务器上命令

               mirror DIR: 镜像目录至本地

               put FILE:上传文件、mput FILE1...:上传多个文件

               lftpget类似于wget: 下载指定URL

  2. Linux内核编译安装,

                在编译前需要先收集硬件信息,也可以根据系统收集的硬件信息进行编译/boot/config文件中

                                    查看CPU信息:cat /proc/cpuinfo、lscpu

                                    查看PCI:lspci -v

                                    查看USB:lsusb

                                    查看块设备:lsblk

    编译:linux支持交叉编译,在本机上根据需要运行的主机平台和硬件信息进行编译。

    编译内核的步骤:(必须安装好开发环境,c6: Development Tools, Server Platform Development, ncurses-devel),先检查包是否安装完毕:yumgrouplist,之后安装所需包:yum groupinstall “Development Tools”

                   第一步:配置内核

                                    make config:手动指定功能开启或关闭

                                    make allyesconfig:开启内核中所有功能编译

                                    make allnoconfig:不开启任何功能编译

                                    make menuconfig:打开文本控制界面,让用户手动选择开启或关闭那些功能

                                    make gconfig:依赖GNome桌面环境及GNome的图形开发环境,gtk2

                                    make kconfig :依赖KDE桌面环境及KDE的图形开发环境,qt

                   第二步:编译

                                    make -j 2 :-j指定用几颗cpu进行编译,编译速度可以提升。

                   第三步:安装内核模块

                                    make modules_install

                                    安装位置:/lib/modules/VERSION/,分析模块间依赖关系并成dep文件

                    第四步:安装内核

                                     make install,安装是否成功检查grub.conf中是否添加新的启动项。

                                     安装内核:/boot/vmlinuz-VERSION,编辑grub.conf,添加一新的title

    获取内核源代码,展开指定目录下:tar xf linux-version.tar.xz -C /usr/src

    在已有的内核上进行二次编译前需做清理操作:

                     make clean:清理编译的文件,但保留配置文件

                     make mrproper:移除所有编译生成的文件、配置文件和备份文件

                     make distclea:完全清理

    将编译生成的文件保存至别处:

                     mkdir /path/to/somewhere

                     cd /path/to/somewhere

                     ./configure --ksource=/usr/src/linux

    如何只编译内核的部分代码:

                     只编译某子目录中的相关代码:cd /usr/src/linux、make  path/to/dir/

                     只编译部分模块:make M=path/to/dir。例如:make M=drivers/net/

                     只编译一个模块: make path/to/dir/MOD_NAME.ko。例如:make drivers/net/ethernet/intel/e1000/e1000.ko

                     将编译生成的文件保存至别处:make O=/path/to/somewhere

    交叉编译:

                     make ARCH=arch,

                     获取某ARCH的可用的默认配置:make ARCH=arch help。例如:make ARCH=arm acs5k_defconfig


你可能感兴趣的:(内核,编译安装,lftp)