You are not logged in.
Pages: 1
Topic closed
I'm working on kernel26-icc, it's the kernel26 but compiled with Intel's compiler. Can't seem to upload it to AUR ("Invalid name: only lowercase letters are allowed.")
So far I've this:
PKGBUILD
# Maintainer: Mathias Burén <mathias.buren@gmail.com>
pkgname=('kernel26-icc' 'kernel26-icc-firmware' 'kernel26-icc-headers') # Build icc kernel
_kernelname=${pkgname#kernel26-icc}
_basekernel=2.6.33
pkgver=${_basekernel}
pkgrel=1
arch=(x86_64)
license=('GPL2')
url="http://www.linuxdna.com/"
source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2
# the main kernel config files
config.x86_64
# standard config files for mkinitcpio ramdisk
kernel26-icc.preset
http://www.linuxdna.com/dna-2.6.33-intel64.patch)
makedepends=('icc')
md5sums=('c3883760b18d50e8d78819c54d579b00'
'5c91374d56f115ba4324978d5b002711'
'a4fd3c59751194bc118c70d1348436ab'
'a307beb562eb7e68a6f3e2fb5fc216a3')
build() {
cd ${srcdir}/linux-$_basekernel
cat ../config.x86_64 >./.config
patch -p1 < ../dna-2.6.33-intel64.patch || return 1
if [ "${_kernelname}" != "" ]; then
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
fi
# get kernel version
make prepare
# 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
}
package_kernel26-icc() {
pkgdesc="The Linux Kernel and modules built with ICC"
backup=(etc/mkinitcpio.d/${pkgname}.preset)
depends=('coreutils' 'kernel26-icc-firmware>=2.6.33' 'module-init-tools' 'mkinitcpio>=0.5.20')
install=kernel26-icc.install
optdepends=('crda: to set the correct wireless channels of your country')
KARCH=x86
cd ${srcdir}/linux-$_basekernel
# get kernel version
_kernver="$(make kernelrelease)"
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}
# # add vmlinux
install -m644 -D vmlinux ${pkgdir}/usr/src/linux-${_kernver}/vmlinux
# 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}'" > ${pkgdir}/etc/mkinitcpio.d/${pkgname}.kver
# remove build and source links
rm -f ${pkgdir}/lib/modules/${_kernver}/{source,build}
# remove the firmware
rm -rf ${pkgdir}/lib/firmware
}
package_kernel26-icc-headers() {
pkgdesc="Header files and scripts for building modules for kernel26-icc"
mkdir -p ${pkgdir}/lib/modules/${_kernver}
cd ${pkgdir}/lib/modules/${_kernver}
ln -sf ../../../usr/src/linux-${_kernver} build
cd ${srcdir}/linux-$_basekernel
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:
# http://bugs.archlinux.org/task/9912
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:
# http://bugs.archlinux.org/task/11194
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 http://mcentral.de/hg/~mrec/em28xx-new
# in reference to:
# http://bugs.archlinux.org/task/13146
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:
# http://bugs.archlinux.org/task/14568
cp -a include/drm $pkgdir/usr/src/linux-${_kernver}/include/
# add headers for broadcom wl
# in reference to:
# http://bugs.archlinux.org/task/14568
cp -a include/trace $pkgdir/usr/src/linux-${_kernver}/include/
# 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
# add header for aufs2-util
cp -a ${srcdir}/linux-$_basekernel/include/asm-generic/bitsperlong.h ${pkgdir}/usr/src/linux-${_kernver}/include/asm/
chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
# 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}
}
package_kernel26-icc-firmware() {
pkgdesc="The included firmware files of kernel26-icc"
cd ${srcdir}/linux-$_basekernel
make firmware || return 1
make INSTALL_MOD_PATH=${pkgdir} firmware_install || return 1
}kernel26-icc.preset
# mkinitcpio preset file for kernel26-icc
########################################
# DO NOT EDIT THIS LINE:
source /etc/mkinitcpio.d/kernel26-icc.kver
########################################
ALL_config="/etc/mkinitcpio.conf"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/kernel26-icc.img"
#default_options=""
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/kernel26-icc-fallback.img"
fallback_options="-S autodetect"kernel26-icc.install
# arg 1: the new package version
# arg 2: the old package version
KERNEL_NAME=-icc
KERNEL_VERSION=2.6.33-icc
post_install () {
# updating module dependencies
echo ">>> Updating module dependencies. Please wait ..."
depmod $KERNEL_VERSION
# generate init ramdisks
echo ">>> MKINITCPIO SETUP"
echo ">>> ----------------"
echo ">>> If you use LVM2, Encrypted root or software RAID,"
echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
echo ">>> More information about mkinitcpio setup can be found here:"
echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"
echo ""
echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
/sbin/mkinitcpio -p kernel26${KERNEL_NAME}
}
post_upgrade() {
pacman -Q grub &>/dev/null
hasgrub=$?
pacman -Q grub2 &>/dev/null
hasgrub2=$?
pacman -Q lilo &>/dev/null
haslilo=$?
# reminder notices
if [ $haslilo -eq 0 ]; then
echo ">>>"
if [ $hasgrub -eq 0 -o $hasgrub2 -eq 0 ]; then
echo ">>> If you use the LILO bootloader, you should run 'lilo' before rebooting."
else
echo ">>> You appear to be using the LILO bootloader. You should run"
echo ">>> 'lilo' before rebooting."
fi
echo ">>>"
fi
if grep "^[^#]*/boot" /etc/fstab 2>&1 >/dev/null; then
if ! grep "/boot" /etc/mtab 2>&1 >/dev/null; then
echo "WARNING: /boot appears to be a seperate partition but is not mounted"
echo " This is most likely not what you want. Please mount your /boot"
echo " partition and reinstall the kernel unless you are sure this is OK"
fi
fi
if [ "`vercmp $2 2.6.13`" -lt 0 ]; then
# important upgrade notice
echo ">>>"
echo ">>> IMPORTANT KERNEL UPGRADE NOTICE"
echo ">>> -------------------------------"
echo ">>> As of kernel 2.6.13, DevFS is NO LONGER AVAILABLE!"
echo ">>> If you still use DevFS, please make the transition to uDev before"
echo ">>> rebooting. If you really need to stay with DevFS for some reason,"
echo ">>> then you can manually downgrade to an older version:"
echo ">>>"
echo ">>> # pacman -U http://archlinux.org/~judd/kernel/kernel26-scsi-2.6.12.2-1.pkg.tar.gz"
echo ">>>"
echo ">>> If you choose to downgrade, don't forget to add kernel26-scsi to your"
echo ">>> IgnorePkg list in /etc/pacman.conf"
echo ">>>"
echo ">>> (NOTE: The following portion applies to uDev users as well!)"
echo ">>>"
echo ">>> If you use any DevFS paths in your GRUB menu.lst, then you will not"
echo ">>> be able to boot! Change your root= parameter to use the classic"
echo ">>> naming scheme."
echo ">>>"
echo ">>> EXAMPLES:"
echo ">>> - change root=/dev/discs/disc0/part3 to root=/dev/sda3"
echo ">>> - change root=/dev/md/0 to root=/dev/md0"
echo ">>>"
fi
# generate new init ramdisk
if [ "`vercmp $2 2.6.18`" -lt 0 ]; then
echo ">>> --------------------------------------------------------------"
echo ">>> | WARNING: |"
echo ">>> |mkinitrd is not supported anymore in kernel >=2.6.18 series!|"
echo ">>> | Please change to Mkinitcpio setup. |"
echo ">>> --------------------------------------------------------------"
echo ">>>"
fi
# updating module dependencies
echo ">>> Updating module dependencies. Please wait ..."
depmod $KERNEL_VERSION
echo ">>> MKINITCPIO SETUP"
echo ">>> ----------------"
if [ "`vercmp $2 2.6.18`" -lt 0 ]; then
echo ">>> Please change your bootloader config files:"
echo ">>> Grub: /boot/grub/menu.lst | Lilo: /etc/lilo.conf"
echo "------------------------------------------------"
echo "| - initrd26.img to kernel26${KERNEL_NAME}.img |"
echo "| - initrd26-full.img to kernel26${KERNEL_NAME}-fallback.img |"
echo "------------------------------------------------"
fi
if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
echo ""
echo ">>> New PATA/IDE subsystem - EXPERIMENTAL"
echo ">>> ----------"
echo ">>> To use the new pata drivers, change the 'ide' hook "
echo ">>> to 'pata' in /etc/mkinicpio.conf HOOKS="
echo ">>> The new system changes: /dev/hd? to /dev/sd?"
echo ">>> Don't forget to modify GRUB, LILO and fstab to the"
echo ">>> new naming system. "
echo ">>> eg: hda3 --> sda3, hdc8 --> sdc8"
echo ""
echo ">>> piix/ata_piix (Intel chipsets) - IMPORTANT"
echo "----------"
echo ">>> If you have enabled ide/pata/sata HOOKs in /etc/mkinitcpio.conf"
echo ">>> the 'ata_piix' module will be used."
echo ">>> This may cause your devices to shift names, eg:"
echo ">>> - IDE: devices from hd? to sd?"
echo ">>> - SATA: sda might shift to sdc if you have 2 other disks on a PIIX IDE port."
echo ">>> To check if this will affect you, check 'mkinitcpio -M' for piix/ata_piix"
echo ""
fi
echo ">>> If you use LVM2, Encrypted root or software RAID,"
echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
echo ">>> More information about mkinitcpio setup can be found here:"
echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"
echo ""
echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
/sbin/mkinitcpio -p kernel26${KERNEL_NAME} -m "ATTENTION:\nIf you get a kernel panic below
and are using an Intel chipset, append 'earlymodules=piix' to the
kernel commandline"
else
/sbin/mkinitcpio -p kernel26${KERNEL_NAME}
fi
if [ "`vercmp $2 2.6.21`" -lt 0 ]; then
echo ""
echo "Important ACPI Information:"
echo ">>> Since 2.6.20.7 all possible ACPI parts are modularized."
echo ">>> The modules are located at:"
echo ">>> /lib/modules/$(uname -r)/kernel/drivers/acpi"
echo ">>> For more information about ACPI modules check this wiki page:"
echo ">>> 'http://wiki.archlinux.org/index.php/ACPI_modules'"
fi
}
post_remove() {
rm -f /boot/kernel26${KERNEL_NAME}.img
rm -f /boot/kernel26${KERNEL_NAME}-fallback.img
}Then there's of course the config, it's based on kernel26 at the moment,.
I'm building it now, to test. I had to install icc manually because the AUR package for icc didn't work for me. I had to install icc manually (run the installer), but that wasn't enough. Before makepkg, you have to add the icc to $PATH e.g.
PATH=$PATH:/opt/intel/Compiler/11.1/064/bin/intel64and execute iccvars_intel64.sh which is in that folder.
Last edited by Fackamato (2010-02-25 23:43:38)
Offline
Can't seem to upload it to AUR ("Invalid name: only lowercase letters are allowed.")
That's because the AUR does not support split PKGBUILDs.
Offline
This seems good! I read somewhere that the performance is so much better than compiling with GCC.
Last edited by sironitomas (2010-02-25 20:35:59)
Offline
This seems good! I read somewhere that the performance is so much better than compiling with GCC.
If it would work... it doesn't compile for me. It stopped at snd-i8x0 I think. Might retry later...
Offline
on 32-bit Arch it works nicely.
I patched vanilla sources only with bfs 314 though. I did not use DNA patch as it seems to be generated for 64-bit OS.
Also generating icc package from AUR required only minor changes to the PKGBUILD script and it worked well. I used the lates icc version which is 11.1.069-3
Maybe I will try to get zen compiled with icc.
I used icc for compiling kernels some time ago, but then I completely forgot about this. Thanks for reminding ![]()
Offline
So there is a significant performance gain with ICC? Compilation time wise or?
Offline
So there is a significant performance gain with ICC? Compilation time wise or?
I tried compiling again with a few tweaks, and everything compiles fine until it's actually making the bzImage. It complains about the compiler being 64-bit despite trying to compile a 32-bit binary, or something. I tried installing the 32-bit ICC but that didn't help (segfault
).
Compile time wise it's slower than gcc, but the kernel should perform faster. If you check out the website (link in 1st post) you'll find benchmarks.
If anyone manages to compile this on x86_64, let me know!
Offline
So there is a significant performance gain with ICC? Compilation time wise or?
icc kernel compiles in similar time as gcc kernel, or if there any differences these may be negligible. To be honest I was not really interested in compiling times (was doing somethig else as it takes ~12 min on my system to finish kernel compilation), but rather with overall kernel performance. This is not the same as OS performance, but I am planning to compile firefox with icc and maybe some other stuff (if I am bored enough).
If you have 32-bit OS (I have no idea how it will work on 64-bit), try it. I can't post PKGBUILD for 32-bit icc kernel because I don't use PKGBUILD for kernels or nvidia as I have found it limiting/cumbersome/unnecessary (while PKGBUILDs work great for anything else on Arch).
The only part really annoying is intel server speed. Downloading icc sources (710MB for 32-bit only) tahes two hours. If you try to get 32/64bit sources even longer (1GB download).
32-bit icc PKGBUILD package requires only one modification related to Release Notes otherwise makepkg will fail. Once installed export icc path, edit kernel Makefile and change one line related to compiler: change gcc to icc. You can also add some compiling optimizations.
Pretty easy if you did compile kernel before.
note added:
actually combination of icc and zen seems to have nice effect on desktop responsiveness (this is 2.6.33)
Last edited by broch (2010-02-26 19:54:57)
Offline
I've had some success, it seems to build all packages. I haven't tried booting them yet though.
Files available here.
If it doesn't compile, try to disable all the modules you don't really need. icc seems picky about some stuff.
edit: Server down, I'll upload the files elsewhere when I get home.
I can make it compile, but it panics at boot right away. I'm going to try the patch mentioned here: http://groups.google.com/group/linuxdna … 72e65ac1a6
Last edited by Fackamato (2010-03-02 11:15:24)
Offline
32-bit icc PKGBUILD package requires only one modification related to Release Notes otherwise makepkg will fail. Once installed export icc path, edit kernel Makefile and change one line related to compiler: change gcc to icc. You can also add some compiling optimizations.
Pretty easy if you did compile kernel before.
note added:
actually combination of icc and zen seems to have nice effect on desktop responsiveness (this is 2.6.33)
I'd like to try that, too.
Perhaps a stupid question, but where exactly did you change the compiler to ICC? Did you only change HOSTCC, HOSTCXX and CC in src/linux-2.6.33/Makefile or also in other places? And when (e.g., during 'make menuconfig')? I looked for this in the forums and wiki, but couldn't find an exact clue (and I don't want to bork the kernel by still compiling it half with GCC). Is it also possible to declare a C compiler in PKGBUILD?
By the way, would using ICC give a better performance on an Intel Atom N270 (1.6 GHz) processor than using GCC 4.5 snapshot with -march=atom?
Offline
yes, I modified kernel Makefile:
HOSTCC = icc
HOSTCXX = icpc
HOSTCFLAGS = -Wall -w -Wstrict-prototypes -O3 -fomit-frame-pointer
HOSTCFLAGS = -w -O3 -fomit-frame-pointer
HOSTCXXFLAGS = -O3
the above is a first step.
If this will work, take look at http://www.linuxdna.com/dna-2.6.33-rc7- … 64-3.patch (64-bit)
and also
http://www.linuxdna.com/dna-32bit-icc-2.6.30.patch
I don't have any experience with atom. Sorry.
I hope this will help
Offline
This is very interesting! I think I'm going to reinstall the Intel C Compiler and give this a spin.. Who knows? Maybe I'll make a kernel26-ck-icc PKGBUILD for the AUR too! ![]()
(Unless someone beats me to it!)
Last edited by MP2E (2010-03-08 22:06:34)
17:23 < ConSiGno> yeah baby I release the source code with your mom every night
17:24 < ConSiGno> you could call them nightly builds if you know what I mean
Offline
This is very interesting! I think I'm going to reinstall the Intel C Compiler and give this a spin.. Who knows? Maybe I'll make a kernel26-ck-icc PKGBUILD for the AUR too!
(Unless someone beats me to it!)
The ck patch applies fine, and -icc-ck boots too. My screen goes blank (as in turned off) when the Arch init begins though, haven't messed with it since.
Offline
Thanks, broch! You changed CC in the root linux-2.6.33/Makefile, too, didn't you?
And of course I could have looked at the LinuxDNA patchsets. I'll compare the Atom 64-bit settings with the 32-bit ones of the older kernel and create my own patch (which I will probably publish somewhere).
The only thing I don't know for sure is the following: I want a separate kernel image, alongside the default zen package, with its own kernel image and module directory. Do I need to change all instances of "kernel26-zen" to "kernel26-zen-gcc4.5", including file names like kernel26-zen-gcc4.5, or is it sufficient to change CONFIG_LOCALVERSION in config to something like "-ZEN-gcc4.5"?
EDIT: I think the answer to my last question can be found in the Wiki article [wiki]Custom Kernel Compilation with ABS[/wiki].
EDIT 2: I shouldn't have bluntly replaced several occurences of "kernel26-zen" with "kernel26-zen-gcc4.5", I get lots of errors now when installing the kernel using pacman -U (more or less caused because mkinitcpio is automatically called with "-k 2.6.33-ZEN" instead of "-k 2.6.33-ZEN-gcc4.5"). For the record, I wanted to test the zen kernel with GCC 4.5 first.
Last edited by Marcel- (2010-03-09 01:57:02)
Offline
@Marcel- then check for the .install and the .preset files and change the occurrences of "2.6.33-ZEN" to "2.6.33-ZEN-gcc4.5"
If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is.
Simplicity is the ultimate sophistication.
Offline
Thanks for this tip, but I remember I already did that, but there were also 2.6.33-ZEN directories installed alongside 2.6.33-ZEN-gcc4.5 dirs, e.g., in /usr/src and /lib/modules.
But I'm fine with it now, I just use the default dirs now of the ZEN-git package.
Offline
I have got icc-dna kernel (32-bit) working:
I patched vanilla 2.6.33.2 with:
patch-2.6.33-ck1
dna-2.6.33-intel32-1.patch
then I run:
source /opt/intel/Compiler/11.1/069/bin/iccvars.sh ia32
followed by:
make AR=xiar LD=xild && make AR=xiar LD=xild modules_install
after kernel build/installation, I also installed nvidia driver (works if you "cheat" nvidia installer).
Using it right now.
One thing that does not work/compile
iwl3945 either as module or build-in
compilation fails on iwl-scan.o
but aside from this, everything is running smoothly.
so currently I have kernel and firefox compiled with icc.
Last edited by broch (2010-04-13 14:30:05)
Offline
@broch Is there any notable performance improvement?
Offline
yes... just reached warp speed ![]()
some things are running "better" but in terms of numbers I only noticed that icc kernel uses cache more than gcc, so "improvement" may be related to memory usage (if true).
If I will have time I will run some heavy stuff over the weekend, then I will know how much (if at all) better icc kernel is.
Offline
Ok... if you reached warp speed, beware of the blackouts that might happen! ![]()
Offline
sorted out wireless module compilation thanks to LinuxDNA maintainers.
Now both 2.6.33.2-ck1 and 2.6.34-rc5-git1 are compiled with ICC.
Everything is working very well. ICC seems to be a good thing for desktops as even under heavy load system is responsive and smooth.
Boot time is obviously without any changes (in the case that someone would expect any).
It looks like this is a keeper (still being cautious in terms of stability though).
Offline
@broch: Do you still use a kernel compiled with ICC?
If so, what are your experiences on the long term, especially regarding stability?
Offline
@Marcel
last one I used was 2.6.34-rc5
2.6.34.1 panics and never boots.
well in terms of stability, it works without any issues (once it boots of course). I never tried to keep it on line longer than 2-3 weeks (personal laptop) because usually within 2-3 weeks I was testing new kernel or something else that required re-boot.
Speed: as published there are things that will work faster on icc but for day-by-day usage I don't see much of boost from icc.
My feeling is that as in the case of firefox-pgo this is mostly placebo effect and not real speed improvements.
hope this answers your questions. If you have something more specific let me know.
broch
Offline
Is this package available in AUR? I could not find it...
My AUR packages
Any package of mine is up for grabs. If you think you could mantain it better - just contact me!
Offline
Offline
Pages: 1
Topic closed