Hello.
My name is Gerson Rodríguez de los Santos, and I am working for the
Telematic Engineering Department at Carlos III University. We are
considering using EDIV/VNUML for a project, which uses User Mode Linux.
After using VNUML in 32 bit systems, I am trying to deploy it on 64 bit
hosts, but I am having some trouble which seems to have something to do
with UML. I have used UML in 2 situations
Case 1)
Host OS: Ubuntu 8.04 32 bits (32 bit host)
Kernel: linux-um-2.6.18.1-bb2-xt-4m (32 bit UML kernel)
Works ok: yes.
Case 2)
Host OS: Ubuntu 8.04 64 bits / SUSE Linux Enterprise Server 10 64 bit
(64 bit host)
Kernel: linux-um-2.6.18.1-bb2-xt-4m (32 bit UML kernel)
Works ok: no.
In case 2 I have noticed that:
1) In case 2, the "linux" process becomes "defunct" according to "ps -e"
output. As a result, the VM does not boot. The key point seems to be the
command line invoked by VNUML presented here (full trace attached in
output.txt):
/daemon: */usr/local/share/vnuml/kernels/linux
ubdb=/root/.vnuml/simulations/dynavnuml/vms/H1/fs/opt_fs
ubda=/root/.vnuml/simulations/dynavnuml/vms/H1/fs/root_cow_fs
hostfs=/root/.vnuml/simulations/dynavnuml/vms/H1/hostfs mem=32M
eth1=tuntap,H1-e1,fe:fd:0:0:1:1
uml_dir=/root/.vnuml/simulations/dynavnuml/vms/H1/ umid=run con=null
con1=pts mconsole=notify:/tmp/vnuml_notify.ctl.X16646 *
2) I have tried executing the UML kernel myself with that same command
line. After printing "Checking syscall emulation patch for
ptrace...missing", the proccess finishes with no further error message
displayed in the console. I don't even receive an status notification on
how the process ends (Stopped, Aborted or Segmentation Fault).
3) I have also tried executing the following line at
/usr/local/share/vnuml/kernels: "./linux
ubda=../filesystems/root_fs_tutorial mem=32M". The VM starts succesfully
and I can log as root as usual. (May it have something to do with the
COW feature?) No one in the VNUML forum seems to know anything about it
and the forum administrator advised to expose my problem here.
I have seen the archives to see if there is a similar problem, but I
haven't found someone with the same problem as me I am specially
interested in using 64 bit host OS as it is the only way we can fully
use the system resources our servers have. Is there anything I am doing
wrong?
Please, if there is any piece of information that you need to solve the
problem, simply ask.
Best regards and thanks in advance.
Gerson.
adscom01:~/Desktop/emulacion redes # vnumlparser.pl -t dynavnuml.xml -v -u root
-Z
host> /usr/bin/touch /root/.vnuml/LOCK
host> /sbin/modprobe tun
host> /usr/bin/touch /root/.vnuml/simulations/dynavnuml/lock
host> /usr/sbin/tunctl -u 0 -t H1-e1 -f /dev/net/tun
Set 'H1-e1' persistent and owned by uid 0
host> /sbin/ifconfig H1-e1 0.0.0.0 promisc up
host> /usr/sbin/tunctl -u 0 -t H2-e1 -f /dev/net/tun
Set 'H2-e1' persistent and owned by uid 0
host> /sbin/ifconfig H2-e1 0.0.0.0 promisc up
host> /usr/sbin/tunctl -u 0 -t H3-e1 -f /dev/net/tun
Set 'H3-e1' persistent and owned by uid 0
host> /sbin/ifconfig H3-e1 0.0.0.0 promisc up
host> /usr/sbin/tunctl -u 0 -t H4-e1 -f /dev/net/tun
Set 'H4-e1' persistent and owned by uid 0
host> /sbin/ifconfig H4-e1 0.0.0.0 promisc up
host> /sbin/brctl addbr Net0
host> /sbin/brctl stp Net0 off
host> /sbin/ifconfig Net0 0.0.0.0 promisc up
host> /sbin/brctl addbr Net1
host> /sbin/brctl stp Net1 off
host> /sbin/ifconfig Net1 0.0.0.0 promisc up
host> /sbin/brctl addbr Net2
host> /sbin/brctl stp Net2 off
host> /sbin/ifconfig Net2 0.0.0.0 promisc up
host> /sbin/brctl addbr Net3
host> /sbin/brctl stp Net3 off
host> /sbin/ifconfig Net3 0.0.0.0 promisc up
host> /usr/sbin/tunctl -t Net0 -u 0 -f /dev/net/tun
TUNSETIFF: Invalid argument
host> /sbin/ifconfig Net0 10.1.0.10 netmask 255.255.255.0 promisc
host> /sbin/route -A inet add -net 10.0.0.0/16 gw 10.1.0.1
host> /bin/chown -R 0 /root/.vnuml
host> /sbin/brctl addif Net1 H1-e1
host> /sbin/brctl addif Net1 H2-e1
host> /sbin/brctl addif Net2 H3-e1
host> /sbin/brctl addif Net3 H4-e1
H1> #!/bin/bash
H1> # UML boot file generated by vnumlparser.pl at Thu Oct 9 11:26:46 CEST 2008
H1> UTILDIR=/mnt/vnuml
H1> hostname H1
H1> ifconfig eth1 0.0.0.0 promisc up
H1> ifconfig eth1 10.1.1.10 netmask 255.255.255.0
H1> route -A inet add default gw 10.1.1.1
H1> HOSTNAME=$(hostname)
H1> grep $HOSTNAME /etc/hosts > /dev/null 2>&1
H1> if [ $? == 1 ]
H1> then
H1> echo >> /etc/hosts
H1> echo \# Hostname configuration >> /etc/hosts
H1> echo "10.1.1.10 $HOSTNAME" >> /etc/hosts
H1> fi
H1> mount none /mnt/hostfs -t hostfs -o
/root/.vnuml/simulations/dynavnuml/vms/H1/hostfs
H1> if [ $? != 0 ]
H1> then
H1> mount none /mnt/hostfs -t hostfs
H1> fi
H1> echo init_start > /proc/mconsole
H1> function add_groups() {
H1> while read group; do
H1> if ! grep "^$group:" /etc/group > /dev/null 2>&1; then
H1> groupadd $group
H1> fi
H1> done<$groups_file
H1> }
H1> function add_keys() {
H1> eval homedir=~$1
H1> if ! [ -d $homedir/.ssh ]; then
H1> su -pc "mkdir -p $homedir/.ssh" $1
H1> chmod 700 $homedir/.ssh
H1> fi
H1> if ! [ -f $homedir/.ssh/authorized_keys ]; then
H1> su -pc "touch $homedir/.ssh/authorized_keys" $1
H1> fi
H1> while read key; do
H1> if ! grep "$key" $homedir/.ssh/authorized_keys > /dev/null 2>&1; then
H1> echo $key >> $homedir/.ssh/authorized_keys
H1> fi
H1> done<$file
H1> }
H1> for file in `ls $UTILDIR/group_* 2> /dev/null`; do
H1> options=
H1> myuser=${file#$UTILDIR/group_}
H1> if [ "$myuser" == "root" ]; then continue; fi
H1> groups_file = `sed "s/^\*//" $file`
H1> add_groups
H1> if effective_group=`grep "^\*" $file`; then
H1> options="$options -g ${effective_group#\*}"
H1> fi
H1> other_groups=`sed '/^*/d;H;$!d;g;y/\n/,/' $file`
H1> if grep "^$myuser:" /etc/passwd > /dev/null 2>&1; then
H1> other_groups="-G `su -pc groups $myuser | sed
's/[[:space:]]\+/,/g'`$other_groups"
H1> usermod $options $initial_groups$other_groups $myuser
H1> else
H1> if [ "$other_groups" != "" ]; then other_groups="-G
${other_groups#,}"; fi
H1> useradd -m $options $other_groups $myuser
H1> fi
H1> done
H1> for file in `ls $UTILDIR/keyring_* 2> /dev/null`; do
H1> add_keys ${file#$UTILDIR/keyring_} < $file
H1> done
host> /bin/chmod a+x /tmp/vnuml_opt_fs.Q16626/umlboot
host> /usr/bin/mkisofs -R -quiet -o
/root/.vnuml/simulations/dynavnuml/vms/H1/fs/opt_fs /tmp/vnuml_opt_fs.Q16626/
host> /bin/rm -rf /tmp/vnuml_opt_fs.Q16626/
H2> #!/bin/bash
H2> # UML boot file generated by vnumlparser.pl at Thu Oct 9 11:26:46 CEST 2008
H2> UTILDIR=/mnt/vnuml
H2> hostname H2
H2> ifconfig eth1 0.0.0.0 promisc up
H2> ifconfig eth1 10.1.1.11 netmask 255.255.255.0
H2> route -A inet add default gw 10.1.1.1
H2> HOSTNAME=$(hostname)
H2> grep $HOSTNAME /etc/hosts > /dev/null 2>&1
H2> if [ $? == 1 ]
H2> then
H2> echo >> /etc/hosts
H2> echo \# Hostname configuration >> /etc/hosts
H2> echo "10.1.1.11 $HOSTNAME" >> /etc/hosts
H2> fi
H2> mount none /mnt/hostfs -t hostfs -o
/root/.vnuml/simulations/dynavnuml/vms/H2/hostfs
H2> if [ $? != 0 ]
H2> then
H2> mount none /mnt/hostfs -t hostfs
H2> fi
H2> echo init_start > /proc/mconsole
H2> function add_groups() {
H2> while read group; do
H2> if ! grep "^$group:" /etc/group > /dev/null 2>&1; then
H2> groupadd $group
H2> fi
H2> done<$groups_file
H2> }
H2> function add_keys() {
H2> eval homedir=~$1
H2> if ! [ -d $homedir/.ssh ]; then
H2> su -pc "mkdir -p $homedir/.ssh" $1
H2> chmod 700 $homedir/.ssh
H2> fi
H2> if ! [ -f $homedir/.ssh/authorized_keys ]; then
H2> su -pc "touch $homedir/.ssh/authorized_keys" $1
H2> fi
H2> while read key; do
H2> if ! grep "$key" $homedir/.ssh/authorized_keys > /dev/null 2>&1; then
H2> echo $key >> $homedir/.ssh/authorized_keys
H2> fi
H2> done<$file
H2> }
H2> for file in `ls $UTILDIR/group_* 2> /dev/null`; do
H2> options=
H2> myuser=${file#$UTILDIR/group_}
H2> if [ "$myuser" == "root" ]; then continue; fi
H2> groups_file = `sed "s/^\*//" $file`
H2> add_groups
H2> if effective_group=`grep "^\*" $file`; then
H2> options="$options -g ${effective_group#\*}"
H2> fi
H2> other_groups=`sed '/^*/d;H;$!d;g;y/\n/,/' $file`
H2> if grep "^$myuser:" /etc/passwd > /dev/null 2>&1; then
H2> other_groups="-G `su -pc groups $myuser | sed
's/[[:space:]]\+/,/g'`$other_groups"
H2> usermod $options $initial_groups$other_groups $myuser
H2> else
H2> if [ "$other_groups" != "" ]; then other_groups="-G
${other_groups#,}"; fi
H2> useradd -m $options $other_groups $myuser
H2> fi
H2> done
H2> for file in `ls $UTILDIR/keyring_* 2> /dev/null`; do
H2> add_keys ${file#$UTILDIR/keyring_} < $file
H2> done
host> /bin/chmod a+x /tmp/vnuml_opt_fs.R16631/umlboot
host> /usr/bin/mkisofs -R -quiet -o
/root/.vnuml/simulations/dynavnuml/vms/H2/fs/opt_fs /tmp/vnuml_opt_fs.R16631/
host> /bin/rm -rf /tmp/vnuml_opt_fs.R16631/
H3> #!/bin/bash
H3> # UML boot file generated by vnumlparser.pl at Thu Oct 9 11:26:46 CEST 2008
H3> UTILDIR=/mnt/vnuml
H3> hostname H3
H3> ifconfig eth1 0.0.0.0 promisc up
H3> ifconfig eth1 10.1.2.10 netmask 255.255.255.0
H3> route -A inet add default gw 10.1.2.1
H3> HOSTNAME=$(hostname)
H3> grep $HOSTNAME /etc/hosts > /dev/null 2>&1
H3> if [ $? == 1 ]
H3> then
H3> echo >> /etc/hosts
H3> echo \# Hostname configuration >> /etc/hosts
H3> echo "10.1.2.10 $HOSTNAME" >> /etc/hosts
H3> fi
H3> mount none /mnt/hostfs -t hostfs -o
/root/.vnuml/simulations/dynavnuml/vms/H3/hostfs
H3> if [ $? != 0 ]
H3> then
H3> mount none /mnt/hostfs -t hostfs
H3> fi
H3> echo init_start > /proc/mconsole
H3> function add_groups() {
H3> while read group; do
H3> if ! grep "^$group:" /etc/group > /dev/null 2>&1; then
H3> groupadd $group
H3> fi
H3> done<$groups_file
H3> }
H3> function add_keys() {
H3> eval homedir=~$1
H3> if ! [ -d $homedir/.ssh ]; then
H3> su -pc "mkdir -p $homedir/.ssh" $1
H3> chmod 700 $homedir/.ssh
H3> fi
H3> if ! [ -f $homedir/.ssh/authorized_keys ]; then
H3> su -pc "touch $homedir/.ssh/authorized_keys" $1
H3> fi
H3> while read key; do
H3> if ! grep "$key" $homedir/.ssh/authorized_keys > /dev/null 2>&1; then
H3> echo $key >> $homedir/.ssh/authorized_keys
H3> fi
H3> done<$file
H3> }
H3> for file in `ls $UTILDIR/group_* 2> /dev/null`; do
H3> options=
H3> myuser=${file#$UTILDIR/group_}
H3> if [ "$myuser" == "root" ]; then continue; fi
H3> groups_file = `sed "s/^\*//" $file`
H3> add_groups
H3> if effective_group=`grep "^\*" $file`; then
H3> options="$options -g ${effective_group#\*}"
H3> fi
H3> other_groups=`sed '/^*/d;H;$!d;g;y/\n/,/' $file`
H3> if grep "^$myuser:" /etc/passwd > /dev/null 2>&1; then
H3> other_groups="-G `su -pc groups $myuser | sed
's/[[:space:]]\+/,/g'`$other_groups"
H3> usermod $options $initial_groups$other_groups $myuser
H3> else
H3> if [ "$other_groups" != "" ]; then other_groups="-G
${other_groups#,}"; fi
H3> useradd -m $options $other_groups $myuser
H3> fi
H3> done
H3> for file in `ls $UTILDIR/keyring_* 2> /dev/null`; do
H3> add_keys ${file#$UTILDIR/keyring_} < $file
H3> done
host> /bin/chmod a+x /tmp/vnuml_opt_fs.Y16636/umlboot
host> /usr/bin/mkisofs -R -quiet -o
/root/.vnuml/simulations/dynavnuml/vms/H3/fs/opt_fs /tmp/vnuml_opt_fs.Y16636/
host> /bin/rm -rf /tmp/vnuml_opt_fs.Y16636/
H4> #!/bin/bash
H4> # UML boot file generated by vnumlparser.pl at Thu Oct 9 11:26:46 CEST 2008
H4> UTILDIR=/mnt/vnuml
H4> hostname H4
H4> ifconfig eth1 0.0.0.0 promisc up
H4> ifconfig eth1 10.1.3.10 netmask 255.255.255.0
H4> route -A inet add default gw 10.1.3.1
H4> HOSTNAME=$(hostname)
H4> grep $HOSTNAME /etc/hosts > /dev/null 2>&1
H4> if [ $? == 1 ]
H4> then
H4> echo >> /etc/hosts
H4> echo \# Hostname configuration >> /etc/hosts
H4> echo "10.1.3.10 $HOSTNAME" >> /etc/hosts
H4> fi
H4> mount none /mnt/hostfs -t hostfs -o
/root/.vnuml/simulations/dynavnuml/vms/H4/hostfs
H4> if [ $? != 0 ]
H4> then
H4> mount none /mnt/hostfs -t hostfs
H4> fi
H4> echo init_start > /proc/mconsole
H4> function add_groups() {
H4> while read group; do
H4> if ! grep "^$group:" /etc/group > /dev/null 2>&1; then
H4> groupadd $group
H4> fi
H4> done<$groups_file
H4> }
H4> function add_keys() {
H4> eval homedir=~$1
H4> if ! [ -d $homedir/.ssh ]; then
H4> su -pc "mkdir -p $homedir/.ssh" $1
H4> chmod 700 $homedir/.ssh
H4> fi
H4> if ! [ -f $homedir/.ssh/authorized_keys ]; then
H4> su -pc "touch $homedir/.ssh/authorized_keys" $1
H4> fi
H4> while read key; do
H4> if ! grep "$key" $homedir/.ssh/authorized_keys > /dev/null 2>&1; then
H4> echo $key >> $homedir/.ssh/authorized_keys
H4> fi
H4> done<$file
H4> }
H4> for file in `ls $UTILDIR/group_* 2> /dev/null`; do
H4> options=
H4> myuser=${file#$UTILDIR/group_}
H4> if [ "$myuser" == "root" ]; then continue; fi
H4> groups_file = `sed "s/^\*//" $file`
H4> add_groups
H4> if effective_group=`grep "^\*" $file`; then
H4> options="$options -g ${effective_group#\*}"
H4> fi
H4> other_groups=`sed '/^*/d;H;$!d;g;y/\n/,/' $file`
H4> if grep "^$myuser:" /etc/passwd > /dev/null 2>&1; then
H4> other_groups="-G `su -pc groups $myuser | sed
's/[[:space:]]\+/,/g'`$other_groups"
H4> usermod $options $initial_groups$other_groups $myuser
H4> else
H4> if [ "$other_groups" != "" ]; then other_groups="-G
${other_groups#,}"; fi
H4> useradd -m $options $other_groups $myuser
H4> fi
H4> done
H4> for file in `ls $UTILDIR/keyring_* 2> /dev/null`; do
H4> add_keys ${file#$UTILDIR/keyring_} < $file
H4> done
host> /bin/chmod a+x /tmp/vnuml_opt_fs.W16641/umlboot
host> /usr/bin/mkisofs -R -quiet -o
/root/.vnuml/simulations/dynavnuml/vms/H4/fs/opt_fs /tmp/vnuml_opt_fs.W16641/
host> /bin/rm -rf /tmp/vnuml_opt_fs.W16641/
host> /bin/chown 0 /tmp/vnuml_notify.ctl.X16646
host> /bin/chown -R 0 /root/.vnuml
daemon: /usr/local/share/vnuml/kernels/linux
ubdb=/root/.vnuml/simulations/dynavnuml/vms/H1/fs/opt_fs
ubda=/root/.vnuml/simulations/dynavnuml/vms/H1/fs/root_cow_fs
hostfs=/root/.vnuml/simulations/dynavnuml/vms/H1/hostfs mem=32M
eth1=tuntap,H1-e1,fe:fd:0:0:1:1
uml_dir=/root/.vnuml/simulations/dynavnuml/vms/H1/ umid=run con=null con1=pts
mconsole=notify:/tmp/vnuml_notify.ctl.X16646
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...missing
Checking for tmpfs mount on /dev/shm...nothing mounted on /dev/shm
Checking PROT_EXEC mmap in /tmp/...OK
Checking for the skas3 patch in the host:
- /proc/mm...not found
- PTRACE_FAULTINFO...not found
- PTRACE_LDT...not found
UML running in SKAS0 mode
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...missing
Boot timeout for virtual machine H1 reached. Abort, Retry, or Continue?
[A/r/c]:
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user