1 # Maintainer: AKulikov & Сергей Стрельников
2 # mail to tuxuls@gmail.com & d01540450@gmail.com
3 # PKGBUILD assembled from kernel26, kernel26-bfs, kernel26-ck kernel26-pf bootsplash patch
9 _basekernel=$_major.$_minor.$_patchlevel
10 _pkgname=kernel26-patched
13 _chakrapatches="http://chakra-project.org/sources/kernel26/patches/$_patchlevel"
14 _bootsplashpath="http://przemek.org/patches/bootsplash-$_major.$_minor.$_patchlevel.diff.xz"
16 _pfpatchhome="http://pf.natalenko.name/sources/${_basekernel}/"
17 _pfpatchname="patch-${_basekernel}-${_pfrel}.bz2"
18 _ccspatchver=1.8.2-20110626
19 _ccstoolsver=1.8.2.20110626
20 pkgname=kernel26-patched
24 pkgdesc="Linux kernel with patches ureadhead, tomoto 1.8.x, bootsplash (assembled from kernel26 -bfs,-ck,-pf)"
27 url="http://tol-nabat.org.ua/"
28 backup=(etc/mkinitcpio.d/${pkgname}.preset)
30 depends=('coreutils' 'linux-firmware' 'module-init-tools>=3.12-2' 'mkinitcpio>=0.6.8-2' 'crda' 'pm-utils')
31 makedepends=('xmlto' 'docbook-xsl')
32 optdepends=('kernel26-docs: Kernel hackers manual - HTML documentation that comes with the Linux kernel.'
33 'crda: to set the correct wireless channels of your country'
34 'pm-utils: utilities and scripts for suspend and hibernate power management'
35 'tuxonice-userui: TuxOnIce userspace user interface'
36 'hibernate-script: set of scripts for managing TuxOnIce, hibernation and suspend to RAM'
37 'nvidia-pf: NVIDIA drivers for kernel26-pf'
38 'modprobed_db: Keeps track of EVERY kernel module that has ever been probed. Useful for make localmodconfig.')
39 replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi'
40 'alsa-driver' 'ieee80211' 'hostap-driver26'
41 'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv'
42 'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs'
43 'gspcav1' 'atl2' 'wlan-ng26' 'rt2500' 'aufs2'
45 #conflicts=(kernel26-pf-core2 kernel26-pf-k8 kernel26-pf-psc kernel26-pf-atom kernel26-pf-k7 kernel26-pf-p3 kernel26-pf-pm kernel26-pf-p4)
47 #provides=(${_pkgname}=${_basekernel} 'aufs2') # for $pkgname-optimized
48 provides=(${_pkgname}=${_basekernel} 'kernel26-headers' 'aufs2')
49 # below 'provides' is for when you have no other kernel (which is a bad idea anyway)
50 # provides=(${_pkgname}=${_basekernel} 'kernel26-headers' 'kernel26=${pkgver}' 'aufs2')
51 install='kernel26.install'
53 source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${_basekernel}.tar.bz2
54 config config.x86_64 # the main kernel config files
55 kernel26.preset # standard config files for mkinitcpio ramdisk
56 logo_linux_clut224.ppm.bz2
57 logo_linux_mono.pbm.bz2 # the archlinux boot logos
58 logo_linux_vga16.ppm.bz2
59 bootsplash-2.6.39.diff.xz::$_bootsplashpath
60 aufs2-base.patch::$_chakrapatches/aufs2.1/aufs2-base-$_patchlevel-rcN-$_aufs2rel.patch
61 aufs2-kbuild.patch::$_chakrapatches/aufs2.1/aufs2-kbuild-$_patchlevel-rcN-$_aufs2rel.patch
62 aufs2-standalone.patch::$_chakrapatches/aufs2.1/aufs2-standalone-$_patchlevel-rcN-$_aufs2rel.patch
63 aufs2.1-$_aufs2rel.patch.bz2::$_chakrapatches/aufs2.1/aufs2.1-standalone.tree-$_patchlevel-rcN-$_aufs2rel.patch.bz2
64 ccs-patch-1.8.2-20110626.tar.gz::"http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Ftomoyo%2F49684%2Fccs-patch-1.8.2-20110626.tar.gz"
66 37_trace-add-trace-events-for-open-exec-an.patch
67 channel-negative-one-maxim.patch # hopefully fix "channel -1" aireplay-ng error
68 ${_pfpatchhome}${_pfpatchname}) # the -pf patchset
70 noextract=(ccs-patch-${_ccspatchver}.tar.gz)
72 cd ${srcdir}/linux-${_basekernel}
73 # This is for me, to test the PKGBUILD
74 if [[ $NOEXTRACT = "0" ]]; then
75 msg "Unpacking TOMOYO Linux 1.8.x into kernel source..."
76 tar -xzf "${srcdir}/ccs-patch-${_ccspatchver}.tar.gz"
77 msg "Patching source with TOMOYO Linux 1.8.x patch..."
78 patch -Np1 -i "${srcdir}/ccs-patch-2.6.39.diff"
79 msg "Patching source with ureadahead"
80 patch -Np1 -i ${srcdir}/37_trace-add-trace-events-for-open-exec-an.patch
83 msg "Unpacking bootsplash"
84 xz -dk ${srcdir}/../bootsplash-${_basekernel}.diff.xz
85 msg "Patching source with bootsplash"
86 patch -p1 < ${srcdir}/../bootsplash-${_basekernel}.diff
89 msg "Replacing penguins with arches"
90 bzip2 -dk ${startdir}/logo_linux_*.bz2
91 mv -f ${startdir}/logo_linux_*.p?m drivers/video/logo/
92 msg "Applying pf-kernel patch"
93 bzip2 -dc ${srcdir}/${_pfpatchname} | patch -Np1
94 msg "Applying aufs2 patches"
95 patch -Np1 < ${srcdir}/aufs2-base.patch
96 patch -Np1 < ${srcdir}/aufs2-kbuild.patch
97 patch -Np1 < ${srcdir}/aufs2-standalone.patch
98 bzip2 -dc ${srcdir}/aufs2.1-$_aufs2rel.patch.bz2 | patch -Np1
99 patch -Np1 < ${srcdir}/channel-negative-one-maxim.patch
100 if [ "$CARCH" = "x86_64" ]; then
101 cat ${startdir}/config.x86_64 >| .config
103 cat ${startdir}/config >| .config
106 sed -i "s/EXTRAVERSION = -${_pfrel}/EXTRAVERSION = ${_kernelname}/" Makefile
109 #----------------------------------------
110 if [[ "$_BATCH" != "y" ]]; then # for batch building
112 echo "======================================================="
113 msg "You might be prompted below for some config options"
114 echo "======================================================="
116 msg "Hit <Y> to use your running kernel's config"
117 echo " (needs IKCONFIG and IKCONFIG_PROC)"
118 msg "Hit <L> to run make localmodconfig"
119 msg "Hit <N> (or just <ENTER>) to build an all-inclusive kernel like stock -ARCH"
120 echo " (warning: it can take a looong time)"
124 if [[ "$answer" = "y" ]]; then
125 msg "running 'sudo modprobe configs'"
126 sudo modprobe configs
127 if [[ -s /proc/config.gz ]]; then
128 msg "Extracting config from /proc/config.gz..."
129 zcat /proc/config.gz >| ./.config
131 msg "You kernel was not compiled with IKCONFIG_PROC."
132 # Copied from kernel26-ck's PKGBUILD
133 msg "Attempting to run /usr/bin/reload_database from modprobe_db..."
134 if [ -e /usr/bin/reload_database ]; then
135 /usr/bin/reload_database
137 msg "Running make localmodconfig instead..."
138 chmod +x ./scripts/kconfig/streamline_config.pl
139 ./scripts/kconfig/streamline_config.pl >| config_strip
140 mv config_strip .config
142 elif [[ "$answer" = "l" ]]; then
143 # Copied from kernel26-ck's PKGBUILD
144 msg "Attempting to run /usr/bin/reload_database from modprobe_db..."
145 if [ -e /usr/bin/reload_database ]; then
146 /usr/bin/reload_database
148 msg "Running the functional equivalent of make localmodconfig now..."
149 chmod +x ./scripts/kconfig/streamline_config.pl
150 ./scripts/kconfig/streamline_config.pl >| config_strip
151 mv config_strip .config
152 msg "An error about ksource in line 118 blah blah is NORMAL as is one about nvidia config too!"
154 msg "Using stock ARCH kernel .config (with BFS, BFQ and TuxOnIce enabled)."
157 # Make some good use of MAKEFLAGS
158 # MAKEFLAGS=`grep -v '#' /etc/makepkg.conf | grep MAKEFLAGS= | sed s/MAKEFLAGS=// | sed s/\"//g`
161 # Option for make menuconfig
165 msg "Kernel configuration options before build:"
166 echo " <M> make menuconfig (console menu)"
167 echo " <N> make nconfig (newer alternative to menuconfig)"
168 echo " <G> make gconfig (needs gtk)"
169 echo " <X> make xconfig (needs qt)"
170 echo " <O> make oldconfig"
171 echo " <ENTER> to skip configuration and start compiling"
187 cp -v .config ${startdir}/config.local
188 CPU=`egrep "MK8=y|MCORE2=y|MPSC=y|MATOM=y|MPENTIUMII=y|MPENTIUMIII=y|MPENTIUMM=y|MPENTIUM4=y|MK7=y|CONFIG_GENERIC_CPU=y|M686=y" ./.config`
189 CPU=`sed -e "s/CONFIG_M\(.*\)=y/\1/" <<<$CPU`
190 CPU=`sed -e "s/CONFIG_GENERIC_CPU=y/GENERIC/" <<<$CPU`
191 CPU=`sed -e "s/^686$/GENERIC/" <<<$CPU`
192 cp -v .config ${startdir}/config.$CPU-$CARCH
193 fi # batch check ends here
194 #----------------------------------------
196 # Strip config of uneeded localversion
197 if [ "${_kernelname}" != "" ]; then
198 sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"\"|g" ./.config
202 # yes "" | make config
203 # Useful for repo maintainers.
211 cd ${srcdir}/linux-${_basekernel}
212 _kernver=$(make kernelrelease)
214 # work around the AUR parser
215 # This allows building cpu-optimized packages with according package names.
216 # Useful for repo maintainers.
217 CPU=`egrep "MK8=y|MCORE2=y|MPSC=y|MATOM=y|MPENTIUMII=y|MPENTIUMIII=y|MPENTIUMM=y|MPENTIUM4=y|MK7=y|CONFIG_GENERIC_CPU=y|M686=y" ./.config`
218 CPU=`sed -e "s/CONFIG_M\(.*\)=y/\1/" <<<$CPU`
220 # Note to me: DO NOT EVER REMOVE THIS. It's for the AUR PKGBUILD parser.
221 pkgname="${_pkgname}"
222 pkgdesc="Linux kernel with patches ureadhead, bfs, bfq,tomoyo 1.8.x, ccs-patch, aufs2 and squashfs-lzma, bootsplash (assembled from kernel26 -bfs,-ck,-pf, -ice) - Updated"
223 conflicts=(kernel26-pf-core2 kernel26-pf-k8 kernel26-pf-psc kernel26-pf-atom kernel26-pf-k7 kernel26-pf-p3 kernel26-pf-pm kernel26-pf-p4)
227 if [[ "$pkgname" != "$_pkgname" ]]; then
228 conflicts=('kernel26-pf')
232 echo "======================================="
233 msg "The package will be named ${pkgname}"
235 echo "======================================="
240 mkdir -p ${pkgdir}/{lib/modules,/lib/firmware,boot}
241 make INSTALL_MOD_PATH=${pkgdir} modules_install
243 cp System.map ${pkgdir}/boot/System.map26-patched
244 cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26-patched
247 install -m644 -D vmlinux ${pkgdir}/usr/src/linux-${_kernver}/vmlinux
249 # install fallback mkinitcpio.conf file and preset file for kernel
250 # make sure ${_pkgname} is used for the mkinitcpio process
251 install -m644 -D ${srcdir}/kernel26.preset ${pkgdir}/etc/mkinitcpio.d/${_pkgname}.preset
253 # set correct depmod command for install
255 -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
256 -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
257 -i ${startdir}/kernel26.install
259 -e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" \
260 -e "s|default_image=.*|default_image=\"/boot/${_pkgname}.img\"|g" \
261 -e "s|fallback_image=.*|fallback_image=\"/boot/${_pkgname}-fallback.img\"|g" \
262 -i ${pkgdir}/etc/mkinitcpio.d/${_pkgname}.preset
264 echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${pkgdir}/etc/mkinitcpio.d/${_pkgname}.kver
266 # remove build and source links
267 rm -f ${pkgdir}/lib/modules/${_kernver}/{source,build}
268 cd ${pkgdir}/lib/modules/${_kernver}
269 ln -sf ../../../usr/src/linux-${_kernver} build
270 # remove the firmware
271 rm -rf ${pkgdir}/lib/firmware
273 ### package_kernel26-headers
274 mkdir -p ${pkgdir}/lib/modules/${_kernver}
275 cd ${pkgdir}/lib/modules/${_kernver}
276 ln -sf ../../../usr/src/linux-${_kernver} build
277 cd ${srcdir}/linux-$_basekernel
278 install -D -m644 Makefile \
279 ${pkgdir}/usr/src/linux-${_kernver}/Makefile
280 install -D -m644 kernel/Makefile \
281 ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile
282 install -D -m644 .config \
283 ${pkgdir}/usr/src/linux-${_kernver}/.config
284 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include
286 for i in acpi asm-generic config crypto drm generated linux math-emu \
287 media net pcmcia scsi sound trace video xen; do
288 cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/
291 # copy arch includes for external modules
292 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
293 cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/
295 # copy files necessary for later builds, like nvidia and vmware
296 cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}
297 cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}
298 # fix permissions on scripts dir
299 chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts
300 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions
302 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel
304 cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
305 if [ "$CARCH" = "i686" ]; then
306 cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
308 cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/
310 # add headers for lirc package
311 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video
312 cp drivers/media/video/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/
313 for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102; do
314 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
315 cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
317 # add docbook makefile
318 install -D -m644 Documentation/DocBook/Makefile \
319 ${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile
321 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
322 cp drivers/md/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
324 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux
325 cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/
326 # add wireless headers
327 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
328 cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
329 # add dvb headers for external modules
331 # http://bugs.archlinux.org/task/9912
332 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core
333 cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/
334 # add dvb headers for external modules
336 # http://bugs.archlinux.org/task/11194
337 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
338 [[ -e include/config/dvb/ ]] && cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
339 # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
341 # http://bugs.archlinux.org/task/13146
342 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
343 cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
344 cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
347 # http://bugs.archlinux.org/task/20402
348 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb
349 cp drivers/media/dvb/dvb-usb/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb/
350 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends
351 cp drivers/media/dvb/frontends/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
352 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners
353 cp drivers/media/common/tuners/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners/
354 # add xfs and shmem for aufs building
355 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs
356 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm
357 cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h
358 # copy in Kconfig files
359 for i in `find . -name "Kconfig*"`; do
360 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`
361 cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i
364 chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
365 find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
366 # strip scripts directory
367 find ${pkgdir}/usr/src/linux-${_kernver}/scripts -type f -perm -u+w 2>/dev/null | while read binary ; do
368 case "$(file -bi "$binary")" in
369 *application/x-sharedlib*) # Libraries (.so)
370 /usr/bin/strip $STRIP_SHARED "$binary";;
371 *application/x-archive*) # Libraries (.a)
372 /usr/bin/strip $STRIP_STATIC "$binary";;
373 *application/x-executable*) # Binaries
374 /usr/bin/strip $STRIP_BINARIES "$binary";;
377 # remove unneeded architectures
378 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}
380 # gzip -9 all modules to save 100MB of space
381 msg "Compressing modules..."
382 find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
385 # makepkg -g >>PKGBUILD
386 sha256sums=('584d17f2a3ee18a9501d7ff36907639e538cfdba4529978b8550c461d45c61f6'
387 '9da62023a56218f0bae091699ff34906017f3ccf364c33405210b585a622531f'
388 '25f6bef4a9a940b8ce3baba58c7f09049db229e5c7ed046b24c3ba12347d0710'
389 '70d14bd2c8afdc2344d958bf0ffc11a637ac1020bd4f44cec58104529c4446df'
390 '03ed4eb4a35d42ae6beaaa5e6fdbada4244ed6c343944bba6462defaa6fed0bf'
391 '51ea665cfec42d9f9c7796af2b060b7edbdeb367e42811f8c02667ad729f6b19'
392 '9e1e81d80afac6f316e53947e1b081017090081cd30e6c4c473420b77af4b52b'
393 'e59b02e433e3b55ba00c196b53c723f6a4307f7eff903d2fb82bbcdaea81f188'
394 'cb0cd7c00a5def7ef518144fa86ebd84f59ca2c47f007b418f768acde4b887fd'
395 '0405c168e067a2b3668e979a62d21ae9dd0076b590b8ba045c13bb40c3da9db0'
396 '1913bee0c202f726910158ab2e0c0761b49e553d145f60f9ed8fb50d808b6aa2'
397 '05f722aa827dc7188c6422c14424e6d51e8063af0cfe63f821a37fdf9799ffc3'
398 'd4b307601a978109301b4ad75f952fb52b69902e54b2a56c5dd0969af4d96b77'
399 'f444da90f41d2a200f0c3f1b4ee281186e0ffc14a1b00e4935dec2d50db08e21'
400 'fdd36c328b0f52e86842a9f1570acd2b1a5bce82b49dc3a50e8f33e674cb7077'
401 '19f7fc0753636c32026e444e23bd101bd21cfeb59661284678bf157dc35212f2'
402 'ba150b5216dd4f818583efd65d093cca27d10c8fb5a30340589cb73567a9b215')