Difference between revisions of "Vnx-rootfslxcvyos"

From VNX
Jump to: navigation, search
(Basic installation)
(Basic installation)
Line 46: Line 46:
 
<li>Edit the rootfs configuration file (/usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/config) to reflect the directory change:</li>
 
<li>Edit the rootfs configuration file (/usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/config) to reflect the directory change:</li>
 
  lxc.rootfs = /usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/rootfs
 
  lxc.rootfs = /usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/rootfs
 +
</ul>

Revision as of 20:34, 29 August 2017

How to create a LXC VyOS root filesystem for VNX

Basic installation

[VyOS] is an open source network operating system that is based on Debian GNU/Linux and that joins multiple applications such as Quagga, ISC DHCPD, OpenVPN, StrongS/WAN and others under a single management interface. It can be installed on physical hardware or on virtual machines and it is a community fork of [Vyatta].

Follow this procedure as a root user to create a VyOS based LXC root filesystem for VNX. The procedure has been tested with VyOS 1.1.7 over a Ubuntu 16.04 system.

  • Get VyOS installation CD and mount it to make its content accesible:
  • wget http://packages.vyos.net/iso/release/1.1.7/vyos-1.1.7-amd64.iso
    mount -o loop vyos-1.1.7-amd64.iso /mnt/
    
  • Create a Debian LXC rootfs with:
  • lxc-create -n vyos -t debian -- -r wheezy
    
  • Substitute the rootfs directory of the newly created container by the VyOS one:
  • cd /var/lib/lxc/vyos
    rm -rf /var/lib/lxc/vyos/rootfs/
    unsquashfs /mnt/live/filesystem.squashfs
    mv squashfs-root/ rootfs
    umount /mnt
    
  • Do some modifications in container configuration:
  • # Change the number of ttys to 6
    sed -i -e "s/lxc.tty = 4/lxc.tty = 6/" config
    # Eliminate the "nr_inodes" option in vyatta-router script (not supported inside the container)
    sed -i -e 's/,nr_inodes=0//' rootfs/etc/init.d/vyatta-router
    # Create the /dev/fuse device manually in /etc/rc.local
    sed -i -e "/By default this script does nothing/a mknod -m 666 /dev/fuse c 10 229\nchown root.fuse /dev/fuse\nchmod 660 /dev/fuse" rootfs/etc/rc.local
    
  • Start the new container for the first time (needed for the vyos user to be created) and stop it later:
  • lxc-start -n vyos
    sleep 5
    lxc-attach -n vyos -- poweroff
    
  • Add the TERM environment variable to the vyos user .bashrc:
  • echo "export TERM=xterm" >> rootfs/home/vyos/.bashrc
    

After this steps, you will have a working VyOS LXC image ready to be used. You can start it and access the console with:

lxc-start -n vyos
lxc-console -n vyos

Note: the foreground option "-F" of "lxc-start" that allows starting the container and directly showing the console does not work (I do not now why; probably something related with the console/ttyS0 ports).

Finally, to convert the image into a VNX rootfs:

  • Move the image to VNX images directory:
  • cd /usr/share/vnx/filesystems/
    mv /var/lib/lxc/vyos vnx_rootfs_lxc_vyos64-1.1.7-v025
    
  • Edit the rootfs configuration file (/usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/config) to reflect the directory change:
  • lxc.rootfs = /usr/share/vnx/filesystems/vnx_rootfs_lxc_vyos64-1.1.7-v025/rootfs