CentOS7 kernel 的rpm包制作

材料

CentOS7,kernel-3.10.0.tar.gz,rpm打包工具

yum install rpmdevtools

步骤

0.其实最方便的方法是解压内核源码后进入源码文件夹一键make rpm/make binrpm-pkg,但是bug太多,所以手动编写spec文件来打包。

1.建立打包过程需要的空间,一般是

mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

往各个文件夹放入对应的文件。BUILD放解压后的源码文件夹;SOURCES放源码压缩包(tar.gz);SPECS放打包脚本(.spec),这里用内核源码里自带的mkspec脚本来生成一个比较粗糙的spec脚本

bash ../linux-xxx/scripts/package/mkspec > /rpmbulid/SPECS/kernel.spec

2.按需修改spec脚本

①如果自己用的话,version和release其实无所谓,只不过Source后面一定要定位到SOURCES文件夹下的文件;

②cp arch/x86/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-3.10.0;x86是bzImage,arm是Image.gz,用这些文件的具体位置替换掉宏定义

③cp System.map与.config后面的重新命名最好统一(在新的服务器上装rpm后/boot目录下的文件都是这个命名)

Name: kernel
Summary: The Linux Kernel
Version: 3.10.0
Release: 3.10.0
License: GPL
Group: System Environment/Kernel
Vendor: The Linux Community
URL: http://www.kernel.org
Source: kernel-3.10.0.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
Provides:  kernel-3.10.0
%define __spec_install_post /usr/lib/rpm/brp-compress || :
%define debug_package %{nil}

%description
The Linux Kernel, the operating system core itself

%package headers
Summary: Header files for the Linux kernel for use by glibc
Group: Development/System
Obsoletes: kernel-headers
Provides: kernel-headers = %{version}
%description headers
Kernel-headers includes the C header files that specify the interface
between the Linux kernel and userspace libraries and programs.  The
header files define structures and constants that are needed for
building most standard programs and are also needed for rebuilding the
glibc package.

%prep
%setup -q

%build
make clean && make %{?_smp_mflags}

