Linux内核编译及CentOS系统安装

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/84311367

1、程序包的编译安装

命令:./configure, make, make install
(1)./configure:检查编译环境的依赖关系,并设置编译参数;
(2)make:编译过程,make不是编译工具,而是项目构建工具,其调用各所需的编译工具执行编译操作;
(3)make install:把编译好的文件(文件包括:二进制文件、库文件、帮助文档、配置文件)复制到编译时指定目录下。
前提:准备好开发环境(开发工具,开发库),安装后的头文件放置在/usr/include。
开源软件提供的是软件的源代码,我们需要将其编译为可执行二进制格式,各开源软件的发行版在制作时都以“通用”为目标,我们需要自己将源代码手动编译为适合自己需要的版本。

2、Linux内核编译准备

(1)前提
1)准备好开发环境;
2)获取目标主机上硬件设备的相关信息;
3)获取到目标主机系统功能的相关信息,例如要启用的文件系统;
4)获取内核源代码包:www.kernel.org
(2)准备开发环境
1)CentOS 6.7所用包组如下:
Development Tools
Server Platform Development
Desktop Platform Development
2)CentOS 7所用包组如下:
Development Tools
Server Platform Development
Desktop Platform Development
额外需要软件包:ncurses-devel
(3)获取目标主机上硬件设备的相关信息:
1)CPU:
~]# cat /proc/info
~]# lscpu
~]# x86info -a
2)PCI设备:
~]# lspci:显示PCI信息,选项:-v,-vv;
~]# lsusb:示USB信息,选项:-v,-vv;
~]# lsblk:显示块设备或光驱信息‘’
3)了解全部硬件设备信息:hal(hardware abstract layer,硬件抽象层)
~]# hal-device

3、内核编译过程

~]# tar  xf  linux-3.10.67.tar.xz  -C  /usr/src
~]# cd  /usr/src
~]# ln  -s  linux-3.10.67  linux
~]# cd  linux				
~]# make menuconfig       	  配置内核选项
~]# make  [-j #]			      编译内核,可使用-j指定编译线程数量
~]# make modules_install	      安装内核模块
~]# make install			      安装内核,自动生成grub配置选项
重启系统,选择使用新内核;

(1)screen命令:
打开screen:~]# screen
拆除screen:Ctrl+a, d
列出screen:~]# screen -ls
连接至screen:~]# screen -r SCREEN_ID
关闭screen:~]# exit
(2)过程的详细说明:
1)配置内核选项
支持“更新”模式进行配置:在已有的.config文件的基础之上进行“修改”配置;
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
(b) make menuconfig:基于cureses的文本配置窗口;
© make gconfig:基于GTK开发环境的窗口界面,包组“桌面平台开发” 并不依赖于GNome桌面,只要有GTK库即可;
(d) make xonfig:基于QT开发环境的窗口界面,KDE桌面开发库;
支持“全新配置”模式进行配置:
(a) make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;不会读取.config;
(b) make allnoconfig:所有选项均为“no”;
2)编译
(a) 多线程编译:make [-j #]
(b) 编译内核中的一部分代码:
(i) 只编译某子目录中的相关代码:
# cd /usr/src/linux
# make path/to/dir/
(ii)只编译一个特定的模块
# cd /usr/src/linux
# make path/to/dir/file.ko
© 交叉编译:目标平台与当前编译操作所在的平台不同;
# make ARCH=arch_name
要获取特定目标平台的使用帮助:
# make ARCH=arch_name help
3)在执行过编译操作的内核源码树上做重新编译:
事先清理操作:
# make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件;
# make mrproper:清理编译生成的所有文件,包括配置生成的config文件及某些备份文件;
# make distclean:相当于mrproper,额外清理各种patches以及编辑器备份文件。

4、CentOS 系统安装

