Vnx-rootfsubuntu

From VNX
Revision as of 15:51, 2 March 2012 by David (talk | contribs)
Jump to: navigation, search

How to create a Ubuntu root-file-system for VNX

Basic installation

Follow this procedure to create a Ubuntu based root-file-system for VNX. The procedure has been tested with Ubuntu 9.10, 10.04, 10.10 and 11.04.

  • Create the filesystem disk image:
  • qemu-img create -f qcow2 vnx_rootfs_kvm_ubuntu-base.qcow2 5GB
    
  • Get Ubuntu installation CD. For example:
  • wget ftp://ftp.rediris.es/mirror/ubuntu-releases/10.04.1/ubuntu-10.04.1-server-i386.iso
    cp ubuntu-10.04.1-server-i386.iso /almacen/iso
    
  • Create a libvirt XML definition (rootfs_ubuntu.xml) containing the virtual machine description:
  • <domain type='kvm'>
      <name>Ubuntu</name>
      <memory>524288</memory>
      <vcpu>1</vcpu>
      <os>
        <type arch="i686">hvm</type>
        <boot dev='hd'/>
        <boot dev='cdrom'/>
      </os>
      <features>
         <pae/>
         <acpi/>
         <apic/>
      </features>
      <clock sync="localtime"/>
      <devices>
        <emulator>/usr/bin/kvm</emulator>
        <disk type='file' device='disk'>
          <source file='/usr/share/vnx/filesystems/vnx_rootfs_kvm_ubuntu-base.qcow2'/>
          <target dev='hda'/>
          <driver name="qemu" type="qcow2"/>
        </disk>
        <disk type='file' device='cdrom'>
          <source file='/almacen/iso/ubuntu-10.04.1-server-i386.iso'/>
          <target dev='hdb'/>
        </disk>
        <interface type='network'>
          <source network='default'/>
        </interface>
        <graphics type='vnc'/>
      </devices>
    </domain>
    

    Note: change "source file=" lines to whatever fits your case (use full paths).

  • Start the virtual machine with:
  • virsh create rootfs_ubuntu.xml
    
  • Access virtual machine console with:
  • virt-viewer Ubuntu
    

    Note: alternative you can start the machine and open the console at the same time with the command:

    /usr/share/vnx/bin/vnx_modify_rootfs rootfs_ubuntu.xml
    
  • Follow Ubuntu installation menus to install a basic system with ssh server. Once the installation is finished, stop the machine and edit rootfs_ubuntu.xml file and comment the following line in cdrom disk specification:
  •   <!--source file='/almacen/iso/ubuntu-10.04-server-i386.iso'/-->
    

Configuration

  • Start the virtual machine again and finish the installation:
    • Access the console and sudo root:
    • sudo su
      
    • Update the system
    • apt-get update
      apt-get dist-upgrade
      
    • Install XML::DOM perl package and ACPI daemon:
    • apt-get install libxml-dom-perl acpid
      
    • Only for Ubuntu 10.04:
      • create /media/cdrom* directories:
      • mkdir /media/cdrom0
        mkdir /media/cdrom1
        ln -s /media/cdrom0 /media/cdrom
        ln -s /cdrom /media/cdrom
        
      • add the following lines to /etc/fstab:
      • /dev/scd0  /media/cdrom0    udf,iso9660  user,noauto,exec,utf8  0  0
        /dev/scd1  /media/cdrom1    udf,iso9660  user,noauto,exec,utf8  0  0
        
    • Configure a serial console on ttyS0:
    • cd /etc/init
      cp tty1.conf ttyS0.conf
      sed -i -e 's/tty1/ttyS0/' ttyS0.conf
      
    • Activate startup traces on serial console by editting /boot/grub/grub.cfg file and adding "console=ttyS0" to the linux line. For example:
    • linux   /boot/vmlinuz-2.6.35-25-generic-pae root=UUID=eb1a0afb-48b2-4e42-ba6d-22bfae1055f3 ro   quiet console=ttyS0
      
    • Install VNX autoconfiguration daemon:
      • From the host execute:
      • /usr/share/vnx/bin/vnx_update_aced Ubuntu /usr/share/vnx/aced/vnx-aced-lf-0.1b.tgz 
        
      • From the virtual machine console:
      • mount /media/cdrom
        /media/cdrom/install_vnxdaemon
        
    • Optional: install graphical user interface.
      • Minimal:
      • sudo apt-get install xorg gnome-core gksu gdm gnome-system-tools gnome-nettool firefox-gnome-support
        
      • Complete:
      • sudo apt-get install ubuntu-desktop
        
    • Optional: install other services:
      • Apache server:
      • sudo apt-get install apache2
        update-rc.d -f apache2 remove   # to avoid automatic start
        
      • Other network tools
      • sudo apt-get install traceroute
        


    • Create a file /etc/vnx_rootfs_version to store version number and informacion about modification:
    • VER=v0.21
      OS=Ubuntu 10.10
      DESC=basic Ubuntu 10.10 root-file-system without GUI
      
    • Create a script named /usr/local/bin/vnx_halt:
    • #!/bin/bash
      # Clean apt cache
      apt-get clean
      apt-get -y autoremove
      # Delete /etc/resolv.conf
      rm -f /etc/resolv.conf
      # Clean command history
      rm -f /root/.bash_history
      # Delete udev net rules files:
      rm -f /etc/udev/rules.d/70-persistent-net.rules
      while true; do
          # Ask for a message to save in /etc/vnx_rootfs_version file
          echo    "** Save a log message in /etc/vnx_rootfs_version file "
          echo -n "** describing the modifications done? "
          read -n 1 -p "[y/n] " answer
          echo ""
          case $answer in
              [Yy]* )
                      echo "** Log message (1 line maximum):"
                      read logmsg
                      DATE=`date`
                      echo "MODDATE=$DATE" >> /etc/vnx_rootfs_version
                      echo "MODDESC=$logmsg" >> /etc/vnx_rootfs_version
                      break;;
              [Nn]* ) break;;
              * )     echo "** Error: please answer 'y' or 'n'.";;
          esac
      done
      # Halt the system
      halt
      
    • Give the script execution permissions:
    • chmod +x /usr/local/bin/vnx_halt
      
    • Stop the machine with that script:
    • vnx_halt
      

