云网牛站
所在位置:首页 > Linux培训 > Linux新人培训第十二章:内核编译和定制功能ATCA

Linux新人培训第十二章:内核编译和定制功能ATCA

2018-05-08 15:14:18作者:云网牛站稿源:YWNZ编辑

本章节主要内容为:中兴新支点服务器操作系统(CGSL)内核编译和定制功能ATCA的介绍。

 

注:本Linux新人培训教程以中兴新支点服务器操作系统(CGSL)为例。

 

内核编译可以让用户更换系统内核,使用最新内核的新特性,定制自己想要的系统等。用户可以根据自己的实际需要来选择了解此内容。下面我们将分步骤演示内核的编译过程。

 

12.1.内核编译

1.要进行内核编译,我们首先需要下载最新稳定的内核版本,用户可自行前往 kernel官网 下载自己想要的内核源代码。

2.将下载好的压缩包放在 /usr/src/ 目录下,此目录一般为内核代码存放目录,此处我们下载的源代码是 4.9 版本.tar.xz 格式的压缩包,解压步骤为 xz -d linux-4.9.tar.xz 将.tar.xz 先解压为 tar 包,再运行 tar -xvf linux-4.9.tar 命令将 tar 最终解压到 linux-4.9 目录。

3.要成功编译内核,我们还需要用到 ncurses 库,首先到 ncurses 官网下载源代码并安装。下载解压后进入到ncurses 目录,依次运行 ./configuremakemake install 即可安装好 ncurses库。用户也可以通过终端直接安装 ncurses 依赖库的方法解决依赖关系。

4.一切准备步骤完成后,就可以进行我们的内核配置编译了。首先进入到内核目录,运行 make xconfig 即可启动内核配置图形界面,如下图 12-1 所示,修改后点击保存图标后退出;或者也可以 make menuconfig 进入菜单式配置界面,如下图 12-2 所示,方向键切换行,空格键选择是否勾选,完成后按【Save】回车保存后【Exit】退出即可。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-1 图形化配置

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-2 菜单式配置

5.配置完成后,就可以进行内核的编译了,使用一条简单的命令 make all -j4即可,此过程根据机器性能会花 20~40 分钟,如下图 12-3 所示。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-3 内核编译

注意:如果编译过程提示致命错误:缺少 openssl/bio.h、openssl/opensslv.h 等类似错误消息,是系统缺少openssl库引起的,终端运行 yum install openssl-devel 命令安装该库,重新编译错误便会消失。

6.编译内核之后就到了安装内核的部分了,主要以下分为几步进行:

① 安装模板

在内核目录运行 make modules_install 会创建对应的目录,并把对应的模块文件拷贝到目录/libs/modules/。

② 拷贝 bzImage 文件

bzImage 文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot 目录下。

首先切换到/boot 目录下,新建一个文件夹:

# mkdir mykernel

把 bzImage 拷贝到该目录下:

#cp/usr/src/linux-4.9/arch/x86/boot/bzImage ./mykernel/

把 bzImage 命令为一般格式:

# cd /boot/mykernel

# mv bzImage vmlinuxz-4.9.0

③ 制作 initrd 文件

使用 mkinitrd 命令制作 initrd-4.9.0:

# mkinitrd /boot/mykernel/initrd-4.9.0.img 4.9.0

④ 修改 grub 启动项

grub 启动配置文件 grub.cfg 路径为/boot/grub2/,先 cd 到该目录,vim命令进入编辑:

# vim grub.cfg

我们主要修改以下的内容:

1) 如图 12-4,把 set timeout=0 这一行的 0 改为 5 或者 10 等数字,该项为设置启动系统时等待选择内核的秒数。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-4 

2) 如图 12-5,找到配置文件方框部分的内容,该内容为内核启动参数的模板,将这块内容全部复制出来,在下方粘贴修改。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-5

3) 如图 12-6,模板前面的内容主要为内核的描述等,用户可根据自身需要进行修改;我们主要修改下方两个方框的内容:

