Modding/upgrading Arista switches?

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

Shailp

New Member
Aug 8, 2022
1
0
1
yeah, nothing for normal users (except maybe some really niche physical security/boot security issues patched)

also here's a quick guide to properly format a new USB DOM so it appears like they do from factory. I originally just created a partition table on it, created sda1, then it would boot no problem, but kept getting weird "can't mount /dev/sda, /dev/sda1 already mounted" errors - so after looking through the aboot init scripts, it mounts the block device /dev/sda directly, no partitions, as vfat

So on a new USB DOM/internal USB storage:

Code:
#unplug front thumb drive
#power on
umount /mnt/flash
mkfs.vfat /dev/sda
reboot

#plug in front thumb drive
#copy the main image
cp /mnt/usb1/EOS-4.21.2F.swi /mnt/flash
#copy configs over from your thumb drive if they exist
cp /mnt/usb1/startup-config /mnt/flash
cp /mnt/usb1/zerotouch-config /mnt/flash
boot flash:EOS-4.21.2F.swi

#it will boot into EOS
#tell it to boot from internal flash automatically from now on
enable
config t
boot system flash:EOS-4.21.2F.swi
write
maybe obvious to most of you, not sure. Most embedded usb booting devices like this I've used in the past mounted a partition, so wasn't used to it wanting the raw black device

edit: neat, for aboot to boot the full SWI EOS image, it just kexecs the kernel from it, so coreboot does not get called again:
aboot > EOS boot stage 0
aboot >EOS boot stage 1
Hi weve sourced few Arista 7050QX32S . these all came without flash /DOM. so i just used a normal usb drive with male header on 9 pin dom port. the drive is detected . after that i followed these instruction to flash and copied eos, modified the boot-config to use flash: EOS image . the EOS is booted succesfully . but after that as soon as we reboot . it throughs the error . NO SWI IS SPECIFIED and the boot-config file becomes 0 byte.

i tired same instruction with diffrent pen drives.still after first reboot it doesnt boot.


Update:
1. I've figured out the issue.
If we use pendrive as a dom . Aboot don't like larger size pen drive. The size of pendrive should be less than 16GB . In my case I was trying with 32,64,128gb and it was throwing random errors. It's little difficult to have 4/8/16gb laying around.
When I used 16gb it's booted fine and working as expected.

2.also if we don't want to use usb dom at all. Just plug any pen drive in front usb port with fat32 & eos image. The aboot will mount front usb as flash and booted just fine.alao in front usb case size of pen drive doens't matter.
 
Last edited:

josepr

New Member
Jan 31, 2020
6
2
3
I have a 7124sx, want to upgrade the ram and storage to run basic debian vm on it.

Would this ram be compatible?
Crucial RAM 8GB DDR3 1600 MHz CL11 Desktop Memory CT102464BD160B https://a.co/d/fGOB5BG

About ssd options does it have a sata m.2 or regular sata port?
 

dracocephalum

New Member
Sep 20, 2019
29
8
3
I have a 7124sx, want to upgrade the ram and storage to run basic debian vm on it.

Would this ram be compatible?
Crucial RAM 8GB DDR3 1600 MHz CL11 Desktop Memory CT102464BD160B https://a.co/d/fGOB5BG

About ssd options does it have a sata m.2 or regular sata port?
You will have to find these out from your unit, because even for the same 7124sx series they can have different revisions and they could be using different hardware configurations.
1. For memory modules, connect to your switch console, get a "bash" prompt and run "cat /proc/cpuinfo | grep 'name'| uniq". This should give you the model of your CPU. Now research around your CPU model and see which type of memory modules it take, and the maximum supported memory size. Also, open your case and check already installed memory modules to confirm.
2. For sata m.2 / sata port, open the case and check the motherboard. Like the 7060sx I have, it SHOULD come with an SATA port but instead it didn't - it came with sata m.2 slot instead, so I had to update my plan and deal with it.
 
  • Like
Reactions: josepr

josepr

