Category Archives: Daily life

Everything non scientific ;-)

Tegra arratum 657451

And again, increasing recursive Googling…

(3) ...however, if you have a stock eglibc
and a kernel with the erratum workaround disabled/removed,
then things seem in practice to work OK.
Speculation is that perhaps the erratum is only
a problem in marginal situations (eg if the core is very hot).

Ok, wtf. “marginal situations”?
Does that mean, the hardware has the freedom to not execute the code in cases where it hates the user, like in my case? >_>

Seriously, the core hasn’t reached high temperatures yet, but still shows sign of this bug.
Ok, cancel sign: a system where already /sbin/init segfaults is not a sign, it’s more like “no discussion”

https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/739374

Anyway. I’ve now made a portage overlay for eglibc and am cross-compiling eglibc-2.15 in this very moment.
Let’s see if switching Gentoo to eglibc solves my problems…

BTW: The overlay can be found under:
https://gitorious.org/o2s-gentoo/eglibc-overlay/trees/master

Automatic kernel configuration

Didn’t everyone already dream of that?
Ok… Not everyone, just the hardcore nerds and hackers like me, who aren’t only using bleeding edge software but more or less blood dropping flesh wound software (yes, sometimes even -9999- ebuilds in Gentoo >_< )

I guess BenBee asked me some time ago, if this would be possible…

Yes it is
./kdetect.sh
and
./autokernconf.sh

Should do the trick.
Go to the following source: http://cateee.net/autokernconf/

TEGRA2 and GLIBC

Not only, that the list of hazards within a tegra2 grows and grows and the errata option list within menuconfig now already is longer then the list of boards containing this SoC…
Obviously the hazards make it impossible to use any GLIBC newer then 2.12.1 …
Folks! WTF!?

GNU/Linux on “galaxy S2 i9100”

Howdy
A friend of mine owns a “Samsung Galaxy S2”
CPU-info tells us there is a SMDKV310 SoC in it:

# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 1 (v7l)
processor       : 0
BogoMIPS: 1592.52

Features: swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part: 0xc09
CPU revision    : 1

Hardware: SMDKV310
 Revision: 000e
 Serial  : 304d19f743777c9e

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-exynos/mach-smdkv310.c;h=83b91fa777c1aeb4ca5ee95ff81f244a1641e904;hb=HEAD

Looks as there would be support for it in upstream.
Let’s see if it boots as well. ( e.g. upstream support for tegra2 is just formalism, the code in master doesn’t do anything useful)

Accessing/manipulating networkdevices in C

Howdy how

BenBE asked me to give him some advice how to open and manipulate network devices from user space.
Although it’s not really a kernel hacking issue, as his way of asking proposed I’ll post the respective link after all, because I’ve promised.

Usually you use APIs for such a purpose.

In this case its the library called Libdnet and the project page can be found under the following URL:
http://libdnet.sourceforge.net/

I just have taken a look into Debian’s package viewer and somehow the relevant header ( /usr/include/dnet/tun.h )
is missing ( packages broken/outdated? O.o)

Anyway, the header file would only tell us that much (Thx to benny for the tip with the highlighter! 😉 ):

/*
 * tun.h
 *
 * Network tunnel device.
 *
 * Copyright (c) 2001 Dug Song 
 *
 * $Id: tun.h,v 1.2 2005/01/25 21:29:12 dugsong Exp $
 */

#ifndef DNET_TUN_H
#define DNET_TUN_H

typedef struct tun      tun_t;

__BEGIN_DECLS
tun_t      *tun_open(struct addr *src, struct addr *dst, int mtu);
int         tun_fileno(tun_t *tun);
const char *tun_name(tun_t *tun);
ssize_t     tun_send(tun_t *tun, const void *buf, size_t size);
ssize_t     tun_recv(tun_t *tun, void *buf, size_t size);
tun_t      *tun_close(tun_t *tun);
__END_DECLS

#endif /* DNET_TUN_H */

An example can be found a little more deeper on the following site:
http://csfacwiki.cslabs.ewu.edu/wiki/securitylab/index.php/Libdnet

By using libudev for dynamic file checking and path allocation
you could also make it a little more dynamic and flexible.
(Using hardcoded strings in order to allocate files is usually a very bad idea)

Gentoo: Emerging with RAMFS

Hi

bash_vi asked me to write a short resume about how to emerge programs by using the ramfs for speedup.
Here’s how to do so:

mount -t ramfs -o size=2g ramfs /var/tmp/portage/

  • The “-t ramfs” is obviously self explainatory.
  • The “-o size” tells the ramfs driver how much space of the RAM should be reserved for this specific mount point.
  • “/var/tmp/portage/” is the place where portage usually unpacks the source boundles and begins to compile them.

You can also put it into your /etc/fstab in order to keep it for each reboot with
echo -e "ramfs\t/var/tmp/portage/\tramfs\tsize=2g\t0\t0" >> /etc/fstab

Now you can compile your stuff within RAMFS

Links:

  • http://de.gentoo-wiki.com/wiki/Emerge_beschleunigen
  • http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/