# chroot in 32bit System funktioniert nicht mehr [solved]

## nanos

Hallo Forum,

ich habe auf einem Server mit 64bit System ein Verzeichnis mit einer 32bit Installation.

Darin ist ein fertiges System das ich für eine Boot-CD erstellt habe.

Mit "linux32 chroot /mnt/gentoo32 /bin/bash" bin ich da immer rein gewechselt und habe notwendige Änderungen erledigt.

Leider funktioniert der chroot seit einiger Zeit nicht mehr und es ist mir nicht mehr möglich Änderungen an diesem System vorzunehmen.

Bei meiner Suche nach dem Problem bin ich auf diese offizielle Anleitung gestoßen wo es auch genau so beschrieben ist.

Da die Anleitung aber aus dem Jahr 2008 ist und ich am 17.01.2012 noch eingeloggt war denke ich das es was mit den Updates dieses Jahr zu tun hat.

Ich schätze das die Mounts nicht mehr stimmen da sich hier etwas geändert hat dieses Jahr.

Weiß jemand was hier das Problem sein könnte?

Leider bekomme ich auch keine Fehlermeldungen sondern der Promt lässt einfach auf sich warten und ich muss mit Ctrl + C abbrechen.Last edited by nanos on Wed Dec 05, 2012 9:37 am; edited 1 time in total

----------

## Randy Andy

Hi nanos.

Zeig uns doch mal nach dem gescheitertem chroot deine Ausgabe von mount.

Mir geistert da noch was durch den Hinterkopf mit einem update von openrc, das es erforderlich machte im kernel nun folgende Optionen zu setzten:

```

Search Results ────────────────────────────────────────────────────────────────────────┐                   │

 │                  │                                                                                          │                   │

 │                  │ Symbol: DEVTMPFS [=y]                                                                    │                   │

 │                  │ Type  : boolean                                                                          │                   │

 │                  │ Prompt: Maintain a devtmpfs filesystem to mount at /dev                                  │                   │

 │                  │   Defined at drivers/base/Kconfig:24                                                     │                   │

 │                  │   Depends on: HOTPLUG [=y]                                                               │                   │

 │                  │   Location:                                                                              │                   │

 │                  │     -> Device Drivers                                                                    │                   │

 │                  │       -> Generic Driver Options                                                          │                   │

 │                  │                                                                                          │                   │

 │                  │                                                                                          │                   │

 │                  │ Symbol: DEVTMPFS_MOUNT [=y]                                                              │                   │

 │                  │ Type  : boolean                                                                          │                   │

 │                  │ Prompt: Automount devtmpfs at /dev, after the kernel mounted the rootfs                  │                   │

 │                  │   Defined at drivers/base/Kconfig:44                                                     │                   │

 │                  │   Depends on: DEVTMPFS [=y]                                                              │                   │

 │                  │   Location:                                                                              │                   │

 │                  │     -> Device Drivers                                                                    │                   │

 │                  │       -> Generic Driver Options                                                          │                   │

 │                  │         -> Maintain a devtmpfs filesystem to mount at /dev (DEVTMPFS [=y])               │                   │

 │                  │

```

Vermute was in dieser Richtung, vorausgesetzt du hast sonst alle Vorbedingungen vor dem chroot eingehalten, so wie in deiner verlinkten Doku, nach der es bei mir immer noch funktioniert.

Andy.

----------

## toralf

```
enable CONFIG_DEVTMPFS_MOUNT
```

ist Bestandteil des channel topics vom IRC #gentoo  :Wink: 

----------

## nanos

Ich habe das gleich mal ausprobiert, den kernel neu gebaut und neu gestartet.

Leider funktioniert es noch immer nicht.

Hier die Ausgabe von mount:

```

rootfs on / type rootfs (rw)

/dev/root on / type ext4 (rw,noatime,data=ordered)

devtmpfs on /dev type devtmpfs (rw,relatime,size=3024916k,nr_inodes=756229,mode=755)

proc on /proc type proc (rw,relatime)

tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)

devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)

shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)

cgroup_root on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755)

openrc on /sys/fs/cgroup/openrc type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib64/rc/sh/cgroup-release-agent.sh,name=openrc)

cpuset on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)

cpu on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)

cpuacct on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)

freezer on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)

fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)

/dev/sda1 on /boot type ext2 (rw,noatime)

binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)

/dev on /mnt/gentoo32/dev type none (rw,bind)

/dev/pts on /mnt/gentoo32/dev/pts type none (rw,bind)

/dev/shm on /mnt/gentoo32/dev/shm type none (rw,bind)

/proc on /mnt/gentoo32/proc type none (rw,bind)

/sys on /mnt/gentoo32/sys type none (rw,bind)

```

----------

## bell

 *Quote:*   

> /dev/pts on /mnt/gentoo32/dev/pts type none (rw,bind)
> 
> /proc on /mnt/gentoo32/proc type none (rw,bind)
> 
> /sys on /mnt/gentoo32/sys type none (rw,bind)

 Normalerweise mounted man diese Verzeichnisse nicht als "bind" sondern normal neu. Also

```
mount -t proc none /mnt/gentoo32/proc 

mount -t sysfs none /mnt/gentoo32/sys 

mount -t devpts none /mnt/gentoo32/dev/pts 
```

Vielleicht hilft das.

----------

## nanos

Ich habe deinen Rat befolgt aber leider noch immer das selbe Ergebnis:

```
none on /mnt/gentoo32/proc type proc (rw)

none on /mnt/gentoo32/sys type sysfs (rw)

/dev on /mnt/gentoo32/dev type none (rw,bind)

none on /mnt/gentoo32/dev/pts type devpts (rw)

/dev/shm on /mnt/gentoo32/dev/shm type none (rw,bind)

```

----------

## mv

 *bell wrote:*   

> Normalerweise mounted man diese Verzeichnisse nicht als "bind" sondern normal neu.

 

Ich würde bei "bind" bleiben. Zumindest bzgl. devpts (oder war es /dev?) habe ich mit Neu-Mounten schlechte Erfahrungen gemacht, aber ich habe vergessen welche Probleme aufgetreten sind; das Problem hatte irgendwie damit zu tun, dass Änderungen (bei neuen Terminals, oder war es ein udev-Device? Ich hatte damals mit beidem experimentiert) nicht "richtig" durchgereicht wurden.

----------

## nanos

Ich habe jetzt mal ein neues System mit folgenden Schritten angelegt:

```
mkdir /mnt/gentoo32

cd /mnt/gentoo32

wget http://de-mirror.org/gentoo/releases/x86/current-stage3/stage3-i686-20121016.tar.bz2

tar -xvjpf ./stage3-i686-20121016.tar.bz2

cp -L /etc/resolv.conf /mnt/gentoo32/etc/

```

Mit diesen Mounts:

```
mount --bind /dev /mnt/gentoo32/dev

mount --bind /dev/pts /mnt/gentoo32/dev/pts

mount --bind /dev/shm /mnt/gentoo32/dev/shm

mount -t proc none /mnt/gentoo32/proc

mount -t sysfs none /mnt/gentoo32/sys

```

und diesem Chroot:

```
linux32 chroot /mnt/gentoo32 /bin/bash --login
```

Kann das mal jemand mit einem aktuellem 64bit System nachmachen?

----------

## Finswimmer

Ich habe das 1:1 übernommen und raus kommt:

uname -a

Linux laptop 3.5.3 #7 SMP Thu Nov 8 18:34:02 CET 2012 i686 Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz GenuineIntel GNU/Linux

Normales System:

Linux laptop 3.5.3 #7 SMP Thu Nov 8 18:34:02 CET 2012 x86_64 Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz GenuineIntel GNU/Linux

----------

## nanos

Danke fürs ausprobieren, Du verwendest nicht zufällig die Z-Shell?

Das ist nämlich der einzige Punkt dem ich diesen Fehler noch zutrauen würde.

Ansonsten ist es eine ganz normale Installation.

----------

## bell

Ist bei Dir vielleicht IA32_EMULATION aus dem Kernel rausgefallen? Ohne diese Option kann der Kernel keine 32-Bit Anwendungen ausführen.

----------

## nanos

Es ist tatsächlich die zsh, nachdem ich auf die Bash zurück gewechselt bin klappt auch der chroot wieder.

Ich werde mal sehen ob  ich da noch genauere Infos dazu bekomme und gegeben falls einen Bug-Report erstellen.

Vielen Dank für Eure Hilfe.

----------

## Randy Andy

Ahh, danke für die Rückmeldung.

Nun weiß ich auch wieder warum ich, trotz all der Annehmlichkeiten, der Z-shell entsagt habe   :Wink: 

Gruß, Andy.

----------

## toralf

 *nanos wrote:*   

> Danke fürs ausprobieren, Du verwendest nicht zufällig die Z-Shell?

 Wieso hat die (z-) Shell damit was zu tun ? Ist die so buggy ?

----------

## mv

 *toralf wrote:*   

> Wieso hat die (z-) Shell damit was zu tun?

 

Das kann ich auch nicht nachvollziehen: Die wird bei "/bin/bash" im letzten Teil der chroot ja gar nicht gestartet.

Es könnte höchstens sein, dass Du in einem Bash-Initscript eine für Dien chroot wichtige Environment-Variable gesetzt hast, im zsh-Initscript aber nicht: Vergleiche doch einmal die Ausgaben eines umgeleiteten "env"-Befehls.

----------

## nanos

Ich konnte keine nennenswerte Unterschiede der Ausgaben von env feststellen.

Hier mal ein diff der beiden Ausgaben von env:

```
diff bash.env zsh.env

3a4,5

> HISTFILE=/root/.history

> HISTSIZE=2000

10d11

< LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;usw. usw.

12a14

> OLDPWD=/root

17c19,20

< SHELL=/bin/bash

---

> SAVEHIST=2000

> SHELL=/bin/zsh

19,20c22,23

< SSH_CLIENT=192.168.44.225 49759 22

< SSH_CONNECTION=192.168.44.225 49759 192.168.44.20 22

---

> SSH_CLIENT=192.168.44.225 50009 22

> SSH_CONNECTION=192.168.44.225 50009 192.168.44.20 22

```

----------