New Member
Jan 31, 2020
6
2
3
You will have to find these out from your unit, because even for the same 7124sx series they can have different revisions and they could be using different hardware configurations.
1. For memory modules, connect to your switch console, get a "bash" prompt and run "cat /proc/cpuinfo | grep 'name'| uniq". This should give you the model of your CPU. Now research around your CPU model and see which type of memory modules it take, and the maximum supported memory size. Also, open your case and check already installed memory modules to confirm.
2. For sata m.2 / sata port, open the case and check the motherboard. Like the 7060sx I have, it SHOULD come with an SATA port but instead it didn't - it came with sata m.2 slot instead, so I had to update my plan and deal with it.
Dont have access to the device to open so cant verify ram size. But was able to remotely verify cpu: AMD Turion(tm) II Neo N41H Dual-Core Processor

LSHW not dmidecode could provide me with RAM information
RAM should be DDR3
Would it be UDIMM or SODIMM, from a previous post look like it is UDIMM and that it should be ECC

Thinking about this: DDR3 1333MHZ PC3-10600 ECC UDIMM 2RX8
 

dracocephalum

New Member
Sep 20, 2019
29
8
3
Dont have access to the device to open so cant verify ram size. But was able to remotely verify cpu: AMD Turion(tm) II Neo N41H Dual-Core Processor

LSHW not dmidecode could provide me with RAM information
RAM should be DDR3
Would it be UDIMM or SODIMM, from a previous post look like it is UDIMM and that it should be ECC

Thinking about this: DDR3 1333MHZ PC3-10600 ECC UDIMM 2RX8
hmmm, interesting.... Seems the info available about "AMD Turion(tm) II Neo" is quite limited.
I believe it must be UDIMM. It looks like dual channel so I would expect there are at least 2 slots. Not 100% sure about the ECC bit, but I believe Arista should be using enterprise parts so ECC should be a good bet.

2Rx8 is also good - better bet than a single rank. So I think the problem only lies if this CPU supports max 16GB or 8GB. Does the vendor supports return? I think you can try with the proposed 2x8GB option and if not working then try 2x4GB. :cool:
 

josepr

New Member
Jan 31, 2020
6
2
3
Got to work on this and can confirm 7124sx is raven and doesn't have a m2 slot. Requires a regular sata disk connection.

For ram it will support regular PC3L ECC ram, Got one with a higher max speed as it was easier to procure and cheaper, it will run at the lower speed that the board supports.

Decided to replace the sata dom with a usb2 64gb flash drive. Easy to do with instructions from here https://forums.servethehome.com/index.php?threads/upgrade-flash-storage-on-arista-7050qx-32.18113/ and using a 4pin usb2 header adapter.

Parts Used:
  • A-Tech Server 16GB Kit (2 x 8GB) 2Rx8 PC3L-12800E DDR3 1600MHz ECC Unbuffered UDIMM 240-Pin Dual Rank DIMM 1.35V Workstation Server Memory RAM Upgrade Stick Modules (A-Tech Enterprise Series) https://a.co/d/feqdLjh
  • StarTech.com 6in USB 2.0 A to USB 4 Pin to Motherboard Header Adapter F/F - USB cable - USB (F) to 4 pin USB 2.0 header (F) - USBMBADAPT https://a.co/d/1zYyecx
  • Verbatim 64GB ToughMAX USB 2.0 Flash Drive - Extremely Durable Thumb Drive - Black, 70058 https://a.co/d/cWevjx8
  • Intel s4510 2.5 Sata SSD (Not installed yet)

Switch boot fines and reports all ram/storage.
 
Last edited:
  • Like
Reactions: dracocephalum

dracocephalum

New Member
Sep 20, 2019
29
8
3
@josepr Congrats! :cool:

Since you have 16GB memory, my recommendation is to run an EOS64 (64-bit) image on your switch, and you can do quite a bit "crazy" stuff with VMs.

To workaround the 2GB RAM limit for a VM (and the processor count), you can simply "interpose" the /usr/bin/qemu-system-x86_64 file. EOS by default would use a command like below for say a VM named "temp":

