bootcdwrite.conf(5)

🌸 NAME 🌸

okay so bestie, welcome to bootcdwrite.conf(5) β€” this is the manual for the config file that bootcdwrite reads. it's giving bootable-CD setup energy and honestly? iconic.


✨ SYNOPSIS ✨

/etc/bootcdwrite.conf

πŸ’– DESCRIPTION πŸ’–

bootcdwrite.conf is the configuration file that bootcdwrite uses. the default path is, and we are being so serious about this, /etc/bootcdwrite.conf.

not me realizing this file gets sourced as a shell file β€” yep, it's literally shell. so the options below are all just shell variables you can set. there are examples for every one of them, no gatekeeping here πŸ’…


πŸ‘‘ OPTIONS πŸ‘‘

  • SRCDISK β€” this variable defines the root of the files that will be copied.

like, say you're building an image from a remote system: export the root-directory with nfs, mount it locally at /mnt/remote, and then add:

SRCDISK=/mnt/remote

it gets added as a prefix to KERNEL, INITRD, DISABLE_CRON and NOT_TO_CD if those are relativ paths (meaning they don't start with "/").

Default:

SRCDISK=/
  • KERNEL β€” this defines which kernel is used. you can define more kernels with KERNEL<number>. the numbers have to start with 1 and can continue with 2, 3, 4 ...
KERNEL1=/boot/vmlinuz-2.6.18-3-686-bigmem
KERNEL2=/boot/vmlinuz-4.19.0-5-amd64

Default:

KERNEL=vmlinuz
  • APPEND β€” use this to define additional options for the kernel. for more kernels you can define APPEND<number>:
APPEND1="vga=normal nomodeset"
APPEND2=""

Default:

APPEND=""
  • INITRD β€” this defines the path to initrd. for more kernels you can define INITRD<number>:
INITRD1=/boot/initrd.img-2.6.18-3-686-bigmem
INITRD2="initrd.img"

Default:

INITRD="initrd.img"
  • KLABEL β€” this defines a label for the kernel to be choosen when booting from bootcd. you can define multiple kernels with KERNEL<number> and their label with KLABEL<number>:
KLABEL1=686-3
KERNEL1=/boot/vmlinuz-2.6.18-3-686-bigmem
INITRD1=/boot/initrd.img-2.6.18-3-686-bigmem
APPEND1=

Default:

KLABEL=linux
  • DISPLAY β€” text files to display at boottime (see syslinux doku). when you press F1 at boot time, the file defined by DISPLAY is shown. F2 shows the file defined by DISPLAY2 and F3 shows the file defined by DISPLAY3. F10 lists all people mentioned in changelog.

the text file kernelinfo gets replaced with a file that includes kernelinfo.

Default:

DISPLAY="/usr/share/bootcd/default.txt"
DISPLAY2="kernelinfo"
  • TYP β€” you can define this as CD or DVD so you get a warning if the size of the image is going to be larger than the specified medium. so considerate fr fr.

Default:

TYP=DVD
  • CDDEV β€” specifies one or more CD devices to boot from. the first one is the default. auto tries to find the bootcd on all SCSI and IDE CDROMS.

Default:

CDDEV="auto /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/sr0 /dev/sr1"
  • DO_CHECK β€” enables some checks or not. checking for possible problems can take a long time, but it is recommended to do the checks. (bestie, just do the checks.)

Default:

DO_CHECK=yes
  • NOT_TO_CD β€” this variable can also contain special characters. see EVALVARS down below πŸ‘‡

add directories which should be excluded from bootcd. directories are separated by spaces. SRCDISK will be automatically added to each path that does not start with "/".

Default:

NOT_TO_CD=""
  • SSHHOSTKEY β€” if using ssh it is helpful to have a unique ssh hostkey for each CD. to be generated at burntime. Default:
SSHHOSTKEY=yes
  • UDEV_FIXNET β€” if the network interfaces are hardwired in /etc/udev/rules.d/xx_persistent-net.rules they can removed on bootcd, with: Default:
UDEV_FIXNET="yes"
  • VAR β€” this defines the directoy where the image resists after build. Default:
VAR=/var/spool/bootcd
  • FLOPPY_RUNTIME_DEV β€” when you booting from cd, changes will be read from this device. without a floppy:
FLOPPY_RUNTIME_DEV=""

Default:

FLOPPY_RUNTIME_DEV=/dev/fd0
  • BOOTCDFLOPPY β€” if the system should boot the kernel from floppy. this reduces space on floppy used by bootcdflopcp. for this to work FLOPPY_CREATE_DEV has to be specified:
BOOTFLOPPY=yes|no

Default:

BOOTFLOPPY=no
  • BOOT_ONLY_WITH_FLOPPY β€” if you several machines will be booted from the same bootcd, you must have each one can hav separat configuraiton (exp: /etc/network/interfaces) on floppy. if the floppy can not be mounted, it may be a good idea to stop booting with:
BOOT_ONLY_WITH_FLOPPY=yes

Default:

BOOT_ONLY_WITH_FLOPPY=no
  • CLEAN_VAR β€” delete some chached files in /var with: Default:
CLEAN_VAR=yes
  • TO_FSTAB β€” to add addiditionel entries to fstab. use for example:
TO_FSTAB="/dev/hdc1 /home ext3 defaults 1 1

Default:

TO_FSTAB=""
  • NOTCOMPRESSED β€” files or Directory-Trees that should never be compressed on CD can be listed here. this can be used for documentation which should be visible without installing the bootcd. Default:
NOTCOMPRESSED=""
  • DISABLE_CRON β€” files listed will be on the cdrom with a .no_run_on_bootcd suffix so run-parts won't execute them. the original file will be a link to /bin/true. this is meant for cron maintenance scripts which are useless on a static cdrom. the default is to disable the daily find, standard and security scripts. with bootcd2disk this files will be reactivated again.

Default:

DISABLE_CRON="etc/cron.daily/find etc/cron.daily/standard etc/cron.daily/security"
  • MKISOFS_CHNG β€” with this variable some options given to mkisofs by bootcdwrite can be changed.

Example: to use -opt1 and -opt2 <value> and to not use any previous -opt1 [<value>...], -opt2 [<value...>] and -opt3 [<value>...] and to leave any other options as defined:

MKISOFS_CHNG="-opt1 -opt2 <value> !-opt3"

Default:

MKISOFS_CHNG=""
  • extra_changes() β€” it is possible to define a function called extra_changes to have some files modified on the ISO image. here is an example:
extra_changes() {
  bootcd_global VAR

  echo "noname" >$VAR/changes/etc/hostname

  mkdir -p $VAR/changes/etc/network
  ( echo "auto lo"
    echo "iface lo inet loopback"
    echo "" echo "auto eth0"
    echo "iface eth0 inet static"
    echo "       address 0.0.0.0"
    echo "       netmask 255.255.255.0"
  ) >$VAR/changes/etc/network/interfaces

  echo "127.0.0.1 localhost noname" >$VAR/changes/etc/hosts

  cat $SRCDISK/etc/passwd |
  grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc/passwd

  cat $SRCDISK/etc/shadow |
  grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc/shadow

  cat $SRCDISK/etc/group |
  grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc/group
}

Default:

# make sure the function is not defined
unset -f extra_changes
  • BOOTCDMODPROBE β€” if booted from initrd bootcd has to load the necessary modules. if only modules provided by initramfs-tools are needed you can specify "standard" here:
BOOTCDMODPROBE=standard

if bootcd should try extra hard to load neccessary modules you can specify "bootcd" here. bootcd will use discover for this purpose. so discover has to be installed:

BOOTCDMODPROBE=bootcd

if you specify auto, bootcd will check if discover is installed. if it is installed BOOTCDMODPROBE=bootcd will be set, if not BOOTCDMODPROBE=standard will be set. be aware that people have reported, that sometimes BOOTCDMODPROBE=bootcd may not work but sometimes it is needed. Default:

BOOTCDMODPROBE=auto

πŸ¦‹ EVALVARS πŸ¦‹

most variables listed in chapter OPTIONS can't contain special characters.

it is not recommended to use special characters anyway, but the variable NOT_TO_CD may contain blank ( ), dollar ($), backslash (\), qoute (") and backquote (`). these variables are called EVALVARS in this manpage, because in shell script, the eval command can be used to easily read them.

for example, to define NOT_TO_CD with the files or directories "/etc/noblank", "/etc/blank name1" and "/etc/blank name2" the following config line would be possible:

NOT_TO_CD="/etc/noblank \"/etc/blank name1\" /etc/blank\ name2"

because all variables have to be readable by shell with the eval command, the syntax can be checked. if the config line above is entered in a shell with the test commands:

eval "set -- $NOT_TO_CD"
echo "#=<$#> 1=<$1> 2=<$2> 3=<$3> 4=<$4>"

should print out the result:

#=<3> 1=</etc/noblank> 2=</etc/blank name1> 3=</etc/blank name2> 4=<>

πŸŽ€ ENVIRONMENT πŸŽ€

  • ia_logfile β€” the logfile of bootcdwrite is /var/log/bootcdwrite, if not overwriten with variable ia_logfile before.

🧚 Using functions 🧚

used functions listed in OPTIONS should declare all used variables listed in OPTIONS with the function bootcd_global <var1> [...].

for example a function extra_changes() that wants to use variable VAR should start with:

extra_changes()
{
  bootcd_global VAR

see full example in OPTIONS/extra_changes()

the function bootcd_global makes sure that all given variables are declared. slay, honestly.


πŸ’œ SEE ALSO πŸ’œ

bootcd(7), bootcdwrite(1), bootcd2disk(1), bootcdflopcp(1), bootcdmk2diskconf(1), bootcd2disk.conf(5)


πŸ“ Author πŸ“

bernd@bschu.de

License: GNU General Public License, version 3


Bernd Schumacher <bernd@bschu.de> (2007-2026)


and that's the whole page bestie 🫢 this was version 0.1, dated 2020-08-07, and it's the bootcdwrite.conf(5) manual β€” go build something bootable, you got this πŸ’…βœ¨

πŸ“¦ where this page comes from