内核编译
在特定的情况我们机器上面有些硬件特性需要利用起来,但是我们现成的这个内核没有开启这个功能,那就需要重新编译,把这个功能模块加进来,或者打到vmlinux中的核心文件里面。比如ntfs功能,默认系统没有启用此功能,但是系统是带这个功能的,编译的时候时候可以打开该功能,有些功能打开了,但是用不上,我们也可以在编译的时候关闭,实现完全定制的内核功能。
针对硬件驱动的配置有模板,由于驱动数目太多(wc -l /boot/config*****,查看有4000+),且有些功能我们不了解,因此我们可以通过配置模板文件来对模块进行修改。
模板文件:/boot/config-2.6.32-642.el6.x86_64 通过该文件我们可以看到哪些功能模块打开,哪些没打开
# CONFIG_CRC32_SELFTEST is not set 表示没开启此模块功能
CONFIG_LIBCRC32C=m 表示打到/lib/modules里面
CONFIG_ZLIB_INFLATE=y 表示打到核心里面
内核编译:
(1) 配置内核选项
支持“更新”模式进行配置: make help
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:基于GTK (GNOME)环境窗口界面
(d) make xconfig:基于QT(KDE)环境的窗口界面
支持“全新配置”模式进行配置
(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置
(b) make allyesconfig: 所有选项均回答为“yes“
(c) make allnoconfig: 所有选项均回答为"no
(2) 编译
全编译:make [-j #]
编译内核的一部分功能:
(a) 只编译某子目录中的相关代码:
# cd /usr/src/linux
# make dir/
(b) 只编译一个特定的模块:
# cd /usr/src/linux
# make dir/file.ko
例如:只为e1000编译驱动:
#make drivers/net/ethernet/intel/e1000/e1000.ko (.ko文件目录中不存在需要自己写),编译完后将文件拷贝到对应的目录
需要事先清理操作:
# make clean:清理大多数编译生成的文件,但会保留config文件等
# make mrproper: 清理所有编译生成的文件、 config及某些备份文件
# make distclean: mrproper、 patches以及编辑器备份文件
编译应用举例:
1、下载内核文件、准备模板,安装“开发工具“包组
2、tar xvf liux-3.18.tar.xz -C /usr/src
ln -s linux-3.18.41/ linux
3、cp /boot/config-2.6.32-642.el6.x86_64 /usr/src/linux/.config
注意模板必须命名为“.config”,因为编译的是要读该文件,否则无法识别。
4、cd /usr/src/linux
make menuconfig 通过图形界面配置驱动模块(该命令依赖ncures包,首次执行需要yum安装 )
[*]表示打到vmlinux的核心文件里面去了
[M]表示打到的/lib/modules中的.ko文件(驱动模块)
[]表示不启用该功能
5、全编译make -j #(cpu的数量,lscpu可以查看)
6、cd linux
make modules_install 安装模块,将模块拷贝到/lib/modules
7、make install 生成核心文件vmlinuz initramfs 及grub.conf
8、reboot
系统自动化安装
同时部署多台linux机器,需要依赖自动化安装
MBR: /光盘/isolinux/boot.cat 二进制文件
stage2: isolinux/isolinux.bin
配置文件: isolinux/isolinux.cfg
label linux ### 此处如果加rescue 就变成了 rescue模式 menu label ^Install or upgrade an existing system menu default kernel vmlinuz ### 加载内核 append initrd=initrd.img ###向内核传递参数 label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset ###nomodeset 内核参数 label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue ###rescue 内核参数 label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
每个对应的菜单选项:
加载内核: isolinuz/vmlinuz
向内核传递参数: append initrd=initrd.img …
装载根文件系统,并启动anaconda
默认启动GUI接口
若是显式指定使用TUI接口: 向内核传递text参数即可
(1)按tab键,在后面增加text,启用字符界面安装
(2)按ESC键: boot: linux text 启动字符界面安装
boot:linux 等同于 选择 Install or upgrade an existing system
boot:rescue 等同于选择 Rescue installed system
Anaconda安装系统分成三个阶段:
安装前配置阶段
安装过程使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
特殊设备: iSCSI
设定主机名
配置网络接口
时区
管理员密码
设定分区方式及MBR的安装位置
创建一个普通用户
选定要安装的程序包
安装阶段
在目标磁盘创建分区,执行格式化操作等
将选定的程序包安装至目标位置
安装bootloader和initramfs
首次启动
iptables
selinux
core dump
指明kickstart文件的位置: ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard drive: ks=hd:device:/directory/KICKSTART_FILE
HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
kickstart文件的格式:
命令段:指明各种安装前配置,如键盘类型等;
程序包段:指明要安装的程序包组或程序包,不安装的程序包等;
%packages
@group_name
package ###指明要包组中要安装的包
-package ###指明包组中不安装的包
%end
脚本段:
%pre: 安装前脚本
运行环境:运行于安装介质上的微型Linux环境
%post: 安装后脚本
运行环境:安装完成的系统
创建建kickstart文件的方式:
(1) 直接手动编辑;
依据某模板修改
(2) 可使用创建工具: system-config-kickstart
依据某模板修改并生成新配置;
检查ks文件的语法错误: ksvalidator
# ksvalidator /PATH/TO/KICKSTART_FILE
手动指定安装源的安装方法:
1、进入光盘启动界面,按ESC 进入"boot"界面输入:linux methmod,进入手动引导安装界面 ,选择安装方法。
2、选择动态获取IP还是静态配置IP
3、选择URL的安装路径
4、进入交互式安装
注意:也可以采取在boot命令行处输入多个选项:boot:linux askmethod ip=1.1.1.1 vnc vnc passwd="passwd" ks=hd:sda:/root/ks.cfg
自动化安装方法:
1、cp -r /光盘/isolinux/ /testdir/myks/ 将光盘中的isolinux目录拷贝到myks目录下
2、编辑vim /testdir/isolinux/isolinux.cfg 配置光盘启动的界面的选项,并指明ks模板文件的路径ks=ftp://192.168.1.103/pub/ks.cfg
abel kickstart menu label ^kickstart Install a system menu default kernel vmlinuz append initrd=initrd.img ks= ###指明ks路径 label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
3、 cd /testdir
mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.8panlinux" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myks/
创建光盘引导文件,保存到/root/boot.iso,注意该操作必须在myks的父目录下面进行。
4、生成模板:system-config-kickstart ,并保存到/var/ftp/pub/目录下,注意如果模板在生成后如发现有需要变更的,直接更改生成的文件即可,不用重新用命令生成模板文件。
5、光盘启动即可
原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/46227
评论列表(1条)
总结的很详细,也很实用,如果能有一个完整的示例来展示会更有说服力哦。