Hi,
Back in 2012ish I built my own Vyatta router based on PC Engines alix2d13. I too read about using a virtual machine to build the CF image but never tried it. The article I read was on the Vyatta forums but courtesy of Brocade that article and many many more and knowledge has disappeared into the ether. ‘Your Bad’ Brocade.
Also rather than go down the CF route I elected to buy two 4GB IDE disk-on-modules from InnoDisk. These lay horizontally and have master/slave switches and can be stacked, the HF model has male and female connectors on opposite sides of the board. These allowed me to install on to a RAID1 setup. This is expensive compared to installing on a CF disk - so why did I do it? 'Cause I could The unfortunate consequence of this is that the CF card slot is disabled
EDC 4000 44pin HF 4GB (DE4PF-04GDB1C1DR)
EDC 4000 44pin HB 4GB (DE4PB-04GDB1C1DR)
The method I chose was to PXE boot the router and load Vyatta that way. Now hold on there good buddy, there’s a problem so don’t go running off to build your own TFTP server just yet. Since Vyatta 6.2 and on (and this includes VyOS) there is an issue with PXE booting the Vyatta/VyOS live CD. Just after mdadm sorts itself out the kernel gets its knickers in a bunch and ‘kernel panics’. Looking at debug logs it appears that it is because it is unable to mount/find the file system. Conclusion, Vyatta did something to vmlinuz1 or initrd1.img between 6.1 and 6.2 when they were renamed them to vmlinuz and initrd.img. Note the the dropping of the ‘1’ suffix.
I did discover a work around to this and scratching the back of my mind (it was 3 years ago), you will need to build a tftp server (if you don’t already have one, configure it to PXE serve Vyatta 6.0 or 6.1, install Vyatta on your PC Engines based router, add a system image for Vyatta 6.4 and finally using the VyOS Migration Guide install VyOS, et voila one VyOS based PC Engines router. You will also need to be able to connect to the RS232 port on the alix motherboard in order to install and configure Vyatta for the first time.
Over the past week I have been refreshing my mind with Virtual hardware under VMware Workstation 11. And this is what I did;
- Build a gash/temporary Debian 8.1 Linux server.
Why Debian? Just because I can and Vyatta/VyOS are Debian based.
1.1 Create a new VMware guest based on Debian 7.x 64-bit hardware profile. I then deleted the sound card, Printer and USB components.
1.2 Down load the 64bit netinst iso image debian-8.1.0-amd64-netinst.iso from your local Debian mirror.
1.3 Mount the CD image and boot.
1.4 Debian install: I followed the installation and when it asked for options I dropped the Debian Desktop environment ('cause real men and operating systems have character - go VMS) and the Print Server. I did add the SSH Server option.
1.5 If you want to test the set-up without abusing your alix router, create another VWmare guest but this time use Workstation 9 and the Debian 6 profile and configure an IDE based disk. Again deleting the sound card. (I tried Workstation 11, but there appears to be some sort of hardware issue – ‘T0’ re-spawns too frequently and is disabled for 5 minutes at a time. This happens on a regular basis but it still works.)
- Configure the PXE server.
2.1 Logon and switch to root. The base install does not install sudo so you will have to su to the root account.
2.2 Install all the bits and pieces that we will need
apt-get update
apt-get install tftpd-hpa isc-dhcp-server syslinux pxelinux nfs-kernel-server
2.3 TFTP setup
Check the tftpd-hpa configuration
[code]more /etc/default/tftpd-hpa
/etc/default/tftpd-hpa
TFTP_USERNAME=“tftp”
TFTP_DIRECTORY=“/srv/tftp”
TFTP_ADDRESS=“0.0.0.0:69”
TFTP_OPTIONS=“–secure”
[/code]
2.4 DHCP setup
Rename the as installed dhcpd.conf file out of the way
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf-orig
Create a new dhcpd.conf file from scratch
[code]vi /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
allow booting;
option domain-name “MyDomain.net”;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.110.255;
option domain-name-servers 192.168.110.99;
option routers 192.168.110.99;
subnet 192.168.110.0 netmask 255.255.255.0 {
range 192.168.110.3 192.168.110.4;
option broadcast-address 192.168.110.255;
option routers 192.168.110.99;
option domain-name-servers 192.168.110.99;
filename “pxelinux.0”;
}
The above will PXE boot any client that asks, if you want to limit who or what
tftpd responds to you will need uncomment the next section and supply
ethernet hardware addresses (MAC address) for the select few.
#group {
next-server 192.168.110.18;
host tftpclient {
hardware ethernet 00:50:56:34:F2:24;
filename “pxelinux.0”;
}
host pxe-32 {
hardware ethernet 00:50:56:35:C1:5F;
filename “pxelinux.0”;
}
#}
[/code]
2.5 NFS server set-up
Modify the nfs export file
vi /etc/export
# /etc/exports: the access control list for file systems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/srv/nfsroot/vyatta/6.0/i386 192.168.110.0/24(ro,async,subtree_check,no_root_squash)
/srv/nfsroot/vyatta/6.1/i386 192.168.110.0/24(ro,async,subtree_check,no_root_squash)
Append either or both of the references to vyatta 6.0 or 6.1. Yes they are a bit long winded but if you want to keep this tftp server you can the easily add other operating systems e.g. /srv/nfsroot/debian/8.1.0/amd64 etc.
2.6 PXE set-up - Part 1
At this stage we just need to copy the required base files into the tftp directory and create the pxelinux.cfg directory
cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
cp /usr/lib/syslinux/modules/bios/{menu.c32,libutil.c32,ldlinux.c32} /srv/tftp/
mkdir /srv/tftp/pxelinux.cfg
2.7 Load Vyatta Live CD files into the NFSroot area.
Unload the CD
eject
Connect the VMware guests' CDRom to the Vyatta 6.0 or 6.1 ISO image.
Mount the cdrom
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
Create the required nfs file structure
mkdir -p /srv/nfsroot/vyatta/6.0/i386/.disk
Create the required tftp file structure
mkdir -p /srv/tftp/vyatta/6.0/i386/live
Copy the CD
cp -r /mnt/cdrom/* /srv/nfsroot/vyatta/6.0/i386/
cp /mnt/cdrom/.disk/* /srv/nfsroot/vyatta/6.0/i386/.disk/
cp /mnt/cdrom/live/{vmlinuz1,initrd1.img} /srv/tftp/vyatta/6.0/i386/live
2.8 PXE setup - Part deux
We want to do a proper job and create a decent boot menu.
Create the default pxelinux config
vi /srv/tftp/pxelinux.cfg/default
SERIAL 0 9600 0
CONSOLE 0
TIMEOUT 60
ONTIMEOUT live
PROMPT 0
NOESCAPE 1
UI menu.c32
MENU VSHIFT 2
MENU TIMEOUTROW 19
MENU HELPMSGROW 21
MENU CLEAR
MENU TITLE Vyatta Live (i368)
LABEL BootLocal
localboot 0
TEXT HELP
Boot from local hard disk
ENDTEXT
LABEL live
MENU LABEL Live (quiet)
MENU DEFAULT
KERNEL vyatta/6.0/i386/live/vmlinuz1
APPEND boot=live quiet netboot=nfs nfsroot=192.168.110.18:/srv/nfsroot/vyatta/6.0/i386 initrd=vyatta/6.0/i386/live/initrd1.img ramdisk_size=32768 console=ttyS0 console=tty0 nopersistent noautologin nonetwork nouser hostname=vyatta
TEXT HELP
Launch Vyatta 6.0 (i386) live environment on tty0
ENDTEXT
LABEL live-console
MENU LABEL Live Console (noisy)
KERNEL vyatta/6.0/i386/live/vmlinuz1
APPEND boot=live netboot=nfs nfsroot=192.168.110.18:/srv/nfsroot/vyatta/6.0/i386 initrd=vyatta/6.0/i386/live/initrd1.img ramdisk_size=32768 nopersistent noautologin nonetwork nouser hostname=vyatta
TEXT HELP
Launch Vyatta 6.0 (i386) live environment on tty0
ENDTEXT
LABEL live-serial
MENU LABEL Live Serial (noisy)
KERNEL vyatta/6.0/i386/live/vmlinuz1
APPEND boot=live netboot=nfs nfsroot=192.168.110.18:/srv/nfsroot/vyatta/6.0/i386 initrd=vyatta/6.0/i386/live/initrd1.img ramdisk_size=32768 console=ttyS0 nopersistent noautologin nonetwork nouser hostname=vyatta
TEXT HELP
Launch Vyatta 6.0 (i386) live environment on ttyS0
ENDTEXT
LABEL live-debug
MENU LABEL Live Debug (noisy)
KERNEL vyatta/6.0/i386/live/vmlinuz1
APPEND debug verbose boot=live netboot=nfs nfsroot=192.168.110.18:/srv/nfsroot/vyatta/6.0/i386 initrd=vyatta/6.0/i386/live/initrd1.img ramdisk_size=32768 console=ttyS0 console=tty0 nopersistent noautologin nonetwork nouser hostname=vyatta
TEXT HELP
Launch Vyatta 6.0 (i386) live environment on ttyS0 and tty0 in
Debug mode
ENDTEXT
The APPEND line options MUST appear on a single line i.e. everything between and including APPEND and 'hostname=vyatta' is on a single line.
This will present a pretty coloured boot strap menu.
The above is based on the normal menu you would see if booting from the CD itself. The original file can be found at
/mnt/cdrom/isolinux/isolinux.cfg.
3.0 Lets get this show on the road
3.1 restart the tftp daemon
/etc/init.d/tftpd-hpa restart
3.2 restart the dhcp daemon
/etc/init.d/isc-dhsp-server restart
3.3 restart the nfs kernel server daemon
/etc/init.d/nfs-kernel-server restart
Check that the nfs volumes are available
showmount -e 192.168.110.18
Test mount the nfs volume
eject
mount 192.168.110.18:/srv/nfsroot/vyatta/6.0/i386 /mnt/cdrom
ls -la /mnt/cdrom
umount /mnt/cdrom
3.4 Boot the test hardware
You should see a menu offering BootLocal, Live, Live Console, Live Serial and Live Debug options. The ‘Live’ option is what the Vyatta CD defaults to when booting from the CD directly.
4 Installation
4.1 Install Vyatta 6.0
Configure the live environment as usual to get the network running before executing install-image. The installation will give you the opportunity to copy the live/running config, accept this and the alix router should be configured and you can login via the network.
Don’t forget to set-up the root account and enable the SSH service.
4.2 Add System image for Vyatta 6.4
You will need to ftp or wget the Vyatta 6.4 ISO image on to the router.
wget http://dsstymm.ophion.feralhosting.com/vyatta-livecd_VSE6.4-2012.05.31_i386.iso
Add the image
add system image vyatta-livecd_VSE6.4-2012.05.31_i386.iso
This may barff with some Xattrs error, ignore this as 6.4 sorts it out.
Reboot the router into Vyatta 6.4
4.3 Migrate to VyOS
Use the Migrating From Vyatta guide to install VyOS
wget http://vyos.net/so3group_maintainers.key
sudo apt-key add so3group_maintainers.key
add system image http://0.uk.mirrors.vyos.net/iso/release/1.1.5/vyos-1.1.5-i586.iso
4.4 Reboot
Reboot and you will now have a VyOS 1.1.5 (i386) router
4.5 Tidy Up
Remember you still need to login as vyatta at this stage.
Remove the Vyatta images for 6.0 and 6.4
delete system image VC6.0-2010.06.01
delete system image VSE6.4-2012.05.31
Your user account will still be vyatta, use the configuration tool to add vyos and delete vyatta.
configure
set system login user vyos level admin
set system login user vyos authentication plaintext-password vyos
commit
save
logout and login again but this time as vyos
configure
delete system login user vyatta
Change the host name
set system host-name vyos
Change the package repo.
set system package repository vyos components 'main'
set system package repository vyos distribution 'helium'
set system package repository vyos url 'http://packages.vyos.net/vyos'
delete system package repository community
commit
save
4.6 Job done.
5 Where can I get Vyatta 6.0, 6.1, and 6.4?
Well, I’ve put copies on;
http://dsstymm.ophion.feralhosting.com/
(Never throw anything away, you never know when you might want it again !!)