Linux内核:单内核,模块化
内核的某些模块
编译进内核本体 [*]
编译成内核模块 [M]
不选择使用 [ ]
内核的组成部分
/boot/vmlinuz-VERSION
/lib/modules/VERSION/
*.ko
模块间有可能有依赖关系
内核模块管理
lsmod:显示内核已装载的模块;
动态装卸载模块:
卸载:modprob -r 模块名
rmmod 模块名
装载:modporb 模块名
insmod 模块路径 (使用modinfo可以查看)
查看某模块的详细信息
modinfo 模块名
检查并生成模块间依赖关系的命令
depmod
复制e1000模块至/mnt/sysroot目录,可在新的系统中启用网络功能
内核参数的配置:
/proc,/sys
/proc:内核映像
许多参数(读写,只读)
只读文件:输出统计信息
读写文件:设定内核工作机制
/proc/sys
不允许使用文本编辑器打开进行编写,而只能通过重定向或使用专用的工具;
/proc:虚拟成了文件系统
net/ipv4/ip_forward
几个常用参数:
kernel.hostname
vm.drop_caches
net.ipv4.icmp_echo_ignore_all
net.ipv4.ip_forward
ip地址属于内核,而非网卡。
修改内核参数的办法
echo “ “>/proc/sys/
sysctl –w net.ipv4.ip_forward=1
cat /proc/sys/net/ipv4/ipforward
配置文件:/etc/sysctl.conf
sysctl –a:显示sysctl可控制的所有内核参数;
sysctl –p:重读配置文件并生效之;
/sys:
Linux 2.4-:/dve所有设备都是事先预置。
Linux 2.6+:/dev下所有设备文件能够按需创建。
kernel初始化时,根文件系统尚未挂载。
/sys中存入硬件设备的相关信息。
用户空间的某应用程序就可根据/sys中信息来为每个设备按需创建设备文件。
udev:用户空间的程序,用于创建所需要设备, udevadmin
/etc/udev/rules.d目录下
ramdisk:/boot/initramfs-VERSION.img
创建工具:mkinitrd CentOS5
dracut CentOS6
Dracut /boot/initramfs-`uname –r`.img `uname –r`
展开initramfs文件:
cp /boot/initramfs-RELEASE.img /tmp/initramfs.img.gz
gzip –d /tmp/initramfs.img.gz
mkdir /tmp/initramfs
cd /tmp/initramfs
cpio –id < ../initramfs.img
bash子进程:
exec COMMAND:能启动command为一个进程,此进程会取代当前shell进程;
echo $DISPLAY 显示当前的桌面和屏幕;
screen工具:
启动新的屏幕:screen
退出新屏幕:exit 关闭屏幕
拆除新屏幕:Ctrl+a,d 临时隐藏屏幕;
screen –ls :查看所有被隐藏屏幕的ID
screen –r SID:连接至某隐藏的屏幕;
lftp工具:ftp客户端工具
lftp HOST
-u USERNAME,PASSWORD
-p PORT
-e ‘CMD’
lftp:子命令
help:获取帮助信息
cd:切换目录
lcd:切换本地系统目录
get FILE:下载文件;
!COMMAND:执行shell命令,而非FTP命令
mget FILE1…FILEn:下载多个文件,支持使用通配符
mirror DIR:镜像目录至本地
put FILE:上传文件
put FILE1…FILEn:上传多个文件
lftpget:类似于wget:下载指定URL
kernel:
www.kernel.org
编译内核前提:查看本地硬件信息常用工具
1、 查看CPU信息:
cat /proc/cpuinfo
x86info:不常用 需要额外安装
lscup
2、查看PCI信息
lspci
-v
3、查看USB
lsusb
4、查看块设备
lsblk
1、 查看所有硬件
/boot/config-2.6.32… 所有硬件信息整合到此文件中
编译:交叉编译
cross-compilling
编译内核的步骤:(安装好开发环境) CentOS6:Development Tools; Server Platform Development; curese-devel)
第一步:配置内核
make config
make allyesconfig
make allnoconfig
make menuconfig
make gconfig(依赖于Gnome桌面环境及Gnome的图形开发环境, –gkt2)
make kconfig(依赖于KDE桌面环境及KDE图形开发环境,qt)
第二步:编译
make
第三步:安装内核模块
make modules_install
安装位置:/lib/modules/VERSION
分析模块间依赖关系并成dep文件
第四步:安装内核
make install
安装内核:/boot/vmlinuz-VERSION
编辑grub.conf,添加一新的title
获取源代码,展开指定目录下:
tar xf Linux-3.10… -C /usr/src
ln –sv linux-3.10.10 linux
cd linux
make menuconfig
编辑完成后自动保存成.config文件
可以先将/boot下的config文件复制到Linux目录中,将名字改为.config,再使用make menuconfig来修改配置。
后续的编译,开始之前的清理工作
make clean
清理编译的文件,但保留配置文件;
make mrproper
移除所有编译生成的文件,配置文件和备份文件;
make distclean
完全清理
1、 将编译生成的文件保存至别处;
mkdir /path/to/somewhere
cd /path/to/somewhere
./configure –ksource=/usr/src/linux
2、 如何只编译内核的部分代码
(1) 只编译某子目录中的相关代码
cd /usr/src/linux
例如: make SUBDIR=arch/
make diver/net/
(2) 只编译部分模块
make M=path/to/dir
make M=drivers/net
(3) 只编译一个模块
make path/to/dir/MOD_NAME.ko
例如:
make drivers/net/Ethernet/intel/e1000/e1000.ko
(4) 将编译生成的文件保存至别处
make O=/path/to/some/where
1. 交叉编译
make ARCH=arch
例如:
make ARCH=arm
获取ARCH的可用默认配置
make ARCH=arch help
例如:
make ARCH=arm acs5k_defconfig
原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/4441