专栏首页魏晓蕾的专栏Linux内核编译及CentOS系统安装

Linux内核编译及CentOS系统安装

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/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CentOS下tar包和rpm包的安装

    在CentOS系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它。这种软件安装包通...

    魏晓蕾
  • 【Hadoop】网站基本指标分析及统计

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

    魏晓蕾
  • CCIE知识点总结——三层技术

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

    魏晓蕾
  • servlet+jsp/js二种实现方式:三级联动(附加demo代码)

    挑战者
  • 各业务Object概念(VO、 PO、DO、DTO、 BO、 QO、DAO、POJO)

    在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库...

    高广超
  • call() 和 apply() 的相关介绍和应用场景

    call() 和 apply() 返回函数应该返回的值,bind() 返回一个经过硬绑定的新函数。

    Chor
  • Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

    一枝花算不算浪漫
  • 10,类和对象

    19,给ATMUser类添加一个新的方法 transfer_money,实现转账功能。

    lyhue1991
  • 搜索:文本的匹配算法

    alexqdjay
  • 设计模式学习--装饰者模式(Decorator Pattern)

    概念: 装饰者模式(Decorator Pattern): 动态地将功能添加到对象,相比生成子类更灵活,更富有弹性. 解决方案: 装饰者模式的重点是对象...

    hbbliyong

扫码关注云+社区

领取腾讯云代金券