标签:系统裁剪
内核构成:
内核模块(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