Linux基础知识汇总(3)...持续更新中

内核管理: {
    内核的功能 {
        进程: Task_Struct (任务结构定义)  Scheduler (任务调度)
        内存: 分配 回收 碎片整理
        I/O: 中断及处理(读写)
        文件系统: 管理文件系统内容与内存交互
        驱动程序: 硬件运行交互
    }
    内核设计流派 {
        单内核: 单一体系结构  linux 采用模块化设计(动态装卸)
        微内核: 内核子系统  win
        fork(): init 负责管理用户空间的进程  /sbin/init
    }
    linux启动初始化 {
        1. post阶段 固化在ROM中
        2. BIOS自检启动 (boot sequence)
        3. MBR(bootloader) 装机时写入第一个盘符
        4. MBR引导内核启动 initrd,initramfs
        5. init进程启动 (upstat)
            pre   /etc/init/rcS.conf
                  /etc/rc.d/rc.sysinit
            post  /etc/inittab  == /etc/init/rc.conf
        # System initialization is started by /etc/init/rcS.conf
        #
        # Individual runlevels are started by /etc/init/rc.conf
        #
        # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
        #
        # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
        # with configuration in /etc/sysconfig/init.
        系统初始化脚本/etc/rc.d/rc.sysinit
            设置主机名
            打印文本欢迎信息
            激活SELinux和udev
            激活swap
            挂载/etc/fstab定义的本地文件系统
            检测根文件系统并对其以读写方式重新挂载
            设置系统时钟
            装载键盘映射
            根据/etc/sysctl.conf设置内核参数
            激活RAID和LVM设备
            清理操作   
    }
    MBR,GPT {
        引导加载程序  (早期  LILO)
        GRUB 分为3个阶段   1st,1.5st,2st stage
            1st 为了引导2st
            1.5st 识别文件系统
            2st 位于boot分区中,grub引导
        grub 可选择启动的系统  可交互  可密码保护
        grub conf  /boot/grub/grub.conf
            default: 是否默认启动
            timeout: 默认启动延时
            splashimage: /path 启动图片
            hiddenmenu: 隐藏菜单
            password: 密码保护
                title ""  可自定义启动标题
                    root(hd0,0)
                    kernel /path ro root=/path/to/device quiet  内核boot目录
                        init=/path  路径    selinux=0
                    initrd /cpio归档文件
        grub损坏维护
            grub配置损坏
                启动阶段 -e 编辑
                kernel /path ro root=/path/to/device quiet init=/bin/bash
                进入bash模式修正grub.conf文件
            grub彻底损坏
                进入救援模式
                chroot /mnt/sysimage
                grub-install --root-directory=/ /dev/sda
                exit
    }
    内核模块 {
        单内核,支持模块动态加载与装卸  /lib/moduals/版本/kernel/
        查看信息
            lspci 查看pci信息
            lsblk 查看所有磁盘信息
            lsmod 加载的驱动信息
            lscpu cpu信息
            lsusb 所有usb信息
            modinfo [模块名称] (查询模块所有信息) 关注 depends  license  filename
            modprobe [-r 模块名称]  卸载模块(自动探索)
            modprobe [模块名称]   装载模块(自动探索)
            rmmod [-f 模块名称]   强制卸载模块
            insmod [path]  装载模块指定路径 
    }
    编译源码 {
        rpmsrc:
            1. 创建mockbuild用户
            2. 安装src.rpm包
            3. rpmbuild  -> source
            4. rpmbuild -bb rpmbuild/specs/nginx.spec
        内核编译: (初次编译选择默认配置)
            1. cp /boot/config-2.6.32-431.el6.x86_64 /usr/src/linux/.config
            2. make menuconfig(调整编译选项   * 编译到内核中  M 模块形式存在)
            3. make -j 4  多线程编译  或  make bzImage  仅编译内核
            4. 为新磁盘安装MBR
            make clean  删除编译生成文件.o,不删除配置文件
            make mrproper  完全删除
            make disclean  重置代码树
            编译部分目录
                make /path/to/dir
            编译部分模块
                make -M /path/to/modual
            编译单一模块
                make /path/to/modual/*.ko -o /path/to/output
            交叉编译
                make ARCH=arm
        screen的使用
            screen  新建一个命令窗口
            Ctrl+A , D  隐藏新建窗口
            screen [-ls]   查看所有的窗口
            screen [-r 编号]  恢复窗口
        内核调优: /proc/sys   kernel  net vm fs  都是伪文件系统
            所有   echo "value" > /path/to/file
            sysctl [-a] 所有内核参数
            sysctl [-w 参数名称] = value
            配置文件   /etc/sysctl.conf 
        设备文件:  udev 基于系统自动探查
            tmpfs  /dev/shm  tmpfs   defaults        0 0
            mknod -m 660 /dev/testdev b 100 0   手动创建设备文件
    }
}



sed初步: {
    sed 是一个行编辑器,每次读取一行到内存中来进行处理并输出
    sed [options] 'script' file
        -n 静默模式
        -r 拓展的正则表达式
        -f 加载文件脚本
        -e 可连续执行script
        -i 可直接读写文件
        COMAND d 删除 p 打印(默认) i/a \text 匹配的前后添加内容
            r /path/to/file 插入文件内容 w /path/to/file 保存到
            = 匹配内容的行号 
            <a>s/<b>/<c>/[g/i]  查找替换模式
                a: 可定界
                b: 查找内容
                c: 替换内容  \1 引用替换
                g: 全局模式
                i: 忽略大小写
        例:
            sed '/^\/\//d' /etc/named.conf  删除named.conf中所有的以//开头的行
}


awk初步: {
    awk 是一个报告生成器,可以将选中内容的每行每列进行格式化
    awk [options] 'script' file
    awk [options] '/pattern/{action}' file
        -f 脚本文件
        -F 分割符
        定界模式: 默认全部文件
            /part1/,/part2/
            /pattern/
            表达式  > >= < <= == != ~
        BEGIN/END:
            执行前/后操作
        awk -F: '{print $1}' /etc/passwd
}



Linux系统的安装: (自动化){
    安装方式可分为三种
        1. 光盘MBR bootloader
        2. 网络设备 基于PXE或者Cobbler
        3. 可移动设备
    1. 光盘制作过程
        a) 以当前最微系统的安装过程为蓝本 cp ~/anaconda-ks.cfg ~/ks.cfg
        b) 修正 ks 参数 , 以及安装需要的所有工具
        详细参见 Red_Hat_Enterprise_Linux-5-Installation_Guide-en-US.pdf
            # Kickstart file automatically generated by anaconda.
            #version=DEVEL
            text
            install
            cdrom
            lang en_US.UTF-8
            keyboard us
            network --onboot yes --device eth0 --bootproto dhcp --noipv6
            rootpw  --iscrypted $6$pcYzFDFOq/kCTHmk$r/4JaQm8qav2X1OfAh5S/uTH.V0JIxFZoef5FhU10Ox53TBsH1IXeelSc5xIM/0gfWYD7OWDdGjttFOlBvy400
            firewall --service=ssh
            authconfig --enableshadow --passalgo=sha512
            selinux --enforcing
            timezone --utc America/New_York
            bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
            zerombr
            clearpart --all
            volgroup VolGroup --pesize=4096 pv.008002
            logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
            logvol swap --name=lv_swap --vgname=VolGroup --grow --size=992 --maxsize=992
            part /boot --fstype=ext4 --size=500
            part pv.008002 --grow --size=1
            repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
            %packages --nobase
            @core
            %end
        c) 制作光盘
            #!/bin/bash
            #
            [ -e "/root/myiso/packages" ] || mkdir -p /root/myiso/packages
            [ -e "/root/myiso/linuxiso" ] || mkdir -p /root/myiso/linuxiso
            cd /root/myiso/packages
            #yum list | grep "^[^[:space:]].*@" | awk '{print "172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/Packages/"$1".rpm"}' | xargs wget -q
            cat /root/install.log | grep "^Installing" | awk '{print "172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/Packages/"$2".rpm"}' | xargs wget
            cd /root/myiso/linuxiso
            echo "mirror" | lftp "http://172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/isolinux"
            cp /root/iso.cfg /root/myiso/
            sed -i "s/\(^[[:space:]]\{2\}append.*img$\)/\\1 ks=cdrom:\/iso.cfg/" /root/myiso/linuxiso/isolinux.cfg
            cd /root/myiso
            mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.5 x86_64 boot" -b linuxiso/isolinux.bin -c linuxiso/boot.cat -o /root/centos6.4.iso  ~/myiso
    2. 网络设备 PXE
        基于DHCP 与 TFTP + Web服务器
        a) 建立 dhcp 引导网络中的设备   etc/dhcp/dhcpd.conf
            subnet 172.16.43.0 netmark 255.255.255.0 {
                range 172.16.43.1 172.16.43.50;
            }
        b) 在动态为客户端分配IP后  指向 nextserver为 tftp isolinux所在路径
            /var/lib/tftpboot/下的pxelinux.0
            subnet 172.16.43.0 netmark 255.255.255.0 {
                range 172.16.43.1 172.16.43.50;
                next-server 10.0.0.100
                filename "pxelinux.0"
            }
        c) 安装启动 xinetd tftp-server tftp 并chkconfig服务
        d) 安装httpd 将安装树绑定到httpd的目录下    
            先挂载在绑定  mount --bind /media /var/www/html/centos6
        e) 安装syslinux
        f) 拷贝如下文件
            // boot.msg  init文件初始化文件系统  dhcp引导安装文件  引导配置文件  背景图       vesamenu.c32    内核
            // boot.msg  initrd.img            pxelinux.0    pxelinux.cfg  splash.jpg  vesamenu.c32  vmlinuz
            # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
            # cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
            # cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
            # mkdir /var/lib/tftpboot/pxelinux.cfg
            # cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
        g) 网络引导 pxelinux.cfg中加入  
            ks=http://HTTP_SERVER_IP/ks.cfg
    日志??
}


你可能感兴趣的:(awk,sed,MBR,内核编译,pex,内核调优)