How add nic driver to initrd
How to add nic driver to pxe boot initrd
文章目录
- How to add nic driver to pxe boot initrd
- 1. 概述
- 2. 准备工作
- 3. 如何添加nic驱动
- 3.1 Redhat/CentOS 7系列添加Mellaxon CX6 NIC Driver
- 3.2 Debian9系列添加Broadcom NIC Driver
1. 概述
initrd (initial ramdisk) 是一种临时根文件系统,它可以通过BootLoader引导加载到内存中的作为临时根文件系统,并运行不同的程序,它可以用作 Linux 启动过程的一部分。
在pxe装机过程中,BootLoader 引导加载vmlinuz及initrd后,将initrd做为初始化文件系统,并从网络文件共享服务器(nfs/http/vsftp)中加载文件系统进行装机,但旧的Linux发行版的initrd由于缺少一些新的NIC驱动,无法正确识别NIC设备,这时候如果要正确通过PXE安装OS,需要将该⽹卡的驱动程式打包到initrd的镜像file中。
此文档分别以centos/redhat 7系列添加Mellaxon CX6 NIC Driver、debian9.9添加Boadcom NIC Driver为例,其他型号网卡驱动添加也可参考此文档进行。
2. 准备工作
- ISO镜像包
- NIC Driver package
3. 如何添加nic驱动
3.1 Redhat/CentOS 7系列添加Mellaxon CX6 NIC Driver
- 通过U盘或webUI安装OS到SUT
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
- 在SUT安装网卡驱动
[root@localhost ~]# ls MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64.tgz MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64.tgz [root@localhost ~]# tar zxvf MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64.tgz [root@localhost ~]# cd MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64/ [root@localhost MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64]# ls common_installers.pl distro LICENSE RPM-GPG-KEY-Mellanox uninstall.sh common.pl docs mlnx_add_kernel_support.sh RPMS create_mlnx_ofed_installers.pl is_kmp_compat.sh mlnxofedinstall src [root@localhost MLNX_OFED_LINUX-5.7-1.0.2.0-rhel7.6-x86_64]# ./mlnxofedinstall --force
- 解压原始initrd
- 将OS镜像挂载到本地
[root@localhost ~]# mount -o loop -t iso9660 CentOS-7.6-x86_64-DVD-1810.iso /mnt/
- 为新的initrd创建挂载点
[root@localhost ~]# mkdir initrd_mlx5
- 拷⻉ISO镜像⾥原始的initrd.img
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /root/initrd_mlx5/
- 解压原始的initrd.img
[root@localhost ~]# cd /root/initrd-mlx5/ [root@localhost initrd_mlx5]# mkdir tmp #创建tmp是为了将解压后的files暂时存放这⾥ [root@localhost initrd_mlx5]# cd tmp [root@localhost tmp]# xz -dc ../initrd.img | cpio -id 271820 blocks [root@localhost tmp]# ls bin dev etc init lib lib64 proc root run sbin shutdown sys sysroot tmp usr var
- 将OS镜像挂载到本地
- 拷贝网卡驱动到解压后的initrd中
- 查看驱动文件路径及依赖驱动信息
[root@localhost tmp]# modinfo mlx5_core | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko depends: mlx_compat,auxiliary,devlink,ptp,mlxfw,psample [root@localhost tmp]# modinfo mlx_compat | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/compat/mlx_compat.ko depends: [root@localhost tmp]# modinfo auxiliary | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/base/auxiliary.ko depends: mlx_compat [root@localhost tmp]# modinfo devlink | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/kernel/net/core/devlink.ko.xz depends: [root@localhost tmp]# modinfo ptp | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ptp/ptp.ko.xz depends: pps_core [root@localhost tmp]# modinfo pps_core | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/pps/pps_core.ko.xz depends: [root@localhost tmp]# modinfo mlxfw | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlxfw/mlxfw.ko depends: [root@localhost tmp]# modinfo psample | egrep "filename|depends" filename: /lib/modules/3.10.0-957.el7.x86_64/kernel/net/psample/psample.ko.xz depends:
- 将上面所有需要的驱动拷⻉到 /root/initrd-mlx5/tmp/lib/modules/3.10.0-
862.el7.x86_64,注意位置需要⼀⼀对应。[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlx5/core [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlx5/core/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/compat/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/compat/mlx_compat.ko lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/compat/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/base/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/base/auxiliary.ko lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/base/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/kernel/net/core [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/kernel/net/core/devlink.ko.xz lib/modules/3.10.0-957.el7.x86_64/kernel/net/core/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ptp/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ptp/ptp.ko.xz lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ptp/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/pps/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/pps/pps_core.ko.xz lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/pps/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlxfw/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlxfw/mlxfw.ko lib/modules/3.10.0-957.el7.x86_64/extra/mlnx-ofa_kernel/drivers/net/ethernet/mellanox/mlxfw/[root@localhost tmp]# mkdir -p lib/modules/3.10.0-957.el7.x86_64/kernel/net/psample/ [root@localhost tmp]# cp /lib/modules/3.10.0-957.el7.x86_64/kernel/net/psample/psample.ko.xz lib/modules/3.10.0-957.el7.x86_64/kernel/net/psample/
- 查看驱动文件路径及依赖驱动信息
- 更新驱动信息模块modules.symbol/modules.alias/modules.dep
[root@localhost tmp]# cat /lib/modules/3.10.0-957.el7.x86_64/modules.symbols | egrep "mlx5_core$|mlx_compat$|devlink$|ptp$|mlxfw$|psample$|pps_core$" >> lib/modules/3.10.0-957.el7.x86_64/modules.symbols [root@localhost tmp]# cat /lib/modules/3.10.0-957.el7.x86_64/modules.alias | egrep "mlx5_core$|mlx_compat$|devlink$|ptp$|mlxfw$|psample$|pps_core$" >> lib/modules/3.10.0-957.el7.x86_64/modules.alias [root@localhost tmp]# depmod -b /root/initrd_mlx5/tmp -a -v * 创建依赖列表并重新映射
- 重新打包initrd 镜像file
[root@localhost ~]# cd /root/initrd_mlx5/tmp/ [root@localhost tmp]# find . -print | cpio -o -H newc | xz --format=lzma > ../initrd-cx6.img 276695 blocks [root@localhost tmp]# cd .. [root@localhost initrd_mlx5]# ls initrd-cx6.img initrd.img tmp
- 将打包好的initrd-cx6.img 拷贝到pxe server, 并修改引导菜单
[root@simonlinux ~]# vim /var/lib/tftpboot/uefi/grub.cfg set default="0" set timeout=60 menuentry '1.Install CentOS 7.6 via http[With 100G CX6]' --class fedora --class gnu-linux --class gnu --class os {linuxefi /boot/ctos/7.6/vmlinuz inst.repo=http://www.httpboot.local/pxeimg/centos/7.6/os/x86_64 ipv6only=1 quiet#linuxefi /images/pxeboot/vmlinuz inst.repo=http://[2001:db8:ffff:100::10]/pxeimg/centos/8.5/os/x86_64initrdefi /boot/ctos/7.6/initrd-cx6.img#initrdefi /boot/ctos/7.6/initrd.img }
3.2 Debian9系列添加Broadcom NIC Driver
- 通过U盘或webUI安装OS到SUT
root@debian:~# cat /etc/issue Debian GNU/Linux 9 \n \lroot@debian:~# uname -a Linux debian 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1 (2019-04-12) x86_64 GNU/Linux root@debian:~#
- 在SUT安装网卡驱动
root@debian:~# ls -l bnxt_en-1.10.2-221.0.114.0.tar.gz -rw-r--r-- 1 root root 603657 Oct 21 21:47 bnxt_en-1.10.2-221.0.114.0.tar.gz root@debian:~# tar zxvf bnxt_en-1.10.2-221.0.114.0.tar.gz root@debian:~# cd bnxt_en-1.10.2-221.0.114.0/ root@debian:~/bnxt_en-1.10.2-221.0.114.0# ls bnxt.c bnxt_debugfs_cpt.c bnxt_ethtool_compat.c bnxt_lfc.h bnxt_tc.c ChangeLog bnxt_compat.h bnxt_debugfs.h bnxt_ethtool.h bnxt_lfc_ioctl.h bnxt_tc_compat.h COPYING bnxt_compat_link_modes.c bnxt_devlink.c bnxt_extra_ver.h bnxt_netlink.c bnxt_tc.h find_src.awk bnxt_compat_link_modes.h bnxt_devlink.h bnxt_fw_hdr.h bnxt_netlink.h bnxt_ulp.c Makefile bnxt_coredump.c bnxt_dim.c bnxt.h bnxt_nvm_defs.h bnxt_ulp.h MANIFEST bnxt_coredump.h bnxt_dim.h bnxt_hsi.h bnxt_ptp.c bnxt_vfr.c README.TXT bnxt_dcb.c bnxt_eem.c bnxt_hwrm.c bnxt_ptp.h bnxt_vfr.h bnxt_dcb.h bnxt_eem.h bnxt_hwrm.h bnxt_sriov.c bnxt_xdp.c bnxt_debugfs.c bnxt_ethtool.c bnxt_lfc.c bnxt_sriov.h bnxt_xdp.h root@debian:~/bnxt_en-1.10.2-221.0.114.0# make;make install
- 解压原始initrd
- 下载对应版本的netboot到SUT
root@debian:~# ls netboot.tar.gz root@debian:~# cd debian-installer/ root@debian:~# tree -L 2 . └── amd64├── bootnetx64.efi├── boot-screens├── grub├── initrd.gz├── linux├── pxelinux.0└── pxelinux.cfg
- 为新的initrd创建挂载点
root@debian:~# mkdir initrd_bnxt
- 拷⻉netboot⾥原始的initrd.gz
root@debian:~# mkdir initrd_bnxt root@debian:~# cp debian-installer/amd64/initrd.gz initrd_bnxt/ root@debian:~# cd initrd_bnxt/ root@debian:~/initrd_bnxt# ls initrd.gz
- 解压原始的initrd.gz
root@debian:~# cd /root/initrd_bnxt/ root@debian:~/initrd_bnxt# gunzip initrd.gz root@debian:~/initrd_bnxt# mkdir tmp #创建tmp是为了将解压后的files暂时存放这⾥ root@debian:~/initrd_bnxt# cd tmp root@debian:~/initrd_bnxt/tmp# cpio -i -F ../initrd 139458 blocks root@debian:~/initrd_bnxt/tmp# ls bin dev etc init lib lib64 proc root run sbin shutdown sys sysroot tmp usr var
- 下载对应版本的netboot到SUT
- 拷贝网卡驱动到解压后的initrd中
- 查看驱动文件路径及依赖驱动信息
root@debian:~/initrd_bnxt/tmp# modinfo bnxt_en | egrep "filename|depends" filename: /lib/modules/4.9.0-9-amd64/updates/bnxt_en.ko depends: ptp root@debian:~/initrd_bnxt/tmp# modinfo ptp | egrep "filename|depends" filename: /lib/modules/4.9.0-9-amd64/kernel/drivers/ptp/ptp.ko depends: pps_core root@debian:~/initrd_bnxt/tmp# modinfo pps_core | egrep "filename|depends" filename: /lib/modules/4.9.0-9-amd64/kernel/drivers/pps/pps_core.ko depends:
- 将上面所有需要的驱动拷⻉到 /root/initrd_bnxt/tmp/ib/modules/4.9.0-9-amd64/,注意位置需要⼀⼀对应。
# copy bnxt_en root@debian:~/initrd_bnxt/tmp# mkdir lib/modules/4.9.0-9-amd64/updates root@debian:~/initrd_bnxt/tmp# cp /lib/modules/4.9.0-9-amd64/updates/bnxt_en.ko lib/modules/4.9.0-9-amd64/updates/. # copy ptp root@debian:~/initrd_bnxt/tmp# cp /lib/modules/4.9.0-9-amd64/kernel/drivers/ptp/ptp.ko lib/modules/4.9.0-9-amd64/kernel/drivers/ptp/ptp.ko # copy pps_core.ko root@debian:~/initrd_bnxt/tmp# cp /lib/modules/4.9.0-9-amd64/kernel/drivers/pps/pps_core.ko lib/modules/4.9.0-9-amd64/kernel/drivers/pps/pps_core.ko
- 查看驱动文件路径及依赖驱动信息
- 更新驱动信息模块modules.symbol/modules.alias/modules.dep
root@debian:~/initrd_bnxt/tmp# cd lib/modules/4.9.0-9-amd64/ root@debian:~/initrd_bnxt/tmp/lib/modules/4.9.0-9-amd64# cat /lib/modules/4.9.0-9-amd64/modules.symbols | grep "bnxt_en$" >> modules.symbols root@debian:~/initrd_bnxt/tmp/lib/modules/4.9.0-9-amd64# cat /lib/modules/4.9.0-9-amd64/modules.alias | grep -i bnxt_en >> modules.alias root@debian:~/initrd_bnxt/tmp/lib/modules/4.9.0-9-amd64# depmod -b /root/initrd_bnxt/tmp -a -v * 创建依赖列表并重新映射
- 重新打包initrd 镜像file
root@debian:~# cd /root/initrd_bnxt/tmp/ root@debian:~/initrd_bnxt/tmp# find . -print | cpio -o -H newc -O ../initrd-bnxt 159523 blocks root@debian:~/initrd_bnxt/tmp# gzip -c ../initrd-bnxt > ../initrd-bnxt.gz root@debian:~/initrd_bnxt# ls initrd initrd-bnxt initrd-bnxt.gz tmp root@debian:~/initrd_bnxt#
- 将打包好的initrd-bnxt.gz 拷贝到pxe server, 并修改引导菜单
[root@simonlinux ~]# vim /var/lib/tftpboot/uefi/grub.cfg set default="0" set timeout=60 submenu '03 Debian os Install'{ menuentry 'Install Debian9.9 under UEFI mode via Preseed' {set background_color=blacklinuxefi /debian9/debian-installer/amd64/linux vga=788 debian-installer/allow_unauthenticated=true url=http://192.168.15.10/ks_cfg/preseed-uefi.cfg auto=true priority=critical interface=auto ---quietinitrdefi /debian9/debian-installer/amd64/initrd-bnxt.gz#initrdefi /debian9/debian-installer/amd64/initrd.gz } }
How add nic driver to initrd相关推荐
- allwinner: add sun8i-emac driver
最近看到网上有个H3芯片的一些板子挺便宜的.尝试了一下,编译了openwrt的固件,发现没有支持内置的网卡和声卡.但是在网上下载了一些厂家的镜像却发现,在发行版的系统里是支持网卡和声卡的. 今天是20 ...
- babyos2(35) network(1) -- simple RTL8139 nic driver
要为babyos2实现网络,首先要支持网卡,之前选了RTL8139,为此前面做了PCI相关的一些东西,这次要实现简单的网卡驱动. 1.从PCI获取设备信息 uint32 rtl8139_t::get_ ...
- msm8660 add lcd driver
增加mipi himax hx8363a lcd驱动 android/bootable/bootloader/lk/platform/msm8x60/panel_himax_mipi.c [new f ...
- add printer driver error 1802修复说明
1.重启电脑后 ,将服务"Print Spooler"服务重新启动 2.srclient.dll文件拷贝到c盘 windows/system32目录下 3.连接好打印机USB接口, ...
- Linux内核部件分析 设备驱动模型之driver ---mark 详细
Linux内核部件分析 设备驱动模型之driver 转载:https://www.linuxidc.com/Linux/2011-10/44627p7.htm 上节我们分析设备驱动模型中的device ...
- MT6737 平台TP driver分析(二)
tp厂商驱动文件分析 \kernel-3.18\drivers\input\touchscreen\mediatek\NT11206 \kernel-3.18\drivers\input\touchs ...
- platform driver注册过程
platform 总线上的驱动注册一般使用module_platform_driver宏,如goldfish设备的注册 module_platform_driver(goldfish_pipe); 这 ...
- Linux Driver 和Device匹配过程分析
Linux Driver 和Device匹配过程分析 1,总线注册匹配过程 1.1 struct platform_driver 1.2 struct device_driver 1.3 PCIe总线 ...
- FT2000+模块在麒麟系统下串口输出功能调试
FT2000+芯片自带串口,于是模块可以通过前出CPU串口登录系统,查看系统IP地址等信息,在网络故障时方便用户进行问题定位. 打开串口功能需要在系统下配置两个地方 1.需要修改/boot/grub. ...
最新文章
- JPA不同包下同类名查询出错
- 干货回顾丨深度学习性能提升的诀窍
- crontab工具类 断给定的时间 是否 满足 crontab 表达式.md
- EF中一对多的关系中,用单字段保存ID拼接字符串
- MySQL数据库学习笔记(一)----MySQL 5.6.21的安装和配置(setup版)
- linux软链接上传svn,svn 软链接问题
- mysql中ibdata1过大的问题
- 【转】WPF之路-常用布局控件一
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨重新格式化部门表【难度中等】
- php查真实地址,php教程:检查URL地址是否真实存在
- 俞敏洪回应新东方股价跌破1美元
- 数学建模之层次分析法(AHP)
- 算计算机一级应用app,计算机一级题库
- XML数据结构 SAX 解析
- 分布式数据库实战第三节 分布式数据库引擎、索引和事务
- 使用instrument-->Allocations进行内存分析
- C程序~一元二次方程求解
- Vue源码剖析——render、patch、updata、vnode
- 一个app的流程分析
- 没有NAS也要搭建私有云?花生棒+硬盘的一个任性玩法