Another day, another debian headache

The case is this, a debian server running Debian 4.0 etch has it’s motherboard broken. We send it for replacement but they don’t have another of the same model to send us so they send us a shiny new model. The new model houses a P35 chipset. The latest Debian 4.0 etch kernel is 2.6.18 which does not support the ICH9 chipset that the motherboard has. The result ? The machine can’t find any sata discs attached to it and it can’t boot. Wonderfull!

Asking around for a possible solution I got two types of answers: a) build a newer kernel on my own b) upgrade the whole system to testing (lenny) instead of stable (etch).
As far as solution (a), I was not willing to build a kernel of my own. It’s not that I can’t, it’s the fact that I find it ridiculous for a debian system to have to build a kernel of my own just like I did when I was using slackware. It’s debian, the distribution thought to be the most stable and well polished and and and…there must be an automated way to run a recent proper kernel.
Regarding solution (b), I was not willing to de-stabilize my system. I want and need to run stable versions of services on that server. A lot of people told me that “testing” is very stable. If debian testing is stable enough then they must mark it as stable and push the previous “stable” into the void. While it’s named “testing” I don’t trust it.

The solve the problem, I booted with a beta of the next version of iloog, mounted the debian partition and chrooted to it. Following some help I was given on IRC I added the testing sources to /etc/apt/sources.list:
deb http://ftp.ntua.gr/pub/linux/debian/ stable main contrib non-free
deb-src http://ftp.ntua.gr/pub/linux/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib
deb-src http://security.debian.org/ stable/updates main contrib
deb http://ftp.ntua.gr/pub/linux/debian/ testing main contrib non-free
deb-src http://ftp.ntua.gr/pub/linux/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contrib

Reading some stuff about “apt pinning” I added the following in /etc/apt/preferences:
Package: *
Pin: release a=stable
Pin-Priority: 700
---blank line---
Package: *
Pin: release a=testing
Pin-Priority: 650

(that —blank line— mark should really be an empty line. due to theming problems with this blog I can’t make it appear properly inside <code> tags)

Then I issued an: aptitude update
Then I got errors like:

Dynamic MMap ran out of room
Error occurred while processing vdr-plugin-skinenigmang (NewVersion1)
Problem with MergeList /var/lib/apt/lists/ftp.ntua.gr_pub_linux_debian_dists_lenny_main_binary-i386_Packages
The package lists or status file could not be parsed or opened.
Couldn’t rebuild package cache

The solution to those were to create another file named /etc/apt/apt.conf with the following inside it:
APT::Cache-Limit "15388608";

Running aptitude update again was fine. Then an apt-cache search linux-image showed me the list of available kernels. I now had a 2.6.24 kernel available. Finally an aptitude install linux-image-2.6.24-1-686 installed the new kernel.
I had to edit the /etc/grub/menu.conf a bit for it to play nicely (due to the chrooting I guess) but afterwards the server booted just fine.

I don’t know whether what I did is good or bad for a debian system. The fact is that it works and aptitude update does not want to upgrade any of my packages to the testing version.

<rant>
Please debian maintainers, if you have finished patching your machines due to the recent openssl vulnerability you created, rename your “stable” release to “ancient” and “testing” to “stable” so we have less trouble running your distro on new hardware. Thanks in advance.
</rant>

pcmanfm 0.4.1.1 ebuild

A new pcmanfm version (0.4.1.1) is out and since there’s no ebuild yet available I made one by modifying a bit the one I found about version 0.3.2.2 on sunrise overlay. I’ve included a patch I found about enabling/disabling deletion confirmations.

Downloads:
pcmanfm 0.4.1.1 ebuild
pcmanfm 0.4.1.1-r1 ebuild
confirm_delete.patch

tested on x86 and ppc (thanks to comzeradd)

enjoy!

P.S. Looks like I didn’t search that well on bugzilla, there are other ebuilds there too: http://bugs.gentoo.org/show_bug.cgi?id=121902

Fotox 42 ebuild

Since the newest available fotox ebuild I found was for version 17, I decided to change it for version 42 which is currently the latest and greatest.

To compile and install it using portage you also need a minor patch I made for it’s build system.
fotox-42.ebuild
fotox-build.patch

kernel fun

I know this has been posted a zillion times again and again…but it’s still a lot of fun:

