码迷,mamicode.com
首页 > 其他好文 > 详细

内核编译及系统裁剪

时间:2015-09-10 17:38:03      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:系统裁剪

内核构成:

    内核模块(ko):/lib/modules/version

     核心: /boot/vmlinuz-version

内核设计:

     单内核:linux使用的这个  但是借用了微内核的优势

     微内核

装在模块命令:

     insmod:

     modprobe:

下载内核地址:www.kernel.org     

uname -r 查看内核版本号

###########################################

用户空间访问、监控内核的方式

/proc; /sys 伪文件系统,他们的文件大部分是只读的

/proc/sys:此目录中的文件很多是可读写的

/sys/ :某些文件可写 

    例如/proc/sys/vm  

            该目录下有swappiness 表示是否使用交换内存

                      drop_caches 在这个文件里echo 1 就可以清除掉buffers 和cached的数据

 ######################

设定内核参数的方法:

   例: echo 1 > /proc/sys/vm/drop_caches

          free -m 可以发现 buffers 和cached的值为0

  例:cat /proc/sys/kernel/hostname 有一个hostname    

           echo www.whoami.com > /proc/sys/kernel/hostname可以改计算机名

###############################################################

sysctl -w kernel.hostname="mylab.mageedu.com"可以省去目录,和/替换为.

sysctl -w vm.drop_caches=1  就可以实现效果,但是必须在/proc/sys目录下

立即生效,但不能永久生效。

########################################################

要想永久有效: 

   例:系统上有两块网卡,加入一块儿网卡ping不到目的地,我们可否用另一块儿网卡ping

1、 cat /proc/sys/net/ipv4/ip_forward   0表示不启用 1表示启用

2、 vim /etc/sysctl.conf  在第七行将0改为1

3、 sysctl -p 通知内核重读   实现立即生效并永久有效

  sysctl -a 显示所有内核参数及其值


以上内容我们要记住常用的三个内核参数  drop_caches;ip_forward;hostname

###################################################################################

内核模块管理:

 查看:lsmod:列出当前内核中的每个模块和模块名称、大小、被谁调用了几次

 装载:modprobe MOD_NAME  实现装在某个模块

 卸载:modprobe -r MOD_NAME 卸载某个模块   不需要指定路径

 查看模块具体信息:modinfo MOD_NAME:(会显示模块的路径)(sig签名)(depends:所依赖的模块)(description 描述信息)    

##############################################

实现模块装卸在还有另外一组命令:

   insmod /path/to/somemod:装载模块 必须指定模块路径;modeinfo可以查找路径

   rmmod mod_name :卸载模块 不需要指定路径

###############################################

内核中的功能除了核心功能之外,在编译时有三种选择

  1、不适用此功能

  2、编译成内核模块

  3、编译进内核

#############################################

如何手动编译内核:

   1、直接升级成最新的可能会不兼容;

   2、首先要安装编译环境;Development Tools ;Development Libraries 

   3、下载内核

   4、内核的源码一般都在/usr/src目录下

   5、tar xf linux-2.6.28.tar.gz -C /usr/src解压到这个目录

   6、将解压后的内核文件,连接为linux

      ln -sv linux-2.6.28.10  linux

   7、站在linux目录上有很多目录(arch里面是各种平台;fs是各种文件系统 ;想深入学习linux可以看一看Documenttation这里面的文件;我们学linux的核心就是学内核)

   7.5、安装gcc  和ncurses-devel

   8、打开一个文本菜单,编辑内核参数

      make menuconfig   边框要足够大 

   9、进去之后我们以General setup为例

   10、 如果是*表示做进内核;如果为M为做成模块;如果什么都不选择表示不启用此功能

   11、ESC可以后退

   12、点进File system     (!!!敲空格键可以选择 * M )

   13、保存退出;它保存到了linux目录下的隐藏文件 .config

   14、make 编译

########################################################

  我们大多数情况是复制自身的内核去编译:  复制到那个目录叫.config

1、cp /boot/config-2.6.18-308.el5  /usr/src/linux/.config

