arch linux编译,archlinux下编译新内核

该博客详细介绍了如何在Arch Linux上为kernel26添加官方及孙海勇大侠的内核中文补丁并进行编译。步骤包括下载源码、应用补丁、配置内核、编译以及安装。编译过程涉及到了模块安装、依赖项、配置文件的修改等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# Maintainer: Thomas Baechler #pkgname=kernel26                # Build stock -ARCH kernel

pkgname=kernel26-good       # Build kernel with a different name

_kernelname=${pkgname#kernel26}

_basekernel=2.6.30

pkgver=${_basekernel}.5

pkgrel=1

_patchname="patch-${pkgver}-${pkgrel}-ARCH"

pkgdesc="加入官方补丁,加入了Arch官方补丁,UTF-8中文补丁"

arch=(i686)

license=('GPL2')

groups=('base')

url=""

backup=(etc/mkinitcpio.d/${pkgname}.preset)

depends=('coreutils' 'kernel26-firmware>=2.6.30' 'module-init-tools' 'mkinitcpio>=0.5.20')

# pwc, ieee80211 and hostap-driver26 modules are included in kernel26 now

# nforce package support was abandoned by nvidia, kernel modules should cover everything now.

# kernel24 support is dropped since glibc24

replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi'

'alsa-driver' 'ieee80211' 'hostap-driver26'

'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv'

'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs'

'gspcav1' 'atl2' 'wlan-ng26' 'aufs' 'rt2500')

install=kernel26.install

source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2

ftp://ftp.archlinux.org/other/kernel26/${_patchname}.bz2

ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-2.6.30.5.bz2

# the main kernel config files

config config.x86_64

# standard config files for mkinitcpio ramdisk

kernel26.preset)

optdepends=('crda: to set the correct wireless channels of your country')

md5sums=('7a80058a6382e5108cdb5554d1609615'

'5e19353bb1b963860a9cb0dcd0418466'

'47841c7ff5c81a7b349a79f2fa8e9138'

'1f94885df32ae730ed6095cd2f8b621b'

'b7f8561498606f6e1d730bbd1ca699ab'

'7c699fbbb2a75aaf8a96c55aec69e645'

'f9347edb30775f285f0a532c0d4e0eab'

'8a7e6e4157d33bd34ba31049a55e9777'

'25584700a0a679542929c4bed31433b6')

extrapatch() {

msg2 "加入官方基本补丁..."

patch -Np1 -i $srcdir/patch-2.6.30.5 || return 1

msg2 "加入孙海勇 大侠的 内核中文补丁  http://youbest.cublog.cn/"

patch -Np1 -i $srcdir/utf8-kernel-2.6.29-core-1.patch || return 1

patch -Np1 -i $srcdir/utf8-kernel-2.6.28-fbcondecor-1.patch || return 1

patch -Np1 -i $srcdir/utf8-kernel-2.6-fonts-2.patch || return 1

}

build() {

KARCH=x86

cd ${srcdir}/linux-$_basekernel

# Add -ARCH patches

# See

patch -Np1 -i ${srcdir}/${_patchname} || return 1

if [ "$CARCH" = "x86_64" ]; then

cat ../config.x86_64 >./.config

else

cat ../config >./.config

fi

if [ "${_kernelname}" != "" ]; then

sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config

fi

# get kernel version

make prepare

_kernver="$(make kernelrelease)"

# load configuration

# Configure the kernel. Replace the line below with one of your choice.

make menuconfig # CLI menu for configuration

#make xconfig # X-based configuration

#make oldconfig # using old config from previous kernel version

# ... or manually edit .config

####################

# stop here

# this is useful to configure the kernel

#msg "Stopping build"

#return 1

####################

yes "" | make config

# build!

make bzImage modules || return 1

mkdir -p ${pkgdir}/{lib/modules,boot}

make INSTALL_MOD_PATH=${pkgdir} modules_install || return 1

cp System.map ${pkgdir}/boot/System.map26${_kernelname}

cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26${_kernelname}

install -D -m644 Makefile \

${pkgdir}/usr/src/linux-${_kernver}/Makefile

install -D -m644 kernel/Makefile \

${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile

install -D -m644 .config \

${pkgdir}/usr/src/linux-${_kernver}/.config

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include

for i in acpi asm-{generic,x86} config linux math-emu media net pcmcia scsi sound trace video; do

cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/

done

# copy arch includes for external modules

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86

cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/

# copy files necessary for later builds, like nvidia and vmware

cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}

cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}

# fix permissions on scripts dir

chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts

#mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel

cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/

if [ "$CARCH" = "i686" ]; then

cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/

fi

cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/

# add headers for lirc package

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video

cp drivers/media/video/*.h  ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/

for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i

cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i

done

# add docbook makefile

install -D -m644 Documentation/DocBook/Makefile \

${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile

# add dm headers

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md

cp drivers/md/*.h  ${pkgdir}/usr/src/linux-${_kernver}/drivers/md

# add inotify.h

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux

cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/

# add wireless headers

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/

cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/

# add dvb headers for external modules

# in reference to:

#

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core

cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/

# add dvb headers for external modules

# in reference to:

#

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/

cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/

# add dvb headers for ~mrec/em28xx-new

# in reference to:

#

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/

cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/

cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/

# add xfs and shmem for aufs building

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm

cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h

# add headers vor virtualbox

# in reference to:

#

cp -a include/drm $pkgdir/usr/src/linux-${_kernver}/include/

# add headers for broadcom wl

# in reference to:

#

cp -a include/trace $pkgdir/usr/src/linux-${_kernver}/include/

# add vmlinux

cp vmlinux ${pkgdir}/usr/src/linux-${_kernver}

# copy in Kconfig files

for i in `find . -name "Kconfig*"`; do

mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`

cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i

done

cd ${pkgdir}/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm

chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}

find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;

cd ${pkgdir}/lib/modules/${_kernver} && \

(rm -f source build; ln -sf ../../../usr/src/linux-${_kernver} build)

# install fallback mkinitcpio.conf file and preset file for kernel

install -m644 -D ${srcdir}/kernel26.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset || return 1

# set correct depmod command for install

sed \

-e  "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \

-e  "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \

-i $startdir/kernel26.install

sed \

-e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" \

-e "s|default_image=.*|default_image=\"/boot/${pkgname}.img\"|g" \

-e "s|fallback_image=.*|fallback_image=\"/boot/${pkgname}-fallback.img\"|g" \

-i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset

echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${startdir}/pkg/etc/mkinitcpio.d/${pkgname}.kver

# remove unneeded architectures

rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa}

# remove the firmware

rm -rf ${pkgdir}/lib/firmware

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值