%install
%ifarch ia64
mkdir -p $RPM_BUILD_ROOT/boot/efi $RPM_BUILD_ROOT/lib/modules
mkdir -p $RPM_BUILD_ROOT/lib/firmware
%else
mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib/modules
mkdir -p $RPM_BUILD_ROOT/lib/firmware
%endif
INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{?_smp_mflags} KBUILD_SRC= modules_install
%ifarch ia64
cp $KBUILD_IMAGE $RPM_BUILD_ROOT/boot/efi/vmlinuz-3.10.0
ln -s efi/vmlinuz-3.10.0 $RPM_BUILD_ROOT/boot/
%else
%ifarch ppc64
cp vmlinux arch/powerpc/boot
cp arch/powerpc/boot/$KBUILD_IMAGE $RPM_BUILD_ROOT/boot/vmlinuz-3.10.0
%else
cp arch/x86/boot/bzImage $RPM_BUILD_ROOT/boot/vmlinuz-3.10.0
%endif
%endif
make %{?_smp_mflags} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install
cp System.map $RPM_BUILD_ROOT/boot/System.map-3.10.0
cp .config $RPM_BUILD_ROOT/boot/config-3.10.0
%ifnarch ppc64
cp vmlinux vmlinux.orig
bzip2 -9 vmlinux
mv vmlinux.bz2 $RPM_BUILD_ROOT/boot/vmlinux-3.10.0.bz2
mv vmlinux.orig vmlinux
%endif

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr (-, root, root)
%dir /lib/modules
/lib/modules/
/lib/firmware
/boot/*

%files headers
%defattr (-, root, root)
/usr/include

3.运行spec脚本打包

rpmbuild -bb --with baseonly --without debug --without debuginfo --target=`uname -m` kernel.spec

4.安装rpm包

rpm –ivh --force kernel-xxx.rpm

rpm -qa | grep kernel    #查看是否安装成功

rpm -e kernel-xxx    #卸载

5.更新引导

先检查一下/boot下是否有内核对应的initramfs文件,若无则利用dracut工具手动生成,再更新引导项,接着reboot重启就行了。(initramfs-后缀与System.map一致,和之前kernel.spec里面的一致)

dracut -f /boot/initramfs-xxx.img xxx    #生成initramfs

grub2-mkconfig -o /boot/grub2/grub.cfg    #查看所有可用内核

grub2-set-default "CentOS Linux (xxx) 7 (Core)    #修改开机自启用的内核

6.无法启动,遇到dracut-initqueue timeout,网上大部分情况时用usb引导的时候出现这个问题,我们这里出现的原因八成是initramfs文件没生成好,所以重启以之前的内核进入系统,重新制作initramfs,参考https://zhuanlan.zhihu.com/p/281022253

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CentOS 7是一款基于开放源代码的Linux操作系统,它广泛用于企业服务器和桌面电脑。为了在CentOS 7上安装Oracle数据库,我们需要下载并安装一些依赖。以下是在CentOS 7上安装Oracle所需的依赖及其下载方法。 1. gcc、glibc、compat-libstdc++、elfutils-libelf-devel、glibc-devel、libaio-devel和uuid-devel是在安装Oracle数据库时必需的依赖。为了安装它们,您可以使用以下命令: sudo yum install gcc glibc compat-libstdc++ elfutils-libelf-devel glibc-devel libaio-devel uuid-devel 2. kernel-uek-devel和kernel-devel是安装Oracle的额外依赖项。以下是下载和安装它们的方法: sudo yum install kernel-uek-devel 或者 sudo yum install kernel-devel 3. 最后,为了安装Oracle,您需要安装xorg-x11-utils(X11 Utilities)和xorg-x11-xauth(X11 鉴别)。以下是它们的安装命令: sudo yum install xorg-x11-utils sudo yum install xorg-x11-xauth 批准这些依赖项的安装后,您就可以继续安装Oracle数据库了。请确保在安装Oracle之前安装了所有必需的依赖项。 ### 回答2: 在CentOS 7上安装Oracle需要下载一些依赖,以下是下载步骤: 1. 安装wget命令 在终端中输入以下命令安装wget: sudo yum install wget 2. 下载依赖 在终端中输入以下命令开始下载依赖: wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle-ol7 sudo wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo wget https://www.mirrorservice.org/sites/dl.atrpms.net/el7-x86_64/atrpms/stable/atrpms-repo-7-7.el7.x86_64.rpm sudo rpm -ivh epel-release-latest-7.noarch.rpm sudo rpm -ivh atrpms-repo-7-7.el7.x86_64.rpm 注意:以上命令中的URL可能会根据网络环境不同而有所更改,如果下载过程中出现问题,请检查URL是否有效。 3. 安装依赖 在终端中输入以下命令开始安装依赖: sudo yum install oracle-rdbms-server-12cR1-preinstall.x86_64 4. 安装好依赖后,即可开始安装Oracle。 总的来说,下载Oracle依赖的过程比较复杂,需要一定的Linux基础知识,但如果按照上述步骤操作,一般不会出现问题。如果有疑问,建议参考相关的CentOS安装Oracle的教程。 ### 回答3: CentOS 7是基于Red Hat Enterprise Linux(RHEL)7的一个免费的开源操作系统,常用于服务器环境。Oracle是一个大型企业级数据库,广泛应用于企业的数据管理、存储和处理。为了在CentOS 7系统中安装Oracle数据库,必须先下载并安装适当的依赖。下面是下载CentOS 7 Oracle依赖的步骤: 1. 打开终端,在命令行输入“yum update”更新系统软件,保证系统已更新至最新版本。 2. 在命令行输入“yum install glibc.i686 libaio libaio-devel compat-libstdc++-33.x86_64”下载安装CentOS 7 Oracle依赖。 3. 下载完成后,在命令行输入“ls /sbin/ldconfig”验证依赖是否安装完成。 4. 在命令行输入“yum install kernel-uek-devel”下载适用于Oracle数据库的Linux内核。 5. 如果系统没有安装gcc和make软件,可以通过命令“yum install gcc make”来安装。 6. 最后,下载并安装Oracle数据库。 以上就是下载CentOS 7 Oracle依赖的步骤。这些依赖是安装Oracle数据库必不可少的部分,确保您在安装数据库前按照上述步骤正确地下载和安装这些依赖,以确保数据库的正常安装和运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值