How-to chroot into Gentoo

Files needed

Installing steps

  1. ln -s /mnt/HD_a2/bzip2 /mnt/HD_a2/bzcat
  2. mkdir /mnt/HD_a2/gentoo
  3. cd /mnt/HD_a2/gentoo
  4. /mnt/HD_a2/bzcat /mnt/HD_a2/stage3-ppc-uclibc-2006.1.tar.bz2 | /mnt/HD_a2/tar -xvpf -
  5. cd /mnt/HD_a2/gentoo/usr
  6. /mnt/HD_a2/bzcat /mnt/HD_a2/portage-latest.tar.bz2 | /mnt/HD_a2/tar -xvf -
  7. mount -o bind /dev /mnt/HD_a2/gentoo/dev
  8. mount -t proc none /mnt/HD_a2/gentoo/proc
  9. cp /etc/resolv.conf /mnt/HD_a2/gentoo/etc/
  10. /mnt/HD_a2/chroot /mnt/HD_a2/gentoo /bin/bash
  11. env-update && source /etc/profile
  12. rc-update add net.eth0 default
  13. rc-update add dropbear default
  14. passwd root
  15. If you did choose to use 2005.0 stage then you must update e2fsprogs! emerge e2fsprogs
  16. If you are going to hddboot, always make sure that devfsd is installed! emerge -pv devfsd
  17. 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
  18. 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

  1. cd /usr/portage
  2. rm -r `gawk '{ printf(”%s ”,$2) }' /etc/portage/rsync_excludes`

Testing

  1. 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.

  1. mount -o bind /dev /mnt/HD_a2/gentoo/dev
  2. mount -t proc none /mnt/HD_a2/gentoo/proc
  3. /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 running echo '>=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

Links


Personal Tools