# user-mode-linux probleme

## ro

also mein user-mode-linux funktioniert soweit (uml-sources version 2.6.8.1-r8 auf nem (host:) gentoo-dev-sources version 2.6.10-r6), alles wunderbar: netzwerk, apache+php+ssl, ntp, samba, nfs etc. netzwerkzugang geht auch. Aber:

1.) Hab ich gelesen, dass UML nicht besonders ressourcenfressend ist, was bei mir gar nicht stimmt: ich habe zwar am UML-System ca. 40 Prozesse laufen, am Hostsystem (AMD64 3400+) ca. 80 (wenn UML nicht gestartet wird), wenn ich UML starte und irgendwas kompiliere dauert das länger als auf einer 200MHz Box! Und am Hostsystem zeigt mir top irgendwas zwischen 500 und 1000 Prozesse! 

2.) Möchte ich UML als shell-server laufen haben, die Nutzer sollen jedoch nicht wissen dass es sich nur um ein UML handelt, d.h. zB dass /proc/cpuinfo geändert werden muss. Hat da jemand Infos dazu (google hat noch nix nützliches ausgespuckt!)?

----------

## slick

1. Dein Freund ist SKAS was allerdings (momentan) zu Problemen bei einem 2.6er Host führt. Siehe https://forums.gentoo.org/viewtopic-t-291638.html

2. http://user-mode-linux.sourceforge.net/honeypots.html -> hppfs

----------

## TheSmallOne

-–- gelöscht -–-Last edited by TheSmallOne on Tue Dec 25, 2012 10:36 pm; edited 1 time in total

----------

## slick

Ja, genau das mit dem Beenden meine ich

----------

## ro

naja, das problem mit dem herunterfahren hab ich irgendwie nicht...das letzte was ich sehe ist ein "Power down" und dann bin ich in meiner shell  :Wink: 

----------

## slick

Die Probleme wirst Du aber bekommen wenn Du den SKAS-Patsch auf dem 2.6er hast und den brauchst du aber wenn es performant sein soll, siehe 1. Frage von Dir.

----------

## TheSmallOne

-–- gelöscht -–-Last edited by TheSmallOne on Tue Dec 25, 2012 10:36 pm; edited 1 time in total

----------

## ro

also die Probleme mit dem Herunterfahren hab ich auch, aber nur manchmal. Aber nachdem das Ding ja dann bei mir dann als Server eingesetzt wird ist das ja egal, der soll sowieso nicht herunterfahren  :Wink: 

Hab den Host-Kernel jetzt mit SKAS gepatcht, funktioniert wirklich gut und vorallem schnell!  :Very Happy: 

Also ich hab wie gesagt die usermode-sourcen 2.6.8.1-r8, und nach einer Zeit gibts folgendes:

```
Kernel panic: kernel BUG at mm/swap_state.c:124!

 <6> SysRq : Show Regs
```

[edit]Aha, mit 2.4 erhalte ich:

```
Kernel panic: Kernel stack overflow
```

 [/edit]

und naja, nicht mehr zu bedienen (Magic Keys hab ich noch nicht probiert). Was könnte das sein? (Schon klar, irgendein Fehler), memtest sagt aber dass mein RAM nicht kaputt ist, UML mit "debug" spuckt auch nix aus! Ich probier jetzt mal den 2.4er kernel, aber eigentlich will ich schon 2.6 verwenden.

----------

## obscurus

Tach auch!

Ich fand das Thema "user-mode-linux probleme" soooo schön, daß ich auch etwas dazu beitragen wollte...

Allerdings komm ich nicht annähernd so weit wie alle anderen.

Gemäß Anleitung http://www.gentoo.org/doc/en/uml.xml gehe ich vor und patze schon beim ersten Anlauf:

```

ibm linux # make linux ARCH=um

  CHK     include/linux/version.hnexistent symbol X86_FIND_SMP_CONFIG

  SPLIT   include/linux/autoconf.h -> include/config/*MPPARSE

  HOSTCC  arch/um/sys-i386/util/mk_scstent symbol GENERIC_IRQ_PROBE

  HOSTCC  arch/um/kernel/skas/util/mk_ptregsymbol X86_BIOS_REBOOT

  CHK     arch/um/include/skas_ptregs.hent symbol PC

  UPD     arch/um/include/skas_ptregs.h

  CHK     arch/um/include/sysdep-i386/sc.h

  UPD     arch/um/include/sysdep-i386/sc.h

  SYMLINK include/asm-um/arch

  SYMLINK arch/um/include/sysdep

  SYMLINK arch/um/os

  SYMLINK include/asm-um/archparam.h

  SYMLINK include/asm-um/system.h

  SYMLINK include/asm-um/sigcontext.h

  SYMLINK include/asm-um/processor.h

  SYMLINK include/asm-um/ptrace.h

  SYMLINK include/asm-um/arch-signal.h

 SYMLINK include/asm-um/module.h

  CHK     arch/um/include/uml-config.h

  UPD     arch/um/include/uml-config.h

  HOSTCC  arch/um/util/mk_constants_kern.o

In file included from include/asm/thread_info.h:17,

                 from include/linux/thread_info.h:21,

                 from include/linux/spinlock.h:12,

                 from include/linux/seqlock.h:30,

                 from include/linux/time.h:7,

                 from arch/um/util/mk_constants_kern.c:3:

include/asm/processor.h:68: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)

include/asm/processor.h:68: error: requested alignment is not a constant

make[1]: *** [arch/um/util/mk_constants_kern.o] Error 1

make: *** [arch/um/util] Error 2

```

Ich nutze die gentoo-dev-sources-2.6.10-r6 auf einem IBM Thinkpad R40, falls das von Belang sein könnte.

Mein nächster Verusch:

```
ibm linux # make menuconfig ARCH=um

scripts/kconfig/mconf arch/um/Kconfig

#

# using defaults found in .config

#

*** End of Linux kernel configuration.

*** Execute 'make' to build the kernel or try 'make help'.

```

```
ibm linux # make linux ARCH=um

  CHK     include/linux/version.h

  SPLIT   include/linux/autoconf.h -> include/config/*

make[1]: `arch/um/sys-i386/util/mk_sc' is up to date.

  CHK     arch/um/include/uml-config.h

  UPD     arch/um/include/uml-config.h

  HOSTCC  arch/um/util/mk_constants_kern.o

In file included from include/asm/thread_info.h:17,

                 from include/linux/thread_info.h:21,

                 from include/linux/spinlock.h:12,

                 from include/linux/seqlock.h:30,

                 from include/linux/time.h:7,

                 from arch/um/util/mk_constants_kern.c:3:

include/asm/processor.h:68: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)

include/asm/processor.h:68: error: requested alignment is not a constant

make[1]: *** [arch/um/util/mk_constants_kern.o] Error 1

make: *** [arch/um/util] Error 2

```

Ist mein L1-Cache wirklich fratze, oder hab ich was übersehen, bzw. vergessen etwas zu tun?

----------

## ro

hatte sowas ähnliches, hab dann die gentoo-dev-sources gelöscht und neu emerged, anschließend ein neues "make menuconfig ARCH=um" und "make linux ARCH=um" und dann hats funktioniert.

----------

## obscurus

 *ro wrote:*   

> hatte sowas ähnliches, hab dann die gentoo-dev-sources gelöscht und neu emerged, anschließend ein neues "make menuconfig ARCH=um" und "make linux ARCH=um" und dann hats funktioniert.

 

Hmm, was ich bei sowas nicht raffe ist, daß ich doch die Quellen unangetastet lasse, oder nicht?

Ich mein im Verzeichnis /usr/src/linux liegen wie der Verzeichnisname verrät, bzw. nahelegt, daß hier die Quellen drin sind.

Wenn ich an denen rumpfusche, sinds ja keine Quellen mehr.

Ich weiß zwar nicht, obs wirklich so ist und die unangetastet bleiben, aber falls ja dürfte das nicht daran liegen.

Aber nicht denken, machen.... *gfg*

Ich werds mal antesten die erst zu unmergen und dann neu zu emergen.

Mal schaun....

Danke trotzdem! :)

----------

## ro

nicht über alles den kopf zerbrechen und versuchen zu verstehen  :Wink:  ich verstehs auch nicht ...aber egal.

Aber übrigens: dein /usr/src/linux zeigt auf die richtigen sourcen (wenn du mehrere installiert hast)? und sonst probier mal die vanilla-sourcen.

----------

## obscurus

 *ro wrote:*   

> Aber übrigens: dein /usr/src/linux zeigt auf die richtigen sourcen (wenn du mehrere installiert hast)? und sonst probier mal die vanilla-sourcen.

 

Das passt schon so:

```
ibm src # ls -alsh linux

0 lrwxrwxrwx  1 root root 22 Mar  3 13:26 linux -> linux-2.6.10-gentoo-r6

```

Weiterhin will ich schon bei den development-sourcen bleiben, also Kernel 2.6

----------

## moe

Mal ganz Quick'n Dirty ein Minihowto:

```

emerge =gentoo-dev-sources-2.6.10-r6

cd /usr/src/

mv linux-2.6.10-gentoo-r6 linux-2.6.10-umlhost1

cd linux-2.6.10-umlhost1

wget Link*

bzcat skas-2.6.10-v8-rc2.patch.bz2 | patch -p1

..siehe Hinweis1..

make menuconfig && make ... halt ganz normal den Kernel installieren..

```

Link: hat nicht in die Zeile gepasst, deshalb hier kopieren

Das wars zum Hostkernel

Hinweis1: original hat das Ding dann ne ziemlich lange Extraversion dran (2.6.10-gentoo-r6-skas3-v8 oder so), darum hab ich die Datei localversion-skas gelöscht, und in der Makefile EXTRAVERSION in der vierten Zeile einen anderen Wert (-umlhost1) gegeben..

Nun der Kernel für das virtuelle Linux, der Einfachkeit halber der gleiche..

```

cd /usr/src

cp -r linux-2.6.10-umlhost1 linux-2.6.10-um1

cd linux-2.6.10-um1

make clean && make distclean

..Hinweis1 gilt wieder (diesmal sinnvollerweise eine andere EXTRAVERSION (-um1), und Hinweis2..

make menuconfig && make linux

```

Hinweis2: Weil ich vergesslich bin hab ich im Makefile in Zeile 193 folgendes gemacht:

 *Quote:*   

> #ARCH           ?= $(SUBARCH)
> 
> ARCH            = um
> 
> CROSS_COMPILE   ?=

 

Ansonsten muss man bei jedem make irgendwas ARCH=um ranhängen!!

So dass wars auch schon, zum Testen noch das Debian-rootfs von der uml-Seite runtergeladen, gestartet, gefreut  :Smile: 

Zum Vergleichen noch die Kernelconfigs für Host und Client. Wer meine Clientconfig unverändert nimmt, hat zum einen Sysemu aber muss beim Booten des Debianimages devfs=mount übergeben.

HTH & Viel Spass Maurice

edit: Achja wozu das ganze? Um zu zeigen dass und wie es geht, dass dieser Kernel keine Prozessleichen hinterlässt, und dass sysemu performanter laufen soll als das "normale" uml.

----------

## obscurus

 *moe wrote:*   

> Mal ganz Quick'n Dirty ein Minihowto:

 

Danke moe für deine Mühen!

Werd ich gleich mal antesten! :)

----------