If everything went well, your root filesystem will be ready to be used with VNX. You can make a simple test using the simple_ubuntu.xml scenario distributed with VNX.

Installing additional software

To install additional software or modify your root file system, you just have to start it as described above and make the operations required on the filesystem.

  • Start the virtual machine (directly using virsh or the vnx_modify_rootfs utility):
  •  /usr/share/vnx/bin/vnx_modify_rootfs rootfs_ubuntu.xml 
    
  • Install the software:
  • apt-get install ...
    
  • Stop the machine with:
  • vnx_halt
    

Examples

  • dhcp server and relay:
    • Install dhcp3 packages:
    • apt-get install dhcp3-server dhcp3-relay
      
    • Disable autostart (optional): update-rc.d -f isc-dhcp-server remove update-rc.d -f isc-dhcp-relay remove


Updating ACE daemon

If you have a root filesystem with the autoconfiguration and command execution daemon (ACE) already installed, you can use the autoupdate functionallity to update the daemon to a newer version. Just follow this procedure:

  • Edit the xml described above and comment the line defining the Ubuntu iso file for the cdrom:
  • Start the virtual machine (directly using virsh or the vnx_modify_rootfs utility):
  •  /usr/share/vnx/bin/vnx_modify_rootfs rootfs_ubuntu.xml 
    
  • Execute the update utility:
  • /usr/share/vnx/bin/vnx_update_aced Ubuntu /usr/share/vnx/aced/vnx-aced-lf-0.1b.tgz 
    
  • Once the ace daemon is updated the virtual machine will be rebooted automatically.

Known problems

  • Each time a cdrom is mounted (for example, whenever a command is executed on the virtual machine) the following error appears in the console:
  • Jul 27 22:33:31 vnx kernel: [ 4384.875886] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
    Jul 27 22:33:31 vnx kernel: [ 4385.291374] ata1.01: BMDMA stat 0x5
    Jul 27 22:33:31 vnx kernel: [ 4385.493411] sr 0:0:1:0: [sr0] CDB: Read(10): 28 00 00 00 00 18 00 00 01 00
    Jul 27 22:33:31 vnx kernel: [ 4385.493460] ata1.01: cmd a0/01:00:00:00:08/00:00:00:00:00/b0 tag 0 dma 2048 in
    Jul 27 22:33:31 vnx kernel: [ 4385.493461]          res 01/60:00:00:00:08/00:00:00:00:00/b0 Emask 0x3 (HSM violation)
    Jul 27 22:33:31 vnx kernel: [ 4386.263553] ata1.01: status: { ERR }
    

    Despite of the error trace, the commands are executed correctly. This error does not appear on Ubuntu 9.10 filesystems.