Bash:
/usr/bin/qemu-system-x86_64 -S -M pc -enable-kvm -smp 1 -nodefaults -nodefconfig -no-user-config -rtc base=utc -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -m 2047 -name temp -chardev socket,id=monitor,path=/var/run/temp.monitor,server,nowait -mon chardev=monitor,mode=control -usb -device usb-tablet,id=input0 -nographic -device cirrus-vga -boot order=dc -drive file=/mnt/drive/kvm/temp.img,if=none,id=ide-drive0 -device ide-hd,drive=ide-drive0,bus=ide.0,unit=0 -device e1000,id=net0,mac=12:54:02:26:a3:91
Rename /usr/bin/qemu-system-x86_64 to something like /usr/bin/qemu-system-x86_64_real and replace /usr/bin/qemu-system-x86_64 with a bash script of your own to call /usr/bin/qemu-system-x86_64_real.

You can then start your VM with any parameters you like. You might want to consider enabling paravirtualization features to achieve the best VM performance, such as -cpu host and others. Virtio NIC works (at least for me on 7060), but in this case it may only work with the management interface (ma1) with a proper bridge/tap setup. However, in this way, you can have MAC address spoofing which is essential for say CARP protocol of an OPNSense router VM, as well as unlimited VLAN etc. since you have direct access to the physical port.

To automate actions to setup the "interposing" (e.g. file replacement etc.), consider using event-handler with trigger on-boot then you can run some bash scripts during each switch boot.
 

josepr

New Member
Jan 31, 2020
6
2
3
@josepr Congrats! :cool:

Since you have 16GB memory, my recommendation is to run an EOS64 (64-bit) image on your switch, and you can do quite a bit "crazy" stuff with VMs.

To workaround the 2GB RAM limit for a VM (and the processor count), you can simply "interpose" the /usr/bin/qemu-system-x86_64 file. EOS by default would use a command like below for say a VM named "temp":

Bash:
/usr/bin/qemu-system-x86_64 -S -M pc -enable-kvm -smp 1 -nodefaults -nodefconfig -no-user-config -rtc base=utc -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -m 2047 -name temp -chardev socket,id=monitor,path=/var/run/temp.monitor,server,nowait -mon chardev=monitor,mode=control -usb -device usb-tablet,id=input0 -nographic -device cirrus-vga -boot order=dc -drive file=/mnt/drive/kvm/temp.img,if=none,id=ide-drive0 -device ide-hd,drive=ide-drive0,bus=ide.0,unit=0 -device e1000,id=net0,mac=12:54:02:26:a3:91
Rename /usr/bin/qemu-system-x86_64 to something like /usr/bin/qemu-system-x86_64_real and replace /usr/bin/qemu-system-x86_64 with a bash script of your own to call /usr/bin/qemu-system-x86_64_real.

You can then start your VM with any parameters you like. You might want to consider enabling paravirtualization features to achieve the best VM performance, such as -cpu host and others. Virtio NIC works (at least for me on 7060), but in this case it may only work with the management interface (ma1) with a proper bridge/tap setup. However, in this way, you can have MAC address spoofing which is essential for say CARP protocol of an OPNSense router VM, as well as unlimited VLAN etc. since you have direct access to the physical port.

To automate actions to setup the "interposing" (e.g. file replacement etc.), consider using event-handler with trigger on-boot then you can run some bash scripts during each switch boot.
Not sure about eos64 for my device as I don't have access to them, only the latest i could acquire a few years back with help from someone at reddit.
Latest supported seems to be 4.13.16M

Honestly only plan to run a VM to act as etcd member for k3s and patroni, and a qdevice for proxmox. Maybe acts as a ceph monitor also.

Below my system info:

Code:
Arista DCS-7124SX-R
Hardware version:    01.02
Serial number:       
System MAC address: 

Software image version: 4.13.16M
Architecture:           i386
Internal build version: 4.13.16M-3213248.41316M.1
Internal build ID:      53e27db5-14d8-4d71-8ea1-a71aa337946f

