Diskless Installation Q&As

Table of Contents

Maintaining your diskless environment

Changing the ro kernel parameter

Hanjie Liu from UMass writes:

Hi Bryan, where can I change the vtp OS to be writable?

Before you can install or update new packages or perform some other diskless wide maintenance, the root mount needs to be read-writeable.

In this diskless environment, this is safe to do for ONE machine at a time. You may opt to keep one of your VME Controllers or VTPs in this state if you need.

For the x86_64 distribution, I boot root read-writable with a Virtual Machine.

The procedure below is relevant for changing other kernel commandline options, as well.


For the VME, the ro parameter on the kernel commandline is changed from the pxelinux.cfg IP address file. By default, the diskless_gen.sh makes IP address (hex) softlinks to common file centos7.default.

If you're only using one VME Controller, it's safe to just change the parameter in this file. For example, change:

append initrd=CentOS7-armv7-Diskless/initramfs-3.10.0-1062.9.1.el7.x86_64.img ip=dhcp root=nfs: ro vga=0x305


append initrd=CentOS7-armv7-Diskless/initramfs-3.10.0-1062.9.1.el7.x86_64.img ip=dhcp root=nfs: rw vga=0x305

If you're sharing this root mount with more than one VME Controller, change one of your IP address files into a real file and modify that instead. For example (for ip: filename = C0A80164):

cd /var/lib/tftpboot/linux-install/pxelinux.cfg
rm C0A80164
cp centos7.default C0A80164


For the VTP, the ro parameter on the kernel commandline is changed one of two methods:

  1. generate a new env.bin for the VTP microSD
  2. updating the uboot environment using the serial link

For 1, You use the diskless_gen.sh script. Change the bootcmd parameter in the env.txt

  • ro
bootcmd=run tftpboot
  • rw
bootcmd=run tftpboot_rw

Then generate a new env.bin by executing:

./diskless_gen.sh -e

For 2, you interrupt uBoot before it runs it's program that reads and executes the env.bin parameters.

  • Power on (hardware) or reboot (software) the VTP
  • Interrupt uBoot (through serial port program)
U-Boot 2016.01-00002-g46fc0b8-dirty (Oct 26 2016 - 14:24:01 -0400)

Model: Zynq Jlab VTP Board
Board: Xilinx Zynq
DRAM:  ECC disabled 1 GiB
MMC:   sdhci@e0100000: 0
reading env.bin
In:    serial@e0000
Out:   serial@e0000000
Err:   serial@e0000000
Model: Zynq Jlab VTP Board
Board: Xilinx Zynq
Net:   ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
eth0: ethernet@e000b000
Hit any key to stop autoboot:  0

If you hit Enter before the timeout, you will be presented with a uBoot prompt:

  • Change the bootcmd with the shell command
setenv bootcmd 'run tftpboot_rw'

Author: Bryan Moffit

Email: moffit@jlab.org

Created: 2020-12-01 Tue 18:13