Linux 内核服务学习笔记

来源:互联网 发布:域名的管理机构是哪里 编辑:程序博客网 时间:2024/05/20 07:17

       ㈠ 内核简介
          职责:
              ① 系统初始化:检查硬件资源并引导系统
              ② 进程调度:决定进程的启动及运行时间
              ③ 内存管理:为运行的进程分配内存
              ④ 安全:校验系统权限、selinux、iptables策略
              ⑤ 提供缓存
          版本:
              ① 常规:一个或多个处理器,但RAM只能是4G或者小于4G
              ② PAE:多处理器,且可支持高达64G RAM
              ③ XEN:虚拟化所需
          内核总是安装在/boot/vmlinuz-*
          内核源码可到
www.kernel.org网上下载


          
       ㈡ 内核模块
          使用模块的几个理由:
              ① 减少内存使用:不需要的驱动程序不会占用内存
              ② 灵活性:模块可在系统安装后添加,这些模块通常被称为第三方驱动程序
              ③ 最大化运行时间:模块可在不重启的状态下无限次装载和卸载
          在引导时需要的动态模块可用grub装入initrd(初始化内存盘),其他模块可在稍后根据需要装载
          这些模块位于/lib/modules/$(uname -r)/目录下
         
          内核模块工具:
          --modprobe:可装载或者卸载模块
          装载:[root@Think ~]# modprobe usb_storage
          卸载:[root@Think ~]# modprobe -r usb_storage
                模块只有在没有使用的前提下才可以被删除
               
          --lsmod:列出所有已装载模块的列表、相应的大小及使用量

[root@Think ~]# lsmodModule                  Size  Used bynetloop                10817  0 [permanent]netbk                  80065  0 [permanent]blktap                120485  2 [permanent]blkbk                  24289  0 [permanent]ip6table_filter         6849  0 ip6_tables             18181  1 ip6table_filteript_MASQUERADE          7617  3 iptable_nat            10949  1 


          --modinfo:显示任意可用模块的信息

[root@Think ~]# modinfo ext3filename:       /lib/modules/2.6.18-308.el5xen/kernel/fs/ext3/ext3.kolicense:        GPLdescription:    Second Extended Filesystem with journaling extensionsauthor:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and otherssrcversion:     26DC008FC415305C5F65313depends:        jbdvermagic:       2.6.18-308.el5xen SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1module_sig:     883f3504f232fc6dc995cc0b59af121112e44a0a0b5f8ae8f7e90b5a613c37cfc50808c464f9a6d0a0a86a45e9d5fe9b7f9f4ed65957f3ce291b12fd


          --/etc/modprobe.conf 配置文件包含适用于装载在系统中的常用模块设置,需要时可另行添加

[root@Think ~]# cat /etc/modprobe.confalias eth0 vmxnetalias scsi_hostadapter mptbasealias scsi_hostadapter1 mptspialias scsi_hostadapter2 ata_piixalias snd-card-0 snd-ens1371options snd-card-0 index=0options snd-ens1371 index=0remove snd-ens1371 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-ens1371


       ㈢ 管理initrd image
          initrd提供在引导初期要装载的模块
          这些模块通常和存储设备及文件系统有关,但也支持其它特性和硬件外设
          文件位于/boot/initrd-$(uname -r).img
          有时会由于某种原因添加额外的模块:
          mkinitrd --with=Module_name /boot/initrd-$(uname -r).img $(uname -r)
         
       ㈣ 通过/dev访问驱动程序
          /dev目录下的文件可用来访问驱动程序
          我们可以从这些文件读取或写入数据:
          例如:
          读取:cat /dev/ttyS0
          写入:echo “message” > /dev/ttyS0
          这些文件可分两类:
          ① 块设备:处理数据存储,使用缓冲
             如:
             /dev/hda :IDE硬盘
             /dev/sda:SATA硬盘
            
          ② 字符设备:适用于数据流,不适用缓冲
             最常用的字符设备是终端

[root@Think ~]# who am iroot     pts/2        2012-12-31 20:42 (:0.0)


             /dev/tty[0-6]:虚拟控制台
             /dev/null
             /dev/random

[root@Think boot]# ll /dev/nullcrw-rw-rw- 1 root root 1, 3 12-31 14:03 /dev/null


          “c”代表字符设备
        “b”代表块设备
          1,3:代表主号码为1,副号码为3
          主号码确定访问哪个驱动程序
          副号码可以让驱动程序区别相识的物理设备

 

       ㈤ 用udev管理/dev
          Linux有个文化叫:设备即文件
          udev可管理保存在/dev/目录下的文件
          udev在插入或者拔出相应的设备时,可随时生成和删除文件
          而且还允许系统管理员添加规则,以便修改/dev中默认的名称和权限,规则在/etc/udev/rules.d/目录下


          
      
㈥ 在/dev中添加文件
          永久性:
          ① 先在/etc/udev/rules.d/中创建新文件
          ② 然后插入如下说明:
             KERNEL=="sda",NAME="usbkey",SYMLINK="usbstorage"
             这可令下次插入/dev/sda时生成一个名为usbkey的设备文件和一个名为usbstorage的符号链接
          临时性:
             mknod /dev/usbdevice  b 8 0


             
      
㈦ 用/proc进行内核配置
          /proc是一个虚拟文件系统(文件没有保存到硬盘上,重新引导后修改会被重新初始化)
          用来显示进程信息、内存资源、硬件设备等
          使用strings命令浏览效果会比较好
          一些有趣的/proc条目
          只读:
              /proc/<PID>:正在运行的进程的信息
              /proc/cpuinfo:处理器信息
              /proc/meminfo:主内存使用
              /proc/swaps:交换分区使用
              /proc/modules:动态装载的模块
              /proc/mounts:挂载的文件系统
              /proc/net:网络活性和配置
              /proc/version: 内核版本
          读写:
              /proc/sys/kernel/hostname
              /proc/sys/net/ipv4/ip_forward :IP转发(开或者关)
              /proc/sys/vm/drop_caches:强制内核从缓存释放一些内存
              /proc/sys/vm/swappiness:显示将内存转换到转换设备的积极程度


              
      
㈧ sysctl:浏览和设定内核参数
          显示所有参数及其值
          sysctl -a
          临时设定:
          sysctl -w net.ipv4.tcp_syncookies=1
          永久性设定:
          /etc/sysctl.conf添加参数
          操作完成后:
                    sysctl -p
          可使新的配置文件与内核同步


          
      
㈨ 一些练习
          ① 关闭ping相应

[root@Think ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 0[root@Think ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all[root@Think ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 1[root@Think ~]# ping 192.168.1.107PING 192.168.1.107 (192.168.1.107) 56(84) bytes of data.64 bytes from 192.168.1.107: icmp_seq=1 ttl=128 time=0.674 ms64 bytes from 192.168.1.107: icmp_seq=2 ttl=128 time=0.598 ms64 bytes from 192.168.1.107: icmp_seq=3 ttl=128 time=0.659 ms--- 192.168.1.107 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2001msrtt min/avg/max/mdev = 0.598/0.643/0.674/0.044 ms      但是:C:\Users\asus>ping 192.168.1.115正在 Ping 192.168.1.115 具有 32 字节的数据:请求超时。请求超时。请求超时。请求超时。192.168.1.115 的 Ping 统计信息:    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),      对/proc虚拟文件系统的改动是暂时的,如果你想永久性更该可参考上面


 

原创粉丝点击