Uptime:                 54 minutes
Total memory:           16384868 kB
Free memory:            14256524 kB
 

dracocephalum

New Member
Sep 20, 2019
29
8
3
Not sure about eos64 for my device as I don't have access to them, only the latest i could acquire a few years back with help from someone at reddit.
Latest supported seems to be 4.13.16M

Honestly only plan to run a VM to act as etcd member for k3s and patroni, and a qdevice for proxmox. Maybe acts as a ceph monitor also.

Below my system info:

Code:
Arista DCS-7124SX-R
Hardware version:    01.02
Serial number:      
System MAC address:

Software image version: 4.13.16M
Architecture:           i386
Internal build version: 4.13.16M-3213248.41316M.1
Internal build ID:      53e27db5-14d8-4d71-8ea1-a71aa337946f

Uptime:                 54 minutes
Total memory:           16384868 kB
Free memory:            14256524 kB
Gotcha. Yeah not sure if there is EOS64 for 4.13.16M. The earliest version I could find is EOS64-4.22.0F.swi.
 

josepr

New Member
Jan 31, 2020
6
2
3
Finally got my HDD installed.
Once it booted all i need to do to be able to use it was
Code:
sgdisk -Z /dev/sda
sgdisk -n1 /dev/sda
mkfs.ext4 /dev/sda1
After that got the VM running, wanted to use more than 2G ram as etcd recommends 8G.

So based on what you said earlier make a script in /mnt/drive/qemu-system-x86_64
Code:
#!/bin/bash
exec /usr/bin/qemu-system-x86_64.orig -cpu host $(echo "$*" \
        | sed -e 's/e1000/virtio-net/g' \
        | sed -e 's/-m 1004/-m 4096/' \
        | sed -e 's/-m 1008/-m 8192/' \
        | sed -e 's/-m 1010/-m 10240/' \
        | sed -e 's/-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5//' \
        )
/mnt/drive/osmods.sh
Code:
#!/bin/bash

if [ ! -e  /usr/bin/qemu-system-x86_64.orig ]; then
  mv /usr/bin/qemu-system-x86_64  /usr/bin/qemu-system-x86_64.orig
fi

ln -s /mnt/drive/qemu-system-x86_64 /usr/bin/qemu-system-x86_64
And added to confing:
Code:
event-handler OSMODS
   trigger on-boot
   action bash /mnt/drive/osmods.sh
Had to remove the virtio balloon device as it was not allowing more than 2G ram when it was on the VM.
Everything looks to be working fine now.
 
  • Like
Reactions: dracocephalum

carefreesmasher

New Member
Jul 8, 2023
1
0
1
Did you ever figure this out? I have an arista 7052 which was donated to my organization to use with a server rack and it's doing the exact same thing:

Code:
coreboot-4.0-r-Aboot-norcal2-2.0.7-667020 Sun Apr 22 12:36:03 PDT 2012 starting...


*** Booting fallback image
*** Reboot reason: watchdog timer expired





BSP Family_Model: 00100f63
*sysinfo range: [000cc000,000cf360]
bsp_apicid = 00
cpu_init_detectedx = 00000000
microcode: equivalent rev id  = 0x1043, current patch id = 0x00000000
microcode: patch id to apply = 0x010000b6
microcode: updated to patch id = 0x010000b6  success


..........
(lots of stuff here)
......

All Done
raminit_amdmct end:
v_esp=000cbf48
testx = 5a5a5a5a
Copying data from cache to RAM -- switching to use RAM as stack...
And then it just sits and does nothing more. I've talked to arista QA folks and they have no idea what to do with it. I've been told at this point to keep it for spare parts and someone is donating another one (this one was apparently working before shipping), but I hate to see such a nice switch dead for what might be a fixable reason.

I don't know if I currently have a SPI programmer or not -- I might -- but I could definitely get one. I just lack the experience with this type of system to know what to do with it once I got it.

Richard
HamStudy.org

I just had one as well i replaced the ram sticks inside of it and it came up and worked as it should