How-to chroot into Gentoo
Files needed
- stage3-ppc-uclibc-2005.0 (recommended for gentoo chroot) or stage3-ppc-uclibc-2006.1 (recommended for gentoo boot). Don't use 2008.0 stage because it is compiled against 2.6 kernel headers.
Installing steps
ln -s /mnt/HD_a2/bzip2 /mnt/HD_a2/bzcat
mkdir /mnt/HD_a2/gentoo
cd /mnt/HD_a2/gentoo
/mnt/HD_a2/bzcat /mnt/HD_a2/stage3-ppc-uclibc-2006.1.tar.bz2 | /mnt/HD_a2/tar -xvpf -
cd /mnt/HD_a2/gentoo/usr
/mnt/HD_a2/bzcat /mnt/HD_a2/portage-latest.tar.bz2 | /mnt/HD_a2/tar -xvf -
mount -o bind /dev /mnt/HD_a2/gentoo/dev
mount -t proc none /mnt/HD_a2/gentoo/proc
cp /etc/resolv.conf /mnt/HD_a2/gentoo/etc/
/mnt/HD_a2/chroot /mnt/HD_a2/gentoo /bin/bash
- Update /etc/make.conf
- Update /etc/conf.d/net
env-update && source /etc/profile
rc-update add net.eth0 default
rc-update add dropbear default
passwd root
- If you did choose to use 2005.0 stage then you must update e2fsprogs!
emerge e2fsprogs
- If you are going to hddboot, always make sure that devfsd is installed!
emerge -pv devfsd
- It is also recommended that you update sys-apps/baselayout package. Its needed by net configuration to change mac address. However, by default, baselayout pulls in and builds module-init-tools with support only for 2.6 kernels. So, to allow the updated module-init-tools to be built with support for both 2.4 and 2.6 kernels:
echo "sys-apps/module-init-tools old-linux" >> /etc/portage/package.use
emerge sys-apps/baselayout
/etc/make.conf
CFLAGS="-Os -pipe -mcpu=603e -mtune=603e" CHOST="powerpc-pc-linux-uclibc" CXXFLAGS="-Os -pipe -mcpu=603e -mtune=603e" LDFLAGS="-Wl,-z,relro" USE="-*" PORTAGE_RSYNC_EXTRA_OPTS="—exclude-from=/etc/portage/rsync_excludes" SYNC="rsync://rsync1.ee.gentoo.org/gentoo-portage" GENTOO_MIRRORS="http://ftp.linux.ee/pub/gentoo/distfiles ftp://ftp.linux.ee/pub/gentoo/distfiles"
/etc/fstab
/dev/sda3 / ext3 noatime 0 0 /dev/sda1 none swap sw 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0
/etc/conf.d/net
net is needed only if you are going to boot gentoo using loader.o or flashed custom kernel.
config_eth0=( "yourNASip netmask 255.255.255.0 broadcast yourBroadcastAddress" ) routes_eth0=( "default gw yourGatewayAddress" ) mac_eth0="yourMACaddress" dns_servers_eth0=( "yourDNSserverAddress" )
Example :
config_eth0=( "192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255" ) routes_eth0=( "default gw 192.168.0.254" ) mac_eth0="00:15:E9:6D:22:11" dns_servers_eth0=( "212.20.30.40" )
/etc/conf.d/wireless
wireless is needed only if you are going to boot gentoo using loader.o or flashed custom kernel.
Get new (1.1.0 BETA4) rt2500.o from here. For more info look here.
iwpriv_yourssid=( "set AuthMode=WPAPSK" "set EncrypType=TKIP" "set WPAPSK=your-wpa-psk" ) sleep_scan_ra0="5" essid_ra0="yourssid" channel_ra0="11" prefarred_aps=( "yourssid" ) associate_order_ra0="forceprefarred" dns_servers_yourssid=( "192.168.1.1" ) dns_domain_yourssid=( "you-domain" ) key_yourssid="s:your-wpa-psk enc open" config_yourssid=( "192.168.1.3/24 brd 192.168.1.255" ) routes_yourssid=( "default via 192.168.1.1" )
/etc/portage/rsync_excludes
- app-accessibility/ - metadata/cache/app-accessibility/ - app-emulation/ - metadata/cache/app-emulation/ - app-laptop/ - metadata/cache/app-laptop/ - app-office/ - metadata/cache/app-office/ - app-pda/ - metadata/cache/app-pda/ - dev-games/ - metadata/cache/dev-games/ - games-*/ - metadata/cache/games-*/ - gnome-*/ - metadata/cache/gnome-*/ - kde-*/ - metadata/cache/kde-*/ - rox-*/ - metadata/cache/rox-*/ - media-tv/ - metadata/cache/media-tv/ - media-video/ - metadata/cache/media-video/ - sci-*/ - metadata/cache/sci-*/ - x11-*/ - metadata/cache/x11-*/ - xfce-*/ - metadata/cache/xfce-*/
Cleaning portage
cd /usr/portage
rm -r `gawk '{ printf(”%s ”,$2) }' /etc/portage/rsync_excludes`
Testing
USE=unicode emerge links
Additional software
chrooting
If you have exited from chroot environment after installing gentoo chroot or if you have rebooted your DSM-G600 then you need following commands to enter back in chroot environment.
mount -o bind /dev /mnt/HD_a2/gentoo/dev
mount -t proc none /mnt/HD_a2/gentoo/proc
/mnt/HD_a2/chroot /mnt/HD_a2/gentoo /bin/bash
Chrooted DropBear
will fail by default due to the default kernel not supporting uni98 ptys.
Correct build:
EXTRA_ECONF=--disable-openpty emerge dropbear
First time installation:
ln -s /dev/urandom /dev/random mkdir /etc/dropbear/ /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
Auto-start from fun_plug (assuming a working busybox):
ln -s /mnt/HD_a2/bin/busybox /bin/chroot ln -s /mnt/HD_a2/bin/busybox /bin/makedevs cd /dev /bin/makedevs ptyp c 2 0 0 9 /bin/makedevs ttyp c 3 0 0 9 ln -s urandom random mount -o bind /dev /mnt/HD_a2/gentoo/dev mount -t proc none /mnt/HD_a2/gentoo/proc cp /etc/resolv.conf /mnt/HD_a2/gentoo/etc/ /bin/chroot /mnt/HD_a2/gentoo /usr/sbin/dropbear
Successful Gentoo boot log
* U-Boot 0.2.0 (May 11 2005 - 18:56:16) CPU: MPC8245 V1.2 at 170.503 MHz: Board: Sandpoint 8245 DRAM: 32 MB FLASH: FUJI_DL323BE In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 => bootm FFF10000 ## Booting image at fff10000 ... Image Name: Linux-2.4.21-pre4 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 884424 Bytes = 863.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Total memory 33554432 MB. Memory BAT mapping: BAT2=32Mb, BAT3=0Mb, residual: 0Mb Total memory is 33554432. CPU = 82xx Linux version 2.4.21-pre4 (root@serv) (gcc version 2.95.4 20010319 (prerelease)) #480 Mon Feb 19 17:19:05 EET 2007 OpenPIC_Addr in mpc10x_bridge_init function is fc040000 Motorola SPS Sandpoint Test Platform Port by MontaVista Software, Inc. (source@mvista.com) On node 0 totalpages: 8192 zone(0): 8192 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/sda3 console=ttyS0,9600 OpenPIC Version 1.2 (1 CPUs and 123 IRQ sources) at fc040000 Calibrating delay loop... 133.12 BogoMIPS Memory: 30176k available (1564k kernel code, 584k data, 56k init, 0k highmem) Dentry cache hash table entries: 4096 (order: 3, 32768 bytes) Inode cache hash table entries: 2048 (order: 2, 16384 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) POSIX conformance testing by UNIFIX PCI: Probing PCI hardware PCI fixup irq: (PCI device 1814:0201) got 0 PCI fixup irq: (PCI device 1033:0035) got 1 PCI fixup irq: (PCI device 1033:0035) got -1 PCI fixup irq: (PCI device 1033:00e0) got 2 PCI fixup irq: (PCI device 13f0:1023) got 3 PCI fixup irq: (PCI device 1191:0008) got 4 Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd Journalled Block Device driver loaded devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au) devfs: boot_options: 0x1 udf: registering filesystem pty: 256 Unix98 ptys configured Serial driver version 5.05c (2001-07-08) with MANY_PORTS SERIAL_PCI enabled ttyS00 at 0xfc004500 (IOMEM)(irq = 121) is a ST16650 ttyS01 at 0xfc004600 (IOMEM)(irq = 122) is a ST16650 loop: loaded (max 8 devices) ipg : v0.36 10/31/01 Written by Craig Rich, www.sundanceti.com IC PLUS IP1000 1000/100/10 based NIC found. Ethernet device registered as: eth0 IPG module loaded. SCSI subsystem driver Revision: 1.00 atp86x_detect: ACARD ATP-865 PCI ATA133 2-Channels Host Adapter: 0 IO:FEBFFEF8, IRQ:4. ID: 0 FUJITSU MHT2060AT UDMA5 (100) scsi0 : ACARD ATP86X PCI ATA133 Adapter Driver Ver: 0.78 Date: 2004/01/15 Vendor: FUJITSU Model: MHT2060AT Rev: Type: Direct-Access ANSI SCSI revision: 02 Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 SCSI device sda: 117210239 512-byte hdwr sectors (30006 MB) Partition check: p1 p2 p3 p4 USI AMD/FUJITSU flash: probing 8-bit flash bus Amd/Fujitsu Extended Query Table at 0x0040 number of CFI chips: 1 cfi_cmdset_0002: Disabling fast programming due to code brokenness. Creating 5 MTD partitions on "USI Intel flash": 0x00000000-0x00010000 : "Linux mtd1" 0x00010000-0x00020000 : "Linux mtd2" 0x00020000-0x00300000 : "Linux Ramdisk" 0x00300000-0x00310000 : "U-BOOT BOOT LOADER" 0x00310000-0x00400000 : "Linux Kernel" usb.c: registered new driver hub NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. Mounted devfs on /dev Freeing unused kernel memory: 56k init INIT: version 2.86 booting Gentoo Linux; http://www.gentoo.org/ Copyright 1999-2005 Gentoo Foundation; Distributed under the GPLv2 * Mounting proc at /proc ... [ ok ] * Kernel automatically mounted devfs at /dev ... [ ok ] * Starting devfsd ...Started device management daemon v1.3.25 for /dev [ ok ] * Activating (possible) swap ...Adding Swap: 506480k swap-space (priority -1) [ ok ] * Skipping root filesystem check (fstab's passno == 0) ... [ ok ] * Remounting root filesystem read/write ... [ ok ] * Setting hostname to dsmg600 ... [ ok ] * Calculating module dependencies ... [ ok ] * Checking all filesystems ... [ ok ] * Mounting local filesystems ... [ ok ] * Activating (possibly) more swap ... [ ok ] * Setting system clock to hardware clock [Local Time] ... * Cannot access the Hardware Clock via any known method. Use the --debug option to see the details of our search for an access method. Cannot access the Hardware Clock via any known method. Use the --debug option to see the details of our search for an access method. * Failed to set system clock to hardware clock [ !! ] * Failed to start /etc/init.d/clock * Setting DNS domainname to penthouse.lan ... [ ok ] * Configuring kernel parameters ... [ ok ] * Updating environment ... [ ok ] * Cleaning /var/lock, /var/run ... [ ok ] * Cleaning /tmp directory ... [ ok ] * Starting lo * Bringing up lo ... [ ok ] * Initializing random number generator ... [ ok ] INIT: Entering runlevel: 3 * Starting eth0 * Bringing up eth0 * 192.168.1.10 [ ok ] [ ok ] * Adding routes * default gw 192.168.1.1 ... [ ok ] * Starting dropbear ... [ ok ] * Mounting network filesystems ... [ ok ] * Setting clock via the NTP client 'ntpdate' ... [ ok ] * Starting local ... [ ok ] INIT: no more processes left in this runlevel
Troubleshooting
- If you can't get to the login then press ctrl+c right after /dev and sda3 is mounted.
- If your root file system is read-only then use
mount -t ext3 -o rw,remount /dev/sda3 /
to get write access. - Current e2fsprogs 1.40.4 fails to build with following error:
../../lib/libuuid.so: undefined reference to `___tls_get_addr'
See http://bugs.gentoo.org/show_bug.cgi?id=204102 for more details. Workaround is to use version 1.40.3 by runningecho '>=sys-fs/e2fsprogs-1.40.4' » /etc/portage/package.mask
before emerging.
Installing an older package
Current version gentoo packages may not work on DSM-G600. If you gets Masked packages because of unsupported EAPI or package only support kernel 2.6, try to install an older package by browsing to /usr/portage/category/application or going to the CSV tree : http://sources.gentoo.org/viewcvs.py/gentoo-x86/ and searching older version of the package. Once the version found, install it with this command :
emerge -av =category/package-version