diff --git a/docs/PersistWorkflow.md b/docs/PersistWorkflow.md new file mode 100644 index 00000000..8363b753 --- /dev/null +++ b/docs/PersistWorkflow.md @@ -0,0 +1,55 @@ +# Rationale + +By default, the ONL file system is NOT persistent, meaning that if you +reboot, your changes will dissapear (!!). While this may sound suboptimal +at first, it does have the incredibly nice property of ensuring that many +classes of configuration and other problems can go away with a reboot. +This is particularly nice when you have a switch that may be headless +(no permanently connected console cable or keyboard). + +ONL accomplishes this with OverlayFS +(https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt). +As described at http://opennetlinux.org/docs/bootprocess, the ONL +switch image (.SWI file) contains a read-only root file system image. +The default ONL root file system is then a copy-on-write (using overlayfs) +view into that file system image. + +It has the following properites: + +* Any file that is editted/removed/etc is transparently copied into a RAM disk via overlayfs +* Thus, any changes to files appear as you would expect, until a reboot +* Any file that is uneditted remains backed by the /mnt/flash2 file system, so you + do not need to have enough RAM to store the entire rootfs. This is important with + switches that do not have much RAM to begin with. + +That said, ONL does have a provision to persist explicitly marked files +across a reboot. This document shows how this works. + + +# Persisting Files + +Just run `/sbin/persist /path/to/file` to mark a file as 'persisted'. This +file will be saved to the /mnt/flash persistent storage device and automatically +put back into place on reboot. Once a file has been persisted, it will always +be persisted across reboots. If you really want to unpersist a file, manually remove it from +'/persist/rootfs/path/to/file'. + +# Under the covers + +Running `/sbin/persist file` makes a hardlink of that file, e.g., /foo/bar/baz, to +/persist/rootfs/foo/bar/baz. + +The `/etc/init.d/restorepersist` script runs on bootup and does a number of things: + +* Restores the previously saved cpio archive from /mnt/flash/persist/rootfs into both / and /persist/rootfs +* Sets up hard links between /persist/rootfs/foo/bar/baz and /foo/bar/baz +* Starts a `watchdir` process for changes in /persist/rootfs + +`watchdir` in turn uses the inotify(3) subsystem to, upon a change, run `/sbin/savepersist /persist/rootfs`. + +And so, any change to a persisted file is noticed by watchdir and saved +to /mnt/flash in a cpio archive automatically using /sbin/savepersist. + +# Limitations + +You cannot persist any file that is read/used before `/etc/rcS.d/S03restorepersist` is run, including this script itself. Also, it is NOT recommended for persisting logging files, e.g., /var/log/*. While technically this will work, you will likely quickly exceed the write cycle limit of the underlying flash memory. Better to use a syslog server. diff --git a/docs/SupportedHardware.md b/docs/SupportedHardware.md new file mode 100644 index 00000000..9a4f9752 --- /dev/null +++ b/docs/SupportedHardware.md @@ -0,0 +1,62 @@ +Hardware Support +================ +Because of the HTML formatting, this page may be best viewed from + + + +Quanta +------ + + + + + + + + + + +
Device Ports CPU Forwarding Support Status
QuantaMesh T1048-LB9 48x1G + 4x10G FreeScale P2020 Broadcom BCM56534 (Firebolt3) Supported and Tested
QuantaMesh T1048-LB9A 48x1G + 4x10G FreeScale P2020 Broadcom BCM56534 (Firebolt3) Supported, no ONIE, not regularly tested
QuantaMesh T3048-LY2 48x10G + 4x40G FreeScale P2020 Broadcom BCM56846 (Trident+) Supported and Tested
QuantaMesh T3048-LY8 48x10G + 6x40G Intel Rangely C2758 x86 Broadcom BCM56854 (Trident2) Supported and run in the lab
QuantaMesh T5032-LY6 32x40G Intel Rangely C2758 x86 Broadcom BCM56850 (Trident2) Supported and run in the lab
+ + +Accton/Edge-Core +------ + + + + + + + + + + + + + + + +
Device Ports CPU Forwarding Support Status
Accton AS4600-54T 48x1G + 4x10G FreeScale P2020 Broadcom BCM56540 (Apollo2) Supported and Tested
Accton AS5600-52X 48x10G + 4x40G FreeScale P2020 Broadcom BCM56846 (Trident+) Supported and Tested
Accton AS5610-52X 48x10G + 4x40G FreeScale P2020 Broadcom BCM56846 (Trident+) Supported and Tested
Accton AS5710-54X 48x10G + 6x40G FreeScale P2041 Broadcom BCM56854 (Trident2) Supported and Tested
Accton AS6700-32X 32x40G FreeScale P2041 Broadcom BCM56850 (Trident2) Supported and Tested
Accton AS5712-54X 48x10G + 6x40G Intel Rangely C2538 x86 Broadcom BCM56854 (Trident2) Supported and Tested
Accton AS6712-32X 32x40G Intel Rangely C2538 x86 Broadcom BCM56850 (Trident2) Supported and Tested
Accton AS5812-54T 48x10G + 6x40G Intel Rangely C2538 x86 Broadcom BCM56864 (Trident2+) Supported
Accton AS5812-54X 48x10G + 6x40G Intel Rangely C2538 x86 Broadcom BCM56864 (Trident2+) Supported
Accton AS6812-32X 32x40G Intel Rangely C2538 x86 Broadcom BCM56864 (Trident2+) Supported
+ +DNI/Agema +--- + + + + + + +
Device Ports CPU Forwarding Support Status
AG-7448CU 48x10G + 4x40G FreeScale P2020 Broadcom BCM56845 (Trident) Supported and Tested
+ +Dell +--- + + + + + + + + + +
Device Ports CPU Forwarding Support Status
S4810-ON 48x10G + 4x40G FreeScale P2020 Broadcom BCM56845 (Trident) Supported and Tested
S4048-ON 48x10G + 6x40G Intel Atom C2338 Broadcom BCM56854 (Trident2) Supported and Tested
S6000-ON 32x40G Intel Atom S1220 Broadcom BCM56850 (Trident2) Supported and Tested