2、make menuconfig 编辑内核参数

3、Processor type and features 可以设定专属的硬件驱动

4、可以看到Processor family使用的是奔腾 因为要适应多种CPU  

5、如果CPU是酷睿的我们就选择酷睿,如果是amd的就选择k6 或者k7

6、Device Drivers 可以去掉一些不需要的设备驱动

      【taken Ring 令牌环; PCMPIA卡很古老】

7、make 编译

8、make modules_install安装内核模块

9、make install 

10、重启操作系统选择使用新内核

################################################

编译内核不要使用远程连接;

 如果想使用可以安装 screen 

1、执行screen 会打开一个新窗口

2、Ctrl+A 松开之后按d  拆掉某个进程    

3、screen -ls 查看被拆掉的screen号码

4、screen -r +号码 可以还原被拆掉的进程 哪怕重新登录

################################################

二次编译的时候如何清理原文件 先备份配置文件.config

     make clear

     make mrproper

################################################

创建一套真正的linux

grub -> kernel -> initrd -> ROOTFS(/sbin/init,/bin/bash)

1、创建/mnt/sysroot;/mnt/boot;

2、在sysroot下创建bin、sbin、etc、var、tmp、proc、sys、dev、lib、usr

                    home 

2.5、加磁盘20G    IDE

3、创建两个主分区 一个20M 一个512兆

4、mke2fs -j 格式化乘ext3

5、将20M的磁盘挂载到/mnt/boot  512M的磁盘挂载到/mnt/sysroot

6、安装grub  grub-install --root-directory=/mnt /dev/hda

7、将内核vmlinuz。。。。复制到/mnt/boot/vmlinuz

8、initrd小根,是系统启动起来自动生成的但是咱们这里生成不了;所以要手动创建

9、红5:创建initrd:mkinitrd  红6:dracup 、也支持mkinitrd

10、/*【个人initrd坏了可以这么玩:mkinitrd /boot/initrd-`uname -r`.img `uname -r`】*/

11、在这里我们不能直接创建,我们得改里面的东东;所以我们得看文件类型

12、file /boot/initrd-2.6.18-308.el5.img 你会发现是gzip

13、咱们cp出来到根目录;然后mv成 .img.gz格式

14、gzip -d initrd....img.gz

15、file initrd....img  会发现,格式变成了cpio

16、创建一个目录test:进入test 执行cpio -id < ../initrd-2.6.18.308.img

17、也可以这么玩、创建一个空目录:(同13-16)zcat /boot/initrd-2.6.18-308.img | cpio -id

18、咱们进入目录:vim init 会有一项mkrootdev 咱们把尾部的挂载点改成/dev/hda2

19、保存退出;

20、咱们再打包回去;咱们站在test这个目录上:find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz

21、vim /mnt/boot/grub/grub.conf  编辑grub配置文件

22、default=0

    timeout=5

    title Test Linux (Magedu Team)

             root (hd0,0)

             kernel /vmlinuz

             initrd /initrd.gz

23、在/mnt/sysroot下创建

    mkdir proc sys dev etc/rc.d lib bin sbin boot home var/log usr/{bin,sbin} root tmp -pv

   

24、把/sbin/init拷贝过来 cp /sbin/init /mnt/sysroot/sbin/ 

    把/bin/bash复制过来 cp /bin/bash /mnt/sysroot/bin/

25、把对应的库复制过来

    ldd /sbin/init;   cp /lib/libsepol.so.1 /mnt/sysroot/lib

    ldd /bin/bash

26、vim etc/inittab

         id:3:initdefault:

         si::sysinit:/etc/rc.d/rc.sysinit   保存

27、vim /mnt/sysroot/etc/rc.d/rc.sysinit

         #!/bin/bash

         echo -e "\tWelcome to \033[31mMageEdu Team\033[0m Linux."

         /bin/bash

  

内核编译及系统裁剪

标签:系统裁剪

原文地址:http://10183596.blog.51cto.com/10173596/1693440

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!