I'd venture to say that a lot of people need a hammer and not a swiss
army knife.  I for once wrote the steps down and will be able to
reference them later; I figured I'd safe people some time by
shortcutting that process.  But I am indifferent and it is your port.

On Wed, Feb 11, 2009 at 06:10:56PM -0600, Todd T. Fries wrote:
> I know its not what you sent.  I incorporated what you provided into
> what the README.OpenBSD is doing..
> 
> - I added the 'ftp ftp://..' url to show where to get a bootable iso
> - I changed the default example to be installing off an iso instead of
>   a floppy
> - I used 'virtual.img' instead of 'virtual.hd' since people seem to
>   relate better to an .img than a .hd
> 
> The goal of README.OpenBSD is to show easily how to use qemu.  It does
> that.
> 
> It makes it hard to use it incorrectly/insecurely (namely, as root, which
> you seem to like to do), which is only required if you don't want to
> learn the fd passing stuff, or if you have an amd64, which segv's on
> the user mode (slirp) code.  I've not been able to decipher exactly
> why this is, I beg any one else to figure this out so the first
> ``NOTE:'' can go away.. and with it (I presume) your objections.
> 
> Thanks,
> -- 
> Todd Fries .. [email protected]
> 
>  _____________________________________________
> |                                             \  1.636.410.0632 (voice)
> | Free Daemon Consulting, LLC                 \  1.405.227.9094 (voice)
> | http://FreeDaemonConsulting.com             \  1.866.792.3418 (FAX)
> | "..in support of free software solutions."  \          250797 (FWD)
> |                                             \
>  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
>                                                  
>               37E7 D3EB 74D0 8D66 A68D  B866 0326 204E 3F42 004A
>                         http://todd.fries.net/pgp.txt
> 
> Penned by Marco Peereboom on 20090211 17:57.10, we have:
> | This is not really what I sent you.  This is again all kinds of magic
> | that most people don't need.  The thing I sent you was a quick cut and
> | paste this and it works; you are adding all kinds of decision points
> | which implies a whole lot of reading and again getting stuck in the same
> | places that we get stuck now.  Not everyone uses qemu in complex setups;
> | I just use it to reboot a lot and all the fancy stuff is just a waste of
> | time.  In fact I think this README is equally useful as the man page;
> | have to read it all and then consult man for it to make sense.
> | 
> | FWIW
> | 
> | On Wed, Feb 11, 2009 at 04:56:05PM -0600, Todd T. Fries wrote:
> | > Could anyone explain why one would want to do '-no-fd-bootchk' ?  I mean
> | > it is there, but what reason would one want to put it on the cmdline?
> | > 
> | > In any event, here's my integration of your suggestions below with
> | > what exists already.
> | > 
> | > Index: README.OpenBSD
> | > ===================================================================
> | > RCS file: /cvs/ports/emulators/qemu/files/README.OpenBSD,v
> | > retrieving revision 1.3
> | > diff -u -r1.3 README.OpenBSD
> | > --- README.OpenBSD        11 Dec 2008 09:17:33 -0000      1.3
> | > +++ README.OpenBSD        11 Feb 2009 22:55:31 -0000
> | > @@ -3,15 +3,37 @@
> | >  
> | >  ==> Quick Start
> | >  
> | > -1. get a bootable floppy image
> | > -2. qemu-img create -f qcow2 virtual.hd 10G
> | > -3. qemu -m 32 -fda floppy.fs -boot a -monitor stdio virtual.hd
> | > -     (initial install to hard drive)
> | > -4. qemu-img convert -c -O qcow2 virtual.hd tmp && mv tmp virtual.hd
> | > -     (compress hard drive while qemu is not running)
> | > -5. qemu -m 32 -monitor stdio virtual.hd
> | > -     (normal boot from hard drive)
> | > +NOTE: amd64 cannot use '-net user' without SEGV'ing, to work around
> | > +      this, either run qemu as root by replacing
> | > + qemu -m 32 ..
> | > +      in this quick start section with
> | > +         sudo env ETHER=em0 qemu -net nic,model=rtl8139 -net tap -m 32 ..
> | > +      or by reading the 'tap mode' section below.
> | >  
> | > +1. Get a bootable CDROM image
> | > +
> | > +    $ ftp ftp://ftp.openbsd.org/pub/OpenBSD/snapshots/i386/cd45.iso
> | > +
> | > +2. Create a virtual disk image:
> | > +
> | > +    $ qemu-img create -f qcow2 virtual.img 10G
> | > +
> | > +3. Install the os:
> | > +
> | > +    $ qemu -m 32 -monitor stdio -hda virtual.img -cdrom cd45.iso -boot d
> | > +
> | > +   NOTE: start this inside an xterm or equivalent
> | > +   NOTE: be sure to choose serial console during install
> | > +
> | > +4. Compress the virtual disk:
> | > +
> | > +    $ qemu-img convert -c -O qcow2 virtual.img v.tmp && mv v.tmp 
> virtual.img
> | > +
> | > +   NOTE: do not do this while qemu is running / using this virtual disk
> | > +
> | > +5. Boot normally from the virtual disk:
> | > +
> | > +    $ qemu -m 32 -nographic -hda virtual.img 
> | >  
> | >  ==> Networking
> | >  
> | > @@ -34,13 +56,12 @@
> | >    makes userland network calls for tcp/udp operations. icmp and other 
> things
> | >    are not possible in this mode.
> | >  
> | > -  Note: If you use one '-net' cmdline argument, qemu assumes you know 
> what you
> | > -  want and clears defaults for the rest of the -net defaults.
> | > -
> | > -  Note: The guest mode networking does not currently support IPv6, and
> | > -  qemu will complain that it cannot find a dns server if /etc/resolv.conf
> | > -  contains only IPv6 dns servers.
> | > +  NOTE: If you use one '-net' cmdline argument, qemu assumes you know 
> what you
> | > + want and clears defaults for the rest of the -net defaults.
> | >  
> | > +  NOTE: The guest mode networking does not currently support IPv6, and
> | > + qemu will complain that it cannot find a dns server if
> | > + /etc/resolv.conf contains only IPv6 dns servers.
> | >  
> | >  2.  tap mode
> | >  
> | > @@ -66,7 +87,15 @@
> | >    tunnel device and then use sudo again to drop privileges and start 
> qemu:
> | >  
> | >         $ sudo sh -c "sudo -u $USER qemu -nographic -net nic -net 
> tap,fd=3 \
> | > -             virtual.hd 3<>/dev/tun0"
> | > +             virtual.img 3<>/dev/tun0"
> | > +
> | > +  NOTE: sudo calls closefrom(2).  In order to have more than one fd 
> passed
> | > + tap interface, a line to sudoers akin to:
> | > +
> | > +         Defaults closefrom_override
> | > +
> | > +        then calling sudo via 'sudo -C 5 -u $USER qemu ..' is required.
> | > + See sudoers(5) and sudo(8) for details.
> | >  
> | >    An alternative to the procedure described above is to have qemu set up 
> the
> | >    network via ${SYSCONFDIR}/qemu-ifup. This is not recommended however, 
> since
> | > @@ -76,7 +105,7 @@
> | >    ${SYSCONFDIR}/qemu-ifup contains some default settings that permit one 
> to do
> | >    the following:
> | >  
> | > - # qemu -net nic -net tap virtual.hd
> | > + # qemu -net nic -net tap virtual.img
> | >  
> | >    It presumes you have a 'trunk0' interface you wish the tun(4) 
> interface to
> | >    talk to.  It presumes you want 'bridge0' to be used to bridge the two.
> | > @@ -100,7 +129,7 @@
> | >     # export BRIDGE=bridge101
> | >     # qemu -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:35:00 \
> | >   -net tap,vlan=0 -vnc :0 -localtime -usb -usbdevice tablet \
> | > - -m 256 -hda virtual.hd -monitor stdio
> | > + -m 256 -hda virtual.img -monitor stdio
> | >     {tun0 (bridge101 <-> trunk101)brconfig: bridge101: No such process
> | >     brconfig: bridge101: No such process
> | >     }
> | > @@ -119,15 +148,16 @@
> | >                  port 6 ifpriority 0 ifcost 0
> | >          Addresses (max cache: 100, timeout: 240):
> | >  
> | > -  Note: when running multiple qemu sessions simultaneously on the same 
> bridge,
> | > -  care must be taken because the network mac address defaults
> | > -  to 52:54:00:12:34:56 for every qemu instance.  To change this, observe
> | > -  the macaddr= syntax in the above example.
> | > +  NOTE: When running multiple qemu sessions simultaneously on the same 
> bridge,
> | > + care must be taken because the network mac address defaults to
> | > + 52:54:00:12:34:56 for every qemu instance.  To change this, observe
> | > + the macaddr= syntax in the above example and choose a unique lladdr
> | > + per qemu nic.
> | >  
> | >  ==> Mice
> | >  
> | > -  Note: Certain m$ os's work so much better with the tablet usb device 
> than
> | > -  the normal ps2 mouse handling.  See the above example for usage.
> | > +  NOTE: Certain OS's work much better with the tablet usb device than
> | > + the normal ps2 mouse handling.  See the above example for usage.
> | >  
> | >  ==> Serial Console
> | >  
> | > @@ -135,14 +165,14 @@
> | >       be available, and so on.  There are two ways to accomplish this, 
> both in
> | >       effect the same solution:
> | >  
> | > -    a. qemu -vnc :0 -serial stdio .. virtual.hd -cdrom install43.iso 
> -boot d
> | > +    a. qemu -vnc :0 -serial stdio .. virtual.img -cdrom install43.iso 
> -boot d
> | >  
> | >   - this option permits you to use vnc from some system to connect to
> | >     the qemu instance and 'set tty com0' at the 'boot>' prompt.
> | >   - you may then disconnect vnc and use the terminal from which you
> | >     started qemu to do the install
> | >  
> | > -    b. qemu -nographic .. virtual.hd -fda floppy43.fs -boot a
> | > +    b. qemu -nographic .. virtual.img -fda floppy45.fs -boot a
> | >  
> | >   - this maps both the serial port and the (qemu) monitor prompt to
> | >     the terminal qemu was started on
> | > @@ -151,7 +181,7 @@
> | >   - preparation of the floppy image to force serial console mode is
> | >     straightforward:
> | >  
> | > -         vnconfig svnd0 floppy43.fs
> | > +         vnconfig svnd0 floppy45.fs
> | >           mount /dev/svnd0c /mnt
> | >           mkdir /mnt/etc
> | >           echo set tty com0 > /mnt/etc/boot.conf
> | > @@ -160,12 +190,13 @@
> | >  
> | >       .. be sure to choose 'yes' for setting com0 to be the serial 
> console.
> | >  
> | > -   Note: OpenBSD poweroff does work with qemu, which actually causes qemu
> | > -   itself to exit.  This is a good thing, as it is currently not 
> possible to
> | > -   set what block device is booted from at runtime from qemu.  So if you 
> start
> | > -   an installation booting from a cdrom, you will always boot off a cdrom
> | > -   every time you reboot that qemu session until you exit and start qemu
> | > -   again booting off the virtual hard drive.
> | > +  NOTE: OpenBSD poweroff does work with qemu, which actually causes qemu
> | > + itself to exit.  This is a good thing, as it is currently not
> | > + possible to set what block device is booted from at runtime from
> | > + qemu.  So if you start an installation booting from a cdrom, you
> | > + will always boot off a cdrom every time you reboot that qemu session
> | > + until you exit and start qemu again booting off the virtual hard
> | > + drive.
> | >  
> | >  ==> daemonized qemu
> | >  
> | > @@ -176,22 +207,29 @@
> | >     is a complete example that may be cut-and-pasted into rc.local:
> | >  
> | >      hddir=/var/vm
> | > +    USER=qemu
> | >      if [ -x ${TRUEPREFIX}/bin/qemu ]; then
> | >          echo -n 'Qemu: vmi386'
> | >          (
> | > -            export ETHER=trunk101
> | > -            export BRIDGE=bridge101
> | > +     ifconfig tun0 link0
> | > +     ifconfig bridge101 create
> | > +     brconfig bridge101 add trunk101 add tun0 up
> | >  
> | > -            ${TRUEPREFIX}/bin/qemu \
> | > +            sh -c "sudo -u $USER \
> | > +         ${TRUEPREFIX}/bin/qemu \
> | >                  -daemonize \
> | >                  -nographic \
> | >                  -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:4e:62:8f \
> | > -                -net tap,vlan=0 \
> | > +                -net tap,vlan=0,fd=3 \
> | >                  -m 128 \
> | > -                -hda $hddir/vmi386.hd \
> | > +                -hda $hddir/virtual.img \
> | >                  -serial telnet:127.0.0.1:1010,server,nowait \
> | > -                -monitor telnet:127.0.0.1:1011,server,nowait
> | > +                -monitor telnet:127.0.0.1:1011,server,nowait \
> | > +         3<>/dev/tun0"
> | >          )
> | >          echo "."
> | >      fi
> | > +
> | > +    NOTE: this presumes the user `qemu' exists, create it or set USER= 
> to an
> | > +          existing user to use this example.
> | >  
> | > -- 
> | > Todd Fries .. [email protected]
> | > 
> | >  _____________________________________________
> | > |                                             \  1.636.410.0632 (voice)
> | > | Free Daemon Consulting, LLC                 \  1.405.227.9094 (voice)
> | > | http://FreeDaemonConsulting.com             \  1.866.792.3418 (FAX)
> | > | "..in support of free software solutions."  \          250797 (FWD)
> | > |                                             \
> | >  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
> | >                                                  
> | >               37E7 D3EB 74D0 8D66 A68D  B866 0326 204E 3F42 004A
> | >                         http://todd.fries.net/pgp.txt
> | > 
> | > Penned by Todd T. Fries on 20090210 16:08.05, we have:
> | > | Honestly, I have two problems with this.
> | > | 
> | > | 1) nowhere do you mention you require root privs
> | > | 
> | > | 2) this does not drop to a non root user
> | > | 
> | > | Unfortunately, we almost need to mention somewhere that
> | > | amd64 sucks wrt 'user' aka 'slirp' mode net.
> | > | 
> | > | Let me get back with a better solution tomorrow.
> | > | 
> | > | Thanks,
> | > | -- 
> | > | Todd Fries .. [email protected]
> | > | 
> | > |  _____________________________________________
> | > | |                                             \  1.636.410.0632 (voice)
> | > | | Free Daemon Consulting, LLC                 \  1.405.227.9094 (voice)
> | > | | http://FreeDaemonConsulting.com             \  1.866.792.3418 (FAX)
> | > | | "..in support of free software solutions."  \          250797 (FWD)
> | > | |                                             \
> | > |  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
> | > |                                                  
> | > |               37E7 D3EB 74D0 8D66 A68D  B866 0326 204E 3F42 004A
> | > |                         http://todd.fries.net/pgp.txt
> | > | 
> | > | Penned by Antoine Jacoutot on 20090210 22:18.01, we have:
> | > | | On Tue, 10 Feb 2009, Marco Peereboom wrote:
> | > | | 
> | > | | > Never got a reply on this.
> | > | | > 
> | > | | 
> | > | | As I'm dumb too, I'm all for it.
> | > | | However, I wonder if it wouln't be a better idea to merge the "Quick 
> | > | | start" and your "Even quicker start...".
> | > | | Also, I would use /bin/sh instead of /bin/ksh for the scripts.
> | > | | While here, could you add RCS Id to the README.OpenBSD file.
> | > | | 
> | > | | If this eventually gets commited, it also needs a package bump.
> | > | | 
> | > | | Anyway, I like the idea :)
> | > | | 
> | > | | Cheers!
> | > | | 
> | > | | > On Wed, Dec 24, 2008 at 11:47:23AM -0600, Marco Peereboom wrote:
> | > | | > > I always spend 30 minutes re-figuring out how to get qemu 
> running.  I
> | > | | > > know folks like thib and some others have the same issue.  We 
> simply
> | > | | > > aren't smart enough to understand the rest of the README.  Here 
> is a
> | > | | > > diff to the README to make it useful for people who don't know 
> how to
> | > | | > > get this working quickly.
> | > | | > > 
> | > | | > > ok
> | > | | > > 
> | > | | > > --- /usr/ports/emulators/qemu/files/README.OpenBSD        Thu Dec 
> 11 03:17:33 2008
> | > | | > > +++ /usr/local/share/doc/qemu/README.OpenBSD      Wed Dec 24 
> 11:40:58 2008
> | > | | > > @@ -12,7 +12,35 @@ README for OpenBSD users
> | > | | > >  5. qemu -m 32 -monitor stdio virtual.hd
> | > | | > >       (normal boot from hard drive)
> | > | | > >  
> | > | | > > +==> Even quicker start with access to the outside world
> | > | | > >  
> | > | | > > +1. Get a CDROM image:
> | > | | > > + ftp ftp://ftp.openbsd.org/pub/OpenBSD/snapshots/i386/cd44.iso
> | > | | > > +2. Create a virtual disk image:
> | > | | > > + qemu-img create boot.img 1G
> | > | | > > +3. First run with network access (replace nfe0 with the nic that 
> is attached
> | > | | > > +   to the physical network):
> | > | | > > + ETHER=nfe0 BRIDGE=bridge0 qemu -no-fd-bootchk -hda boot.img \
> | > | | > > + -cdrom cd44.iso -net nic,model=rtl8139 -net tap
> | > | | > > +4. Install OS as usual and use re0 for external network access; 
> optionally
> | > | | > > +   select serial console.
> | > | | > > +5. Create runqemu script with the following:
> | > | | > > + #!/bin/ksh
> | > | | > > + export ETHER=nfe0
> | > | | > > + export BRIDGE=bridge0
> | > | | > > + qemu -no-fd-bootchk -hda boot.img -net nic,model=rtl8139 -net 
> tap
> | > | | > > +
> | > | | > > +   In serial console mode do this:
> | > | | > > + #!/bin/ksh
> | > | | > > + export ETHER=nfe0
> | > | | > > + export BRIDGE=bridge0
> | > | | > > + qemu -no-fd-bootchk -nographic -serial stdio -hda boot.img \
> | > | | > > + -net nic,model=rtl8139 -net tap
> | > | | > > + 6. Make the script runable:
> | > | | > > + chmod +x runqemu
> | > | | > > + 7. Run it!
> | > | | > > + ./runqemu
> | > | | > > +
> | > | | > >  ==> Networking
> | > | | > >  
> | > | | > >  1.  Default Settings
> | > | | > > 
> | > | | > 
> | > | | > 
> | > | | 
> | > | | -- 
> | > | | Antoine
> | > 
> 

Reply via email to