= Notes from Upgrading to Ubuntu 12.04 from 10.04 = == The new VMs == Upgraded the VM instance by swapping in an Ubuntu 10.04 image (the pre-upgrade version) and installing a new 12.04 i386 install. Special things I did: * Used a hardware type that supports virtualization - {{{pc2133}}} * Used tb-allow-external to allow the Ubuntu install to proceed. It expects external connectivity. * I added the Ubunutu 10.04 image to the list of images allowed to access external hosts temporarily to do this * The image file itself was created using {{{ $ qemu-img create -f qcow2 /tmp/pangolin.img 10G }}} To do the install on an X window I needed to log into the DETER node hosting qemu using {{{ $ ssh -Y pc055 }}} Once I had a bootable image, I booted it, logged in, and changed {{{/etc/apt/sources.list}}} to point to scratch instead of the various ubuntu and cannonical sources. After the substitutions there were 2 duplicates that I commented out. It's important to make the configuration user something that won't need to be overwritten by experiments. I used {{{toor}}}, well after I remembereed this. The default {{{/etc/resolve.conf}}} doesn't resolve scratch, so I copied one from the host on which QEMU was running. This file was originally a symlink to a version updated by the DHCP subsystem. The symlink must be severed for the needed changes to stick. Added an {{{admin}}} group and modified {{{/etc/sudoers}}} to allow that group to sudo without a password. The container system populates that group. After this {{{sudo apt-get update}}} succeeds. Ubuntu doesn't enable sshd by default. Be sure to: {{{ $ apt-get install openssh-server }}} Shut down the VM and store the image on scratch {{{ $ scp pangolin.img scratch:/var/www/benito }}} == QEMU software == The default Ubuntu QEMU install does not support VDE, which is clearly a problem. This is easy enough to fix using the instructions for [http://www.debian-administration.org/articles/20 rebuilding a debian package] * apt-get the source for {{{qemu-kvm}}} and the supporting tools * modify {{{debian/rules}}} to include {{{--enable-vde}}} in the configure call * use debuild as above to make a new .deb Move the debs - more than one gets created - into {{{/share/benito/packages/hv:qemu_packages}}} and adjust {{{/share/benito/etc/hv:qemu_packages}}} accordingly There were custom debs for vde as well, but they are commented as fixing an overflow in i386. This install is for amd64 so we'll try the stock vde packages. The sources are in {{{~mikeryan/dev/benito/vde}}} but the changes were not completely clear. = Making DEBs for ViewOS = The 0.6 view-os debs behvae badly on 12.04. Processes get stopped and other badness, so we build from source, starting from http://wiki.virtualsquare.org/wiki/index.php/Getting_started#Installing_Virtual_Square_Tools and making debs. The build works directly and the SIGSTOPs go away, but we'd like DEBs to install. Working from http://www.debian.org/doc/manuals/maint-guide/ and banging my head I did the following: == Making the VDE2 deb == Check the source out of SVN and tar up the {{{vde-2}} directory {{{ $ svn co https://vde.svn.sourceforge.net/svnroot/vde/trunk vde $ cd vde $ tar czf ~/vde-2.tar.gz vde-2 $ cp ~/vde-2.tar.gz /tmp $ cd /tmp }}} Untar the vde directory and run {{{dh-make}}} {{{ $ tar xzf vde-2.tar.gz $ cd vde-2 $ dh_make -f ../vde-2.tar.gz -p vde2_20120806 }}} The {{{-p}}} sets the name of the deb. The debian directory needs some tweaks. The [attachment:control control], [attachment:copyright copyright] and [attachment:rules rules] are attached. Rules is most interesting in that it is functional. The key part is: {{{ build: autoreconf --install ./configure --prefix=/usr make %: dh $@ }}} The {{{build}}} rule includes the build instructions from the !VirtualSquare installation pages, with the prefix given. That's what debian uses, and {{{libtool}}} will snarl the install process without it. Once it his in in place {{{ $ debuild -uc -us }}} from {{{/tmp/vde-2}}} will build the deb (in {{{/tmp}}}). {{debuild}}} runs {{{lintian}}} which complains about .la files with embedded paths. This is resolved by the install process. == !ViewOs debs == The process above - including the verbatim {{{rules}}} file will work fog veiw-os, as long as each sub dir of interest is de-ified seperately. I did {{{lwipv6}}}, {{{purelibc}}}, and {{{xmviewos}}}. The {{{xmviewos}}} has patchs attached (following the rules at http://www.debian.org/doc/manuals/maint-guide/modify.en.html ) to defines {{{NOUMBINWRAP}}} in {{{xmview/um_exec.c}}}, to move a memory allocation so that it does not interfere with thread creation, and to tuen on IP forwarding in the lwip stacks. These patches are: * [attachment:fix-capture_nested.patch calloc patch] * [attachment:fix-forwarding.patch IP forwarding patch] * [attachment:fix-um_exec.patch interpreter patch] When building the {{{xmviewos}}} deb, make sure that the others have been installed. Without them key modules will not be built and included.