3.7 KiB
Summary
The high-level boot process for ONL is fairly straight forward, but there is a lot detail.
At high-level, there are three phases
- uBoot phase
- the ONL Loader phase
- The final ONL operating system
Detailed Boot Process
- uBoot is the first level boot loader: http://www.denx.de/wiki/U-Boot
- uBoot reads the 'nos_bootcmd' environmental variable from flash and runs the contents ('nos' is Network Operating System)
- If $nos_boot_cmd returns, uBoot loads and runs ONIE (see below) to download the ONL installer and install the ONL loader a) The factory default $nos_boot_cmd is to a trival command that returned immediately, e.g., 'echo'
- In normal operation, i.e., after ONIE has been run, $nos_boot_cmd is set to load and run the ONL Loader
- The ONL loader boots the Linux kernel (later, the "boot kernel")
- The ONL loader decides which SWI to run based on the URL in the file /etc/SWI
URL=
cat /etc/SWI - The ONL loader runs
/bin/boot $URL - The ONL loader retrieves the SWI file a) if the URL is remote (e.g., http://, ftp://, etc.), verify that there is a locally cached copy of the SWI in /mnt/onl/images or if not, download it b) if the URL is local, verify that the device is accessible c) if the URL is a Zero Touch Networking (ZTN) URL, the execute the ZTN protocol to get the SWI (see below)
- The ONL loader reads the 'rootfs' file out of the SWI and mounts it using overlayfs[1] (SWI contents described below)
Partition Layout
Switches typically have two flash storage device: a smaller flash (e.g., 64MB flash) for booting and a larger, mass storage device (e.g., compact flash, 2+GB).
Smaller Boot Flash:
Partition 1: uBoot Partition 2: environmental variables (e.g., $nos_boot_cmd) Partition 3: ONIE Partition 4+: Free space (unused)
Mass Storage Device:
Partition 1: ONL loader kernel -- the format of this partition varies depending on what formats uBoot supports on the specific platform Partition 2: ONL Loader configuration files (mounts as "/mnt/onl/boot" both during the loader and the main ONL phases) Partition 3: ONL SWitch Images (SWIs) partition (mounts as "/mnt/onl/images" both during the loader and the main ONL phases)
ONL file system layout
root@as5712-2:/mnt/onl/images# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1215292 145904 1069388 13% /
devtmpfs 1024 0 1024 0% /dev
none 1215292 145904 1069388 13% /
/dev/sdb5 1032088 276700 702960 29% /mnt/onl/images
/dev/sdb6 6313528 143612 5849200 3% /mnt/onl/data
/dev/sdb3 126931 37007 83371 31% /mnt/onl/boot
/dev/sdb4 126931 5651 114727 5% /mnt/onl/config
tmpfs 810196 208 809988 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 1620380 0 1620380 0% /run/shm
SWI
Zip file contains:
$ unzip -l ONL-2.0.0_ONL-OS_2015-12-12.0252-ffce159_PPC.swi
Archive: ONL-2.0.0_ONL-OS_2015-12-12.0252-ffce159_PPC.swi
Length Date Time Name
--------- ---------- ----- ----
97968128 2015-12-15 20:20 rootfs-powerpc.sqsh
1063 2015-12-15 20:20 manifest.json
--------- -------
97969191 2 files
- 'rootfs-$ARCH' : the root file system for the running ONL
- 'manifest.json' : a list of supported platforms, version information about ONL and the architecture