(1)系统安装程序
安装程序为anaconda,bootloader启动后,加载kernel,加载根文件系统,然后启动anaconda安装程序。anaconda有两种安装界面:tui,基于cureses的文本配置窗口,gui,图形安装界面。
(2)CentOS的安装过程启动流程
MBR阶段用到boot.cat文件,Stage2阶段用到isolinux/isolinux.bin文件,配置文件:isolinux/isolinux.cfg。
每个对应的菜单选项:
加载内核:isolinux/vmlinuz;
向内核传递参数:append initrd=initrd.img;
装载根文件系统,并启动anaconda;
anaconda的默认界面是图形界面:512MB+内存空间;
若需要显式指定启动TUI接口,则在菜单界面按下ESC键,向启动内核传递一个参数"text"即可:boot: linux text
注意:上述内容一般位于引导设备,例如可通过光盘、U盘或网络等,后续的anaconda及其安装用到的程序包等可以来自于程序包仓库,此仓库的位置可以为:本地光盘、本地硬盘、ftp server、http server、nfs server;如果想手动指定安装仓库,则按下ESC键后,输入:boot: linux method
(3)anaconda的工作过程
1)安装前配置阶段
(a) 安装过程使用的语言;
(b) 键盘类型;
© 安装目标存储设备:Basic Storage(本地磁盘)、Special Storage(iSCSI);
(d) 设定主机名;
(e) 配置网络接口;
(f) 配置时区;
(g) 配置管理员密码;
(h) 设定分区方式及MBR的安装位置;
(i) 创建一个普通用户;
(j) 选定要安装的程序包;
2)安装阶段
(a) 在目标磁盘创建分区并执行格式化;
(b) 将选定的程序包安装至目标位置;
© 安装bootloader;
3)首次启动
(a) 禁用iptables;
(b) 禁用selinux;
© core dump;
(4)anaconda的配置方式
1)交互式配置方式;
2)支持通过读取配置文件中事先定义好的配置项自动完成配置,遵循特定的语法格式,此文件即为kickstart文件;
(5)安装引导选项
boot: text:文本安装方式
boot method:手动指定使用的安装方法
与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
远程访问功能相关的引导选项:
vnc
vncpassword='PASSWORD'
启动紧急救援模式:rescue
装载额外驱动:dd
相关安装过程可以参考官方网站:www.redhat.com/docs 中的《installation guide》。
ks:指明kickstart文件的位置;

ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard Drive: ks=hd:/DEVICE/PATH/TO/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

(6)kickstart文件的格式
1)命令段:指定各种安装前配置选项,如键盘类型等,分为必备命令和可选命令。
2)程序包段:指明要安装程序包,以及包组,也包括不安装的程序包。

%packages
@group_name
package
-package
%end

3)脚本段:
%pre:安装前脚本,运行环境为运行安装介质上的微型Linux系统环境;
%post:安装后脚本,运行环境为安装完成的系统;
4)命令段中的必备命令:
authconfig:认证方式配置
authconfig --enableshadow --passalgo=sha512
bootloader:定义bootloader的安装位置及相关配置
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
keyboard:设置键盘类型
keyboard us
lang:语言类型
lang zh_CN.UTF-8
part:分区布局;
part /boot --fstype=ext4 --size=500
part pv.008002 --size=51200
rootpw:管理员密码
rootpw --iscrypted $6$4Yh15kMGDWOPtbbW$SGax4DsZwDAz4201.O97WvaqVJfHcISsSQEokZH054juNnoBmO/rmmA7H8ZsD08.fM.Z3Br/67Uffod1ZbE0s.
timezone:时区
timezone Asia/Shanghai
5)分区相关的其它指令
clearpart:清除分区
clearpart --none --drives=sda:清空磁盘分区;
volgroup:创建卷组
volgroup myvg --pesize=4096 pv.008002
logvol:创建逻辑卷
logvol /home --fstype=ext4 --name=lv_home --vgname=myvg --size=5120
生成加密密码的方式:
~]# openssl passwd -1 -salt `openssl rand -hex 4`
6)可选命令
install OR upgrade:安装或升级;
text:安装界面类型,text为tui,默认为GUI;
network:配置网络接口;
network --onboot yes --device eth0 --bootproto dhcp --noipv6
firewall:防火墙:firewall --disabled
SELinux:selinux --disabled
halt、poweroff或reboot:安装完成之后的行为;
repo:指明安装时使用的repository;
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
url: 指明安装时使用的repository,但为url格式;
url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/
7)系统安装完成之后禁用防火墙
CentOS 6:
# service iptables stop
# chkconfig iptables off
CentOS 7:
# systemctl stop firewalld.service
# systemctl disable firewalld.service
8)系统安装完成后禁用SELinux
编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数的值为下面其中之一:permissive或disabled;
selinux立即生效:
# getenforce
# setenforce 0
9)定制kickstart文件
# yum install system-config-kickstart
# system-config-kickstart
检查语法错误:
# ksvalidator
10)创建光盘镜像
~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/

猜你喜欢

转载自blog.csdn.net/gongxifacai_believe/article/details/84311367