将 linux16 /boot/vmlinuxz-4.8.6-201.fc21.x86_64 这一行改为 linux16 /boot/mykernel/vmlinuxz-4.9.0;

将 initrd16 /boot/initramfs-4.8.6-201.fc21.x86_64.img 这一行改为initrd16 /boot/mykernel/initrd-4.9.0.img

修改完成后,:wq 保存退出。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-6

以上步骤全部完成后,重新启动系统,成功编译安装内核的话,将会出现如图 12-7 的启动画面,第二项 NSDL 4.9.0 即为我们新编译的内核,方向键选择回车即可启动该内核。进入系统,终端输入 uname -r 可以确认系统运行内核的确为新的 4.9.0,如下图 12-8 所示。

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-7

Linux新人培训第十二章:内核编译和定制功能ATCA

图 12-8

 

12.2.定制功能ATCA

12.2.1.概述

编写本节的目的在于详细地说明 CGSL V3.02 系列版本中 ATCA 单板上驱动的升级安装的操作步骤。

12.2.2.驱动安装准备

本文档适用于 CGSL V3.02 系列版本的 e1000 网卡驱动、qla2xxx 光纤驱动、(细化的)SBCO 和SBCW 点灯驱动和 KCS 驱动接口的升级或安装。从 atca-drivers-2.0.0 版本开始,驱动包中包含了e1000 网卡驱动、qla2xxx 光纤驱动、细化的 SBCO 和 SBCW 点灯驱动和 KCS 驱动接口。低于atca-drivers-2.0.0 版本的驱动包中只包含 e1000 网卡驱动、qla2xxx 光纤驱动和 SBCO 和 SBCW 点灯驱动。请根据需要选择驱动包版本。

如果是缺省安装,系统中已经包含这几个驱动的升级和安装命令。对于不含升级安装命令的系

统,需要手工安装 CGSL 提供的 RPM 包。可以通过下面的命令来确认系统是否已经安装了 RPM 驱动包:

rpm –qa |grep atca-drivers

如果有形如“atca-drivers-1.1.0-zte”或“atca-drivers-2.0.0-el5”的显示,则表示系统已经自带了驱动程序。否则需要手工安装驱动的 RPM 包或通过安装系统程序来安装驱动。

12.2.2.1.手工安装驱动的 RPM 包

在系统没有自带 RPM 包的情况下,需要执行如下步骤:

1、获取 RPM 包

请根据系统所用版本到 ISO 安装光盘中获取相应的 RPM 包,其名称为:

atca-drivers-1.1.0-zte.i386.rpm(32 位系统)

或 atca-drivers-1.1.0-zte.x86_64.rpm(64 位系统)。

2、安装 RPM 包

rpm –ivh atca-drivers-1.1.0-zte.i386.rpm

rpm –ivh atca-drivers-1.1.0-zte.x86_64.rpm

3、检查确认

正确安装完成后,e1000update、sbcoled、sbcwled 和 qla2xxxupdate 这四个命令会被添加到/usr/bin/目录下。

12.2.2.2.安装系统补丁程序

1、安装系统补丁程序

从 V3.02.00.P3 开始,系统补丁程序中包含了 atca-drivers-2.0.0 驱动包。请根据所需补丁程序版本号下载补丁程序并按照手册说明安装。

2、检查确认

正确安装完成后,e1000update、sbcoled、sbcwled、qla2xxxupdate 和 sbckcs 这五个命令会被添加到/usr/bin/目录下。

12.2.3.e1000 驱动的升级

12.2.3.1.e1000 驱动升级说明

该驱动会将 e1000 驱动版本升级至 7.6.15.4-NAPI 版本,并自动加载到内存中,适用于需要升级e1000 驱动的场景。当系统使用 e1000 网卡使用的是低版本的 e1000e 驱动时,也会将其更换为新版本的 e1000 驱动。

12.2.3.2.e1000 驱动安装步骤

1、执行 cd 命令转到用户目录下:

[root@localhost ~]#cd

2、确认需要升级 e1000 驱动后即可执行 e1000update 命令执行升级操作。执行结果示例如下:

[root@localhost ~]# e1000update

Begin to update e1000 driver ... ...

Finished: update operation successful.

3、升级后的结果确认

执行上述操作后,e1000 驱动就被自动更新,可以通过执行“modinfo e1000”和“ethtool -i ethx”(请使用实际的网卡名替代 ethx)来检查版本号是否为 7.6.15.4-NAPI;如果是,表明驱动更新成功。如果还需要测试与 GES 间的连接灯的显示,则要重启系统。如果重启后,与 GES 之间的网络连接指示灯恢复正常,表明驱动升级正确。

12.2.4.点灯驱动的安装

12.2.4.1.点灯驱动安装说明

该操作适用于 SBCO/SBCW 单板上需要安装面板上 LED 的点灯驱动的情况。配置后,驱动会被自动加载到内存中并开始工作。

在 atca-drivers-2.0.0 版本的驱动包中,提供了细化的点灯驱动控制功能,可以设置 ACT 灯和HOST 默认的颜色;并提供了功能接口函数,用于设置 ACT 为绿色和对 HOST 灯进行闪烁控制。对于 atca-drivers-2.0.0 版本之前的驱动包,只能将 ACT 灯和 HOST 灯置为熄灭状态。

12.2.4.2 SBCO.点灯驱动安装步骤

1、执行 cd 命令转到用户目录下:

[root@localhost ~]#cd

2、执行 SBCO 单板的点灯驱动安装命令 sbcoled:

[root@localhost ~]# sbcoled

3、升级后的结果确认

执行完毕之后,SBCO 单板的点灯驱动就会被自动加载到内存中,面板上 ACT 和 HOST 指示灯由原先的橙色变为灯灭。

也可以通过执行测试程序来确认, SBCO 单板上的点灯测试程序为:

/lib/modules/sbcoled/sbcoledtest-`uname -r`。执行后,ACT 和 HOST 灯会按照打印提示的颜色闪烁。

如果安装的是细化的 SBCO 点灯驱动,会在系统中添加点灯控制的头文件和库函数文件。

库函数的路径与操作系统的位数有关,如下所示:

32 位系统:

/usr/local/include/ leddrv_common_param.h

/usr/local/lib/libleddrv-dynamic.so

/usr/local/lib/libleddrv-static.a

64 位系统:

/usr/local/include/ leddrv_common_param.h

/usr/local/lib64/libleddrv-dynamic.so

/usr/local/lib64/libleddrv-static.a

12.2.4.3.SBCW 点灯驱动安装步骤

1、执行 cd 命令转到用户目录下:

[root@localhost ~]#cd

2、执行 SBCW 单板的点灯驱动安装命令 sbcwled:

[root@localhost ~]# sbcwled

3、升级后的结果确认

执行完毕之后,SBCW 单板的点灯驱动就会被自动加载到内存中,面板上 ACT 和 HOST指示灯由原先的橙色变为灯灭。

也可以通过执行测试程序来确认,SBCW单板上的点灯测试程序为:

/lib/modules/sbcwled/sbcwledtest-`uname -r`。执行后,ACT 和 HOST 灯会按照打印提示的颜色闪烁。

如果安装的是细化的 SBCW 点灯驱动,会在系统中添加点灯控制的头文件和库函数文件。

库函数的路径与操作系统的位数有关,如下所示:

32 位系统:

/usr/local/include/ leddrv_common_param.h

/usr/local/lib/libleddrv-dynamic.so

/usr/local/lib/libleddrv-static.a

64 位系统:

/usr/local/include/ leddrv_common_param.h

/usr/local/lib64/libleddrv-dynamic.so

/usr/local/lib64/libleddrv-static.a

12.2.5.qla2xxx 驱动的安装

12.2.5.1.qla2xxx 驱动升级说明

当在单板上通过 Qlogic 光纤控制器(FC)使用光纤连接磁阵后,如果出现指示灯亮为黄色或者不是处于交叉闪烁状态的情况,就需要升级 qla2xxx 系列驱动。

12.2.5.2.qla2xxx 驱动安装步骤

1、执行 cd 命令转到用户目录下:

[root@localhost ~]#cd

2、确认需要升级 qla2xxx 系列驱动后即可执行 qla2xxxupdate 命令执行升级操作。执行结果示例如下:

[root@localhost ~]# qla2xxxupdate

Begin to update qla2xxx drivers for FC ... ...

Finished: update operation successful.

3、升级后的结果确认

当升级完成后,光纤连接口的指示灯由黄色变成绿灯,如果连接了磁阵,指示灯会交替闪烁。

使用 lsmod 命令查询,可以获取到内存中加载的模块,形如:

[root@localhost ~]# lsmod |grep qla

qla2400 238592 0 

qla2xxx_conf 335368 1 

qla2xxx 348960 1 qla2400

intermodule 37892 2 qla2xxx_conf,qla2xxx

scsi_mod 196697 8 

qla2xxx,scsi_dh,sg,libata,mptspi,mptscsih,

scsi_transport_spi,sd_mod

[root@localhost ~]#

12.2.6 KCS 驱动接口的安装

12.2.6.1 KCS 驱动接口功能说明

KCS 驱动功能给用户层提供了获取单板板位信息的功能接口,它通过 CGSL 系统中的 IPMI 协议内核驱动模块来与 BMC 通信,获取相关单板的架、框、槽信息。为了能获取正确的槽位信息,需要满足如下个条件:

一是需要单板上的 IPMC 支持该功能;

二是要有 root 用户权限来开启系统的 IPMI 服务和访问 IPMI 字符设备。

提示:支持槽位信息查询的 IPMC 版本请咨询平台。

在需要使用该功能时,通过执行 sbckcs 命令就可以安装 KCS 驱动接口功能所需的头文件和库文件。

12.2.6.2.KCS 驱动接口安装步骤

1、执行 cd 命令转到用户目录下:

[root@localhost ~]#cd

2、确认需要使用 KCS 驱动接口后,即可执行 sbckcs 命令执行安装操作。执行结果示例如下:

[root@localhost ~]# sbckcs

3、升级后的结果确认

KCS 驱动接口安装之后,会在系统中添加 KCS 驱动接口的头文件和库函数文件。库函数的路径与操作系统的位数有关,如下所示:

32 位系统:

/usr/local/include/sbc_kcs_common.h

/usr/local/lib/libsbc-kcs.so

/usr/local/lib/ libsbc-kcs.a

64 位系统:

/usr/local/include/sbc_kcs_common.h

/usr/local/lib64/libsbc-kcs.so

/usr/local/lib64/libsbc-kcs.a

为了方便测试,提供了获取单板槽位的测试程序,该命令路径如下所示:

[root@localhost lib]# cd /usr/local/bin/

[root@localhost bin]# ./sbc-testslot

12.2.6.3.配置 IPMI 服务

IPMI 服务能否成功启动与硬件相关,请先确认硬件是否支持。在拥有 root 用户权限之后,可以通过如下步骤来确认和开启 IPMI 服务。

1、确认系统是否已经开启了 IPMI 服务。如果开启了该服务,执行“service ipmi status”命令的响应示例如下:

[root@ZXUN-CG2 ~]# service ipmi status

ipmi_msghandler module loaded.

ipmi_si module loaded.

ipmi_devintf module loaded.

/dev/ipmi0 exists.

2、在系统没有开启 IPMI 服务的情况下,执行“service ipmi start”启动服务。如果硬件不支持,会显示相应的提示信息。成功的执行结果示例如下:

[root@ZXUN-CG2 ~]# service ipmi start

Starting ipmi drivers: [确定]

3、如果需要重启 ipmi 服务可以执行“service ipmi restart”,示例如下:

[root@ZXUN-CG2 ~]# service ipmi restart

Stopping all ipmi drivers: [确定]

Starting ipmi drivers: [确定]

4、如果要设置 ipmi 服务在系统启动时自动启动,可以执行“chkconfig ipmi on”命令来设置:

[root@ZXUN-CG2 ~]# chkconfig ipmi on

 

相关主题

开发Linux调试器教程

精选文章
热门文章