Swearing? NEVER!
# cd /usr/src/linux; egrep -ir "( fuck)|( shit)|( crap)" *
arch/m68k/mac/config.c: * have to disable interrupts for this. Our IRQ handlers will crap
arch/sparc/mm/srmmu.c: /* Clear any crap from the cache or else... */
arch/sparc/mm/srmmu.c: * this shit off... nice job Fujitsu.
arch/sparc/mm/srmmu.c: /* Clear any crap from the cache or else... */
arch/sparc/lib/checksum.S: * give up. I'm serious, I am going to kick the living shit
arch/sparc/kernel/ptrace.c:/* Fuck me gently with a chainsaw... */
arch/sparc/kernel/process.c: /* fuck me plenty */
arch/sparc/kernel/head.S: /* XXX Fucking Cypress... */
arch/sparc/kernel/sunos_ioctl.c: /* Binary compatibility is good American knowhow fuckin' up. */
arch/sparc/kernel/ebus.c: * Here we list PROMs and systems that are known to supply crap as IRQ numbers.
arch/sparc/kernel/pcic.c: * to shit into regions like that.
arch/um/drivers/daemon_kern.c: /* We will free this pointer. If it contains crap we're burned. */
arch/frv/mb93090-mb00/pci-frv.c: * timer as certain crappy BIOSes forget to set it properly.
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/fixup-ip32.c: * right if there exists such a broken piece of crap.
arch/mips/pci/pci.c: * timer as certain crappy BIOSes forget to set it properly.
arch/mips/sgi-ip22/ip22-setup.c: * fucking with the memory controller because it needs to know the
arch/mips/kernel/irixelf.c:#if 0 /* XXX No fucking way dude... */
arch/mips/kernel/genex.S: * Big shit, we now may have two dirty primary cache lines for the same
arch/mips/kernel/vmlinux.lds.S: /* ABI crap starts here */
arch/mips/kernel/traps.c: * (Duh, crap, there is someone with a triple R6k machine)
arch/mips/kernel/irixioctl.c: * irixioctl.c: A fucking mess...
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1064 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1065 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1066 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1067 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1068 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1069 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1070 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1071 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1072 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1073 XXX AFS shit DC*/
arch/mips/kernel/sysirix.c:/* 2,191 lines of complete and utter shit coming up... */
arch/mips/kernel/irixsig.c: /* XXX do sigstack crapola here... XXX */
arch/v850/Kconfig:# Turn off some random 386 crap that can affect device config
arch/v850/Kconfig: # The crappy-ass zone allocator requires that the start of allocatable
arch/sparc64/mm/ultra.S: * in Microelectronics who refused to fix this shit.
arch/sparc64/solaris/socksys.c: * No shit. WTF is it supposed to do, anyway?
arch/sparc64/kernel/viohs.c: * to be aware of this crap.
arch/sparc64/kernel/iommu_common.c: printk("verify_sglist: Crap, messed up mappings, dumping, iodma at ");
arch/sparc64/kernel/traps.c: /* Shit... */
arch/sparc64/kernel/binfmt_aout32.c: /* Fuck me plenty... */
arch/arm/common/it8152.c: * timer as we don't have even crappy BIOSes to set it properly.
arch/arm/kernel/head.S: * We're trying to keep crap to a minimum; DO NOT add any machine specific
arch/arm/kernel/head.S: * crap here - that's what the boot loader (or in extreme, well justified
arch/cris/arch-v32/drivers/gpio.c: * Removed old crap.
arch/ppc/8xx_io/commproc.c: * XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/ppc/syslib/cpm2_common.c: /* XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/ppc/syslib/ppc405_pci.c: * the kernel try to remap our BAR #1 and fuck up bus
arch/x86/pci/pci.h: u32 miniport_data; /* Crap */
arch/x86/pci/i386.c: * timer as certain crappy BIOSes forget to set it properly.
arch/x86/mach-visws/setup.c: * What lunatic came up with this shit?
arch/x86/mach-voyager/voyager_smp.c: * FIXME: This algorithm is total crap when mixed with SMP
arch/x86/kernel/cpu/cpufreq/powernow-k7.c: * Some Athlon laptops have really fucked PST tables.
arch/x86/kernel/cpu/mcheck/mce_64.c: by default and leave crap in there. Don't log. */
arch/x86/kernel/cpu/mtrr/generic.c:/* Some BIOS's are fucked and don't set all MTRRs the same! */
arch/parisc/kernel/sys_parisc.c:/* Fucking broken ABI */
arch/powerpc/sysdev/commproc.c: * XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/powerpc/sysdev/cpm2_common.c: /* XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/powerpc/platforms/cell/spider-pic.c: * crap and we don't know on which BE iic interrupt we are hooked on at
arch/powerpc/platforms/powermac/smp.c: * ideally, all that crap will be done in prom.c and the CPU left
Documentation/DocBook/kernel-hacking.tmpl: * give up. I'm serious, I am going to kick the living shit
Documentation/DocBook/kernel-locking.tmpl: If you don't see why, please stay the fuck away from my code.
Documentation/scsi/ibmmca.txt: backwards. This confuses the crap out of those heathens who've
Documentation/sound/alsa/ALSA-Configuration.txt: Note: This driver is really crappy. It's a porting from the
Documentation/ManagementStyle:a while, and you'll feel cleansed. Just don't crap too close to home.
drivers/pci/pci-driver.c: * horrible the crap we have to deal with is when we are awake...
drivers/ide/pci/cmd640.c: * These chips are basically fucked by design, and getting this driver
drivers/ide/ide-probe.c: * have the same drive viewed twice. This occurs with crap CF adapters
drivers/ide/ide-io.c: * remove all the ifdef PCI crap
drivers/lguest/lg.h: * There are many cases where the Guest can do something invalid, like pass crap
drivers/char/ip2/i2ellis.c:// !!! Not Used, this is DOS crap, some of you young folks may be interested in
drivers/char/agp/amd64-agp.c: /* Northbridge seems to contain crap. Try the AGP bridge. */
drivers/hwmon/abituguru.c: anyways. If we read sensors/pwms not there we'll just read crap
drivers/video/sstfb.c: and as reading fbinit 6 will return crap (see FBIINIT6_DEFAULT) we just
drivers/video/aty/radeon_pm.c: /* Hrm... same shit, X doesn't do that but I have to */
drivers/video/sis/init301.c: /* This is a piece of typical SiS crap: They code the OEM LCD
drivers/scsi/NCR53C9x.c: * how bad the target and/or ESP fucks things up.
drivers/scsi/NCR53C9x.c: /* shit */
drivers/scsi/NCR53C9x.c: /* Be careful, we could really get fucked during synchronous
drivers/scsi/NCR53C9x.c: /* Crapola, mark it as a slowcmd
drivers/scsi/NCR53C9x.c: /* shit */
drivers/scsi/aha1542.c: * the strategy handler takes care of that crap.
drivers/scsi/aha1542.c: * the strategy handler takes care of that crap.
drivers/scsi/dc395x.c: /* KG: Can this prevent crap sense data ? */
drivers/scsi/scsi_tgt_lib.c:/* TODO: test this crap and replace bio_map_user with new interface maybe */
drivers/scsi/qlogicpti.h:/* Am I fucking pedantic or what? */
drivers/net/3c509.c: * Using disable_irq stops us crapping on other
drivers/net/irda/donauboe.c:toshoboe_gotosleep (struct pci_dev *pci_dev, pm_message_t crap)
drivers/net/sunlance.c: * This was the sun4c killer. Shit, stupid bug.
drivers/net/wan/dscc4.c: * - misc crapectomy.
drivers/net/wan/dscc4.c: * If the driver ends sending crap on the wire, it
drivers/net/wan/cycx_main.c:* 2000/07/13 acme remove useless #ifdef MODULE and crap
drivers/net/wan/z85230.c: * Check if we crapped out.
drivers/net/wan/z85230.c: ct=2; /* Shit happens.. */
drivers/net/declance.c: * v0.007: Big shit. The LANCE seems to use a different DMA mechanism to
drivers/net/sky2.c: * to handle crap frames.
drivers/net/sunhme.c: /* Remember: "Different name, same old buggy as shit hardware." */
drivers/net/sunhme.c:/* Only Sun can take such nice parts and fuck up the programming interface
drivers/net/3c523.c: /* this bit masking stuff is crap. I'd rather have separate
drivers/net/dm9000.c: mdelay(8); /* same shit */
drivers/block/ub.c: * This is typically ENOMEM or some other such shit.
drivers/block/umem.c: * That's crap, since doing that while some partitions are opened
drivers/media/video/ov7670.c: * Weird crap seems to exist in the upper part of
drivers/media/video/bt819.c: BUG? Why does turning the chroma comb on fuck up color?
drivers/media/video/usbvideo/usbvideo.c:/* XXX: this piece of crap really wants some error handling.. */
drivers/media/video/indycam.c: /* Indy specific crap */
drivers/mtd/mtd_blkdevs.c: registered, to prevent the link/init ordering from fucking
drivers/mtd/ubi/scan.c: dbg_bld("using old crappy leb_ver stuff");
drivers/macintosh/windfarm_pm81.c: /* One more crappy race: I don't think we have any guarantee here
drivers/macintosh/windfarm_pm91.c: /* One more crappy race: I don't think we have any guarantee here
drivers/parport/parport_pc.c: * Piles of crap below pretend to be a parser for module and kernel
drivers/md/dm.c: * you this clearly demarcated crap.
drivers/usb/serial/whiteheat.c: * firmware is improved to guard against crap sent to device
drivers/pcmcia/sa1100_jornada720.c: * What is all this crap for?
drivers/watchdog/shwdt.c: * brain-damage, it's managed to fuck things up one step further..
drivers/serial/pmac_zilog.c: * shadows so we don't write crap there before baud rate is
drivers/serial/sunsu.c: * splitting all the OBP probing crap from the UART probing.
drivers/ata/sata_via.c: * SCR registers on vt6420 are pieces of shit and may hang the
drivers/ata/pata_cmd640.c: * Of putting crap on the disk
drivers/ata/pata_acpi.c: /* We always use the 0 slot for crap hardware */
fs/reiserfs/inode.c: /* crap, we are writing to a hole */
fs/partitions/sgi.c: u8 _unused0[48]; /* Device parameter useless crapola.. */
fs/jffs2/dir.c: /* Oh shit. We really ought to make a single node which can do both atomically */
fs/jffs2/super.c: assumes that they're not aligned -- so it emits crappy
fs/jffs2/TODO:2. get_sb()->build_fs()->scan() path... Why get_sb() removes scan()'s crap in
fs/jffs2/gc.c: all the iget() crap anyway */
fs/file_table.c: * Note: This is a crappy interface. It is here to make
fs/namei.c: * have to copy the last component. And all that crap because of
fs/binfmt_aout.c: /* Fuck me plenty... */
include/asm-arm/arch-cl7500/io.h: * GCC is totally crap at loading/storing data. We try to persuade it
include/asm-arm/arch-rpc/io.h: * GCC is totally crap at loading/storing data. We try to persuade it
include/asm-arm/arch-omap/keypad.h: * in order to workaround certain crappy HW designs that produce ghost
include/asm-v850/pgalloc.h:#include <linux /mm.h> /* some crap code expects this */
include/scsi/scsi_host.h: /* legacy crap */
include/linux/netfilter/nf_conntrack_pptp.h:/* crap needed for nf_conntrack_compat.h */
include/linux/netfilter/xt_limit.h: /* Ugly, ugly fucker. */
include/linux/mtd/cfi.h: of optimising away all the crap for 'bankwidth' larger than
include/linux/mtd/cfi.h: of optimising away all the crap for 'bankwidth' larger than
include/linux/cyclomx.h:* 2000/07/13 acme remove crap #if KERNEL_VERSION > blah
include/asm-m68k/sun3xflop.h:/* We don't need no stinkin' I/O port allocation crap. */
include/asm-m68k/sun3ints.h:/* master list of VME vectors -- don't fuck with this */
include/asm-ia64/pal.h:/* Machine Check related crap */
include/asm-mips/mipsprom.h:/* More PROM shit. Probably has to do with VME RMW cycles??? */
include/asm-sparc64/system.h: /* If you fuck with this, update ret_from_syscall code too. */ \
include/asm-sparc64/io.h:/* PC crapola... */
include/asm-sparc/floppy.h:/* We don't need no stinkin' I/O port allocation crap. */
include/asm-cris/arch-v32/spinlock.h: * writers) in interrupt handlers someone fucked up and we'd dead-lock
kernel/cpu.c:/* Crappy recursive lock-takers in cpufreq! Complain loudly about idiots */
lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds fucked it up :-)
net/netfilter/nf_queue.c: /* James M doesn't say fuck enough. */
net/netfilter/xt_hashlimit.c:/* hash table crap */
net/netfilter/nf_conntrack_ftp.c: else { /* Some other crap */
net/ipv4/netfilter/arp_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/ipv4/netfilter/nf_nat_snmp_basic.c: * (And this is the fucking 'basic' method).
net/ipv4/netfilter/ip_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/ipv4/netfilter/ipt_REJECT.c: This means that the iptables jump stack is now crap. We
net/ipv4/tcp_input.c: /* Old crap is replaced with new one. 8)
net/ipv4/tcp_input.c: * all the algo is pure shit and should be replaced
net/ipv4/ah4.c: case 0x85: /* Some "Extended Security" crap. */
net/ipv4/ip_input.c: * new frame it queues. Still crap because
net/ipv4/ip_input.c: /* When the interface is in promisc. mode, drop all the crap
net/ipv6/netfilter/ip6t_REJECT.c: This means that the ip6tables jump stack is now crap. We
net/ipv6/netfilter/ip6_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/core/skbuff.c: /* Fuck, we are miserable poor guys... */
net/irda/irnet/irnet.h: * instances on demand (no /dev/ircommX crap) and to allow linkname
net/appletalk/ddp.c: * Size check to see if ddp->deh_len was crap
net/llc/llc_input.c: * When the interface is in promisc. mode, drop all the crap that it
net/sched/sch_cbq.c: BTW cbq-2.0 has a crap in this
sound/pci/maestro3.c:/* XXX fix this crap up */
sound/pci/es1968.c: /* parallel in crap, see maestro reg 0xC [8-11] */
sound/pci/au88x0/au88x0_core.c: // FIXME: get rid of this crap.
sound/pci/cs46xx/dsp_spos_scb_lib.c: /* !!!! THIS IS A PIECE OF SHIT MADE BY ME !!! */
sound/aoa/soundbus/i2sbus/i2sbus-core.c: * useless crap (ugh ugh ugh). We work around that here by calling
sound/oss/trident.c: * crap documentation), perhaps broken ? */
sound/oss/uart6850.c: * Status: Testing required (no shit -jgarzik)
sound/oss/opl3.c: * What the fuck is going on here? We leave junk in the beginning
sound/oss/i810_audio.c: * Adjust for misclocked crap
sound/oss/i810_audio.c: * Adjust for misclocked crap
sound/oss/via82cxxx_audio.c: /* accounting crap for SNDCTL_DSP_GETxPTR */</linux>

some of those are hilarious 😀

Horrible or Terrible
# cd /usr/src/linux; egrep -ir "( horrib)|( terrib)" *
arch/m68k/math-emu/multi_arith.h: probably eliminate this horribly wasteful loop. I will
arch/m68k/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/m68k/kernel/sys_m68k.c: * This is really horribly ugly.
arch/sparc/mm/srmmu.c: * horrible eh? But wait, after extensive testing it appears
arch/sparc/kernel/sys_sparc.c: * This is really horribly ugly.
arch/sparc/kernel/wuf.S:/* Don't touch the above registers or else you die horribly... */
arch/sparc/kernel/pcic.c: * We do not use horrible macros here because we want to
arch/ia64/ia32/ia32priv.h: implementation specific libraries for optimization. Not terribly
arch/um/sys-ppc/Makefile:# the asm link is horrible, and breaks the other targets. This is also
arch/um/sys-i386/syscalls.c: * This is really horribly ugly.
arch/frv/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/frv/kernel/sys_frv.c: * This is really horribly ugly.
arch/mips/kernel/signal.c: * Horribly complicated - with the bloody RM9000 workarounds enabled
arch/mips/kernel/signal32.c: * Horribly complicated - with the bloody RM9000 workarounds enabled
arch/mips/kernel/syscall.c: * This is really horribly ugly.
arch/mips/Kconfig: # Horrible source of confusion. Die, die, die ...
arch/v850/kernel/syscalls.c: * This is really horribly ugly.
arch/sparc64/kernel/sys_sparc.c: * This is really horribly ugly.
arch/arm/plat-omap/gpio.c: * horribly racy, but it's the best we can do to work around
arch/arm/mach-ixp2000/ixdp2x00.c: * a driver on each NPU will try to manage it and we will have horrible
arch/arm/mach-ebsa110/io.c: * Luckily, the work-around for this is not too horrible. See
arch/arm/kernel/sys_arm.c: * This is really horribly ugly.
arch/cris/arch-v10/kernel/kgdb.c: part of the code in order to avoid horrible addressing modes. */
arch/cris/kernel/sys_cris.c: * This is really horribly ugly. (same as arch/i386)
arch/ppc/boot/simple/pci.c: * This isn't a terribly fancy algorithm. I just map the spaces from
arch/ppc/kernel/setup.c: * This 0x10000 offset is a terrible hack but it will go away when
arch/sh/mm/tlb-nommu.c: * Nothing too terribly exciting here ..
arch/sh/drivers/pci/ops-dreamcast.c: * wouldn't make it terribly far through the PCI setup anyways.
arch/sh/oprofile/op_model_sh7750.c: * profile for too horribly long.
arch/sh/kernel/sys_sh.c: * This is really horribly ugly.
arch/x86/kernel/apm_32.c: * disabled before the suspend. Linux used to get terribly confused by that.
arch/x86/kernel/cpu/cyrix.c: * If this breaks your GX1 horribly, please e-mail
arch/x86/kernel/sys_i386_32.c: * This is really horribly ugly.
arch/sh64/kernel/unwind.c: * Finding the previous stack frame isn't horribly straightforward as it is
arch/sh64/kernel/sys_sh64.c: * This is really horribly ugly.
arch/m32r/kernel/sys_m32r.c: * This is really horribly ugly.
arch/h8300/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/h8300/kernel/sys_h8300.c: * This is really horribly ugly.
arch/powerpc/platforms/cell/spider-pic.c: /* Now do the horrible hacks */
arch/powerpc/kernel/syscalls.c: * This is really horribly ugly.
arch/s390/kernel/compat_linux.c: * This is really horribly ugly.
arch/s390/kernel/sys_s390.c: * This is really horribly ugly.
arch/m68knommu/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/m68knommu/kernel/sys_m68k.c: * This is really horribly ugly.
arch/alpha/kernel/osf_sys.c: a terribly broken way to program.
block/ll_rw_blk.c: * size, something has gone terribly wrong
Documentation/unicode.txt:since they are horribly vendor-specific. This, of course, is an
Documentation/unicode.txt:excellent example of horrible design.
Documentation/lguest/lguest.c: * something went terribly wrong. */
Documentation/DocBook/kernel-hacking.tmpl: it is horrible and worse: division and multiplication does not work
Documentation/DocBook/videobook.tmpl: terribly useful to anyone.
Documentation/scsi/ibmmca.txt: 1) I passed a horrible weekend getting mad with NMIs on kernel 2.2.14 and
Documentation/sound/oss/README.OSS:in some systems but is likely to cause terrible noise on some other systems.
Documentation/sound/oss/README.OSS:are terrible), just modify ssinit.c to use another microcode file and try
Documentation/sound/oss/README.OSS:Some MAD16 based cards may cause feedback, whistle or terrible noise if the
Documentation/svga.txt:off by default as it's a bit unreliable due to terribly bad PC design. If you
Documentation/pci-error-recovery.txt:isn't terribly complex). That means some IRQ latency for other devices
Documentation/filesystems/inotify.txt: Signals are a terrible, terrible interface for file notification. Or for
drivers/pci/pci-driver.c: * horrible the crap we have to deal with is when we are awake...
drivers/pci/hotplug/cpqphp_pci.c:#include "../../../arch/x86/pci/pci.h" /* horrible hack showing how processor dependent we are... */
drivers/pci/hotplug/ibmphp_pci.c: err ("strange, cannot find bus which is supposed to be at the system... something is terribly wrong...\n");
drivers/pci/hotplug/ibmphp_res.c: debug ("something terribly wrong. Cannot find parent bus to the one to remove\n");
drivers/pci/hotplug/cpqphp_core.c:#include "../../../arch/x86/pci/pci.h" /* horrible hack showing how processor dependent we are... */
drivers/lguest/core.c: /* All long-lived kernel loops need to check with this horrible
drivers/char/hvcs.c: * throw us into a horrible recursive echo-echo-echo loop.
drivers/input/serio/i8042-x86ia64io.h: * die horrible death on reboot.
drivers/input/serio/hp_sdc.c: * compared to the CPU. This should not be too horrible most of the time,
drivers/input/mouse/psmouse-base.c: * Some boxes, such as HP nx7400, get terribly confused if mouse
drivers/video/sis/init.c: /* Terrible hack, but correct CRTC data for
drivers/scsi/NCR53C9x.c: /* Check for partial transfers and other horrible events. */
drivers/scsi/NCR53C9x.c: * we could die horribly! I used to have the sg
drivers/scsi/NCR5380.c: seems to be no terribly good way of doing this on a 5380 under all
drivers/scsi/NCR5380.c: the usual exit conditions are not met. Not a terribly clean or
drivers/scsi/aic7xxx_old/aic7xxx.seq: * In order for this to be reliable, we have to do all sorts of horrible
drivers/net/acenic.c: * Nothing terrible happens, if we load wrong size.
drivers/net/ne2k-pci.c: /* This looks like a horrible timing loop, but it should never take
drivers/net/eepro.c:/* The horrible routine to read a word from the serial EEPROM. */
drivers/net/ibm_newemac/core.c: * not terribly harmful)
drivers/net/lib8390.c: * card means that approach caused horrible problems like losing serial data
drivers/net/tulip/winbond-840.c:A horrible bug exists in the transmit FIFO. Apparently the chip doesn't
drivers/net/tulip/winbond-840.c: /* Work around horrible bug in the chip by marking the queue as full
drivers/net/tulip/eeprom.c: return; /* Horrible, impossible failure. */
drivers/net/tulip/eeprom.c: return; /* Horrible, impossible failure. */
drivers/net/tulip/tulip_core.c: /* bugfix: the ASIX must have a burst limit or horrible things happen. */
drivers/net/atl1/atl1_main.c: * Fix TSO; tx performance is horrible with TSO enabled.
drivers/net/wan/z85230.c: * The caller must hold sufficient locks to avoid violating the horrible
drivers/net/3c501.c: Do not purchase this card, even as a joke. It's performance is horrible,
drivers/net/appletalk/ltpc.c: * anything terribly complicated -- it pretends to be an ether device
drivers/media/video/pvrusb2/pvrusb2-sysfs.c: This next batch of horrible preprocessor hackery is needed because the
drivers/mtd/maps/sa1100-flash.c: the chance, and this leads to horrible problems
drivers/atm/firestream.c:/* It seems the ATM forum recommends this horribly complicated 16bit
drivers/pnp/pnpbios/bioscalls.c: * PnP BIOSes are generally not terribly re-entrant.
drivers/pnp/pnpbios/bioscalls.c: * Note that some PnP BIOSes (e.g., on Sony Vaio laptops) die a horrible
drivers/parisc/iommu-helpers.h: /* Horrible hack. For efficiency's sake, dma_sg starts one
drivers/usb/serial/usb-serial.c: /* BEGIN HORRIBLE HACK FOR PL2303 */
drivers/usb/serial/usb-serial.c: /* END HORRIBLE HACK FOR PL2303 */
drivers/isdn/i4l/isdn_net.c: * The solution is horribly but it runs, so what:
drivers/pcmcia/m32r_pcc.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/pcmcia/i82365.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/pcmcia/m32r_cfc.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/serial/8250.h: * Digital did something really horribly wrong with the OUT1 and OUT2
drivers/ata/pata_qdi.c: * libata. While the QDI6580 was 'neat' in 1993 it is no longer terribly
fs/ntfs/layout.h: * horrible thing to do as it would trash our current driver implementation. )-:
fs/ntfs/namei.c: * architectures is usually 64 bits so it would all fail horribly on huge
fs/ocfs2/dlm/dlmmaster.c: /* ok, something horribly messed. kill thyself. */
fs/ocfs2/cluster/quorum.c:/* this is horribly heavy-handed. It should instead flip the file
fs/isofs/inode.c: * then we have horrible problems with trying to piece together
fs/hpfs/dnode.c: * It's easy to read but terrible to write.
fs/namei.c: * checks. It's a horrible hack to work around the braindead sysfs
fs/ncpfs/inode.c: a terrible hack, but I do not know
include/asm-arm/arch-pxa/hardware.h: especially if it is a variable, otherwise horrible code will result. */
include/asm-arm/arch-s3c2410/irqs.h: * and we don't end up having to do horrible things to the
include/asm-x86/apicdef_64.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm-x86/string_32.h: * This looks horribly ugly, but the compiler can optimize it totally,
include/asm-x86/apicdef_32.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm/apicdef_64.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm/string_32.h: * This looks horribly ugly, but the compiler can optimize it totally,
include/asm/apicdef_32.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm-v850/bitops.h: to use a real constant value. This is horrible, and ultimately
include/asm-v850/processor.h: * The only places this is used seem to be horrible bletcherous kludges,
include/asm-xtensa/system.h: * This only works if the compiler isn't horribly bad at optimizing.
include/linux/dccp.h: This mapping is horrible, but TCP has
include/linux/serialP.h: * Digital did something really horribly wrong with the OUT1 and OUT2
include/linux/sunrpc/svc.h: * change the number of threads. Horrible, but there it is.
include/linux/bitmap.h: * Otherwise many inlines will generate horrible code.
include/asm-m68k/page.h:/* This #define is a horrible hack to suppress lots of warnings. --m */
include/asm-ia64/elf.h: implementation specific libraries for optimization. Not terribly
include/asm-mips/dma.h:/* Horrible hack to have a correct DMA window on IP22 */
include/asm-sparc/io-unit.h: * XXX some horrible hwbugs though, so be careful. -DaveM
mm/slob.c: * however to avoid the horrible mess in include/linux/mm_types.h, we'll
mm/memory.c: * There's a horrible special case to handle copy-on-write
mm/truncate.c: * the VM. Can you say "ext3 is horribly ugly"? Tought you could.
net/netfilter/nf_conntrack_extend.c:/* Horrible trick to figure out smallest amount worth kmallocing. */
net/ipv4/ipvs/ip_vs_lblc.c: * Martin Hamilton : fixed the terrible locking bugs
net/ipv4/ipconfig.c: * seems to be a terrible waste of CPU time, but actually there is
net/irda/irttp.c: * because it has horrible latency. No tasklets
net/packet/af_packet.c: * of horrible races and re-entrancy so we can forget about it
net/econet/af_econet.c: * of horrible races and re-entrancy so we can forget about it
sound/oss/ad1848.c: /* Still hanging here. Something must be terribly wrong */
sound/ppc/awacs.c: /* Sorry for the horrible delays... I hope to get that improved

Openvpn – MULTI: bad source address from client – solution

Problematic Configuration:
OpenVPN server config:
dev tun
port 1194
proto udp
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
persist-key
persist-tun
server 10.8.0.0 255.255.255.0
keepalive 10 30
client-to-client
comp-lzo
ifconfig-pool-persist ipp.txt
status /etc/openvpn/openvpn-status.log
verb 3
push "redirect-gateway"

OpenVPN client config:
dev tun
client
proto udp
persist-tun
persist-key
resolv-retry infinite
mute-replay-warnings
remote REMOTE.HOST 1194
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
comp-lzo
verb 3

The problem:
Using the above config files I continuously got errors like this on the server syslog:

May 1 00:00:00 hostname ovpn-openvpn[22563]: client1/X.Y.Z.W:1194 MULTI: bad source address from client [10.10.1.11], packet dropped

where X.Y.Z.W is my public IP and 10.10.1.11 is the Lan IP of the machine that makes the connection to the openvpn server.

The solution:
OpenVPN server config:
dev tun
port 1194
proto udp
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
persist-key
persist-tun
server 10.8.0.0 255.255.255.0
keepalive 10 30
client-to-client
comp-lzo
ifconfig-pool-persist ipp.txt
status /etc/openvpn/openvpn-status.log
verb 3
push "redirect-gateway"
client-config-dir ccd
route 10.10.1.0 255.255.255.0

Then I created the /etc/openvpn/ccd/ dir and put inside a file named client1 with the following contents:
# cat /etc/openvpn/ccd/client1
iroute 10.10.1.0 255.255.255.0

Client configuration stays the same.

All should be fine now and in your server logs you will now see entries like this:

May 1 00:00:00 hostname ovpn-openvpn[27096]: client1/X.Y.Z.W:1194 MULTI: Learn: 10.10.1.11 -> client1/X.Y.Z.W:1194

Hint: If you want your clients to be able to access the internet through the VPN tunnel you _must_ create NAT.
a typical config on a debian acting as the OpenVPN server:
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address A.B.C.D
netmask 255.255.255.0
gateway A.B.C.E
network A.B.C.0
broadcast A.B.C.255
post-up iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.1/24 -j MASQUERADE
post-up echo 1 > /proc/sys/net/ipv4/ip_forward

ACS…σημαίνει ασφάλεια

Σήμερα το μεσημέρι βρίσκω στην εξώπορτα της πολυκατοικίας ένα ειδοποιητήριο της ACS.

Έχω κάνει blur τον αριθμό του πακέτου και το όνομα…

Όπως κάποιος θα παρατηρεί, το ειδοποιητήριο αναφέρει επάνω του:

“Παρακαλούμε όπως επικοινωνήσετε μαζί μας στο ανωτέρω τηλέφωνο για την παραλαβή το ταχύτερο δυνατόν.”

Αν βλέπει κανείς τηλέφωνο επάνω στο ειδοποιητήριο να μου το πει και μένα…
Ανοίγω Firefox, πηγαίνω στο site της ACS, click στο “Καταστήματα” και εμφανίζεται ένας ωραιότατος χάρτης σε Flash. Clickety click στο νομό, ανοίγει νέα σελίδα με κανένα κατάστημα…Clickety click σε άλλο νομό, τα ίδια… ξανά click στο δικό μου νομό…πάλι τίποτα. Βλέπω ένα link “εργαλείο αναζήτησης”..το χρησιμοποιώ, βρίσκω το τηλέφωνο του καταστήματος και τηλεφωνώ

– Γεια σας, τηλεφωνώ σχετικά με μία παραλαβή. Στο ειδοποιητήριο αναφέρει ότι προβλέπονται 3 προσπάθειες παράδοσης. Πότε μπορείτε να το φέρετε ξανά το δέμα ?
– Αύριο.
– Μπορώ να έρθω να το παραλάβω μόνος μου σήμερα ? Και αν ναι, μέχρι τι ώρα είστε ανοιχτά ?
– Ναι, μπορείτε. Είμαστε ανοιχτά μέχρι τις 19:30.

Η ώρα ήταν ήδη 17:00 οπότε αποφασίζω να πάω προς το μαγαζί. Παίρνω την ταυτότητά μου αλλά ξεχνάω το ειδοποιητήριο σπίτι. Φτάνω εκεί, μπαίνω μέσα και ήταν μια υπάλληλος:

– Τι θα θέλατε ?
– Έχω λάβει μια ειδοποίηση για ένα δέμα.
– Έχετε το ειδοποιητήριο μαζί σας ?
– Όχι, το ξέχασα..
– Το όνομά σας ?
– ΧΧΧ…
– Μισό λεπτό…
(το ψάχνει για 20-30 δευτερόλεπτα, βρίσκει το δέμα και το φέρνει)
– Μένετε στην οδό ΥΥΥ ?
– Ναί, ΥΥΥ αριθμός ΖΖΖ.
– Βάλτε ολόκληρο το ονομά σας και υπογράψτε εδώ…
(συμπληρώνω τα στοιχεία μου και υπογράφω)
– Ορίστε (μου δίνει το δέμα)

και έτσι έφυγα από την ACS με ένα δέμα χωρίς να μου ζητηθεί καν ταυτότητα.

Θα μπορούσε κάποιος πολύ άνετα να πάρει το χαρτάκι από την πόρτα της πολυκατοικίας, το οποίο αναφέρει το όνομα του παραλήπτη, να πάει στην ACS και να πάρει το δέμα μου χωρίς εγώ να πάρω χαμπάρι. Δεν θα έπρεπε να με είχε πάρει τηλέφωνο κάποιος από την ACS αφού δεν με βρήκαν σπίτι για να με ειδοποιήσουν για την αποτυχημένη παραλαβή ? Πραγματική ασφάλεια…

OpenCoffee Ioannina I – Τα πρακτικά

Ένα post για το πώς πήγε το πρώτο OpenCoffee event στα Ιωάννινα υπάρχει στο: http://opencoffee.gr/2008/05/13/opencoffee-ioannina-i-minute/

jailkit-2.3 ebuild patch fix for sunrise overlay

There’s an ebuild for jailkit version 2.3 on sunrise overlay. Unfortunately it has a bug that can cause severe headaches. It patches your /etc/shells in a VERY wrong way so that you can easily end up _only_ with /usr/sbin/jk_chrootsh inside /etc/shells. This can lock you out of your machine!

This behaviour is due to a patch that comes with the ebuild named: jailkit-2.3-destdir.patch.
In order to fix this behavior, I’ve patched the patch so that it works as it should. Now it just adds “/usr/sbin/jk_chrootsh” under all the previous shells you had in your /etc/shells file.

Full File: jailkit-2.3-destdir.patch
Patched File: jailkit-2.3-destdir.patch.patch (wonderfull name :P)