(or `./script` as described above) will run Qemu and make it boot the
configuration specified in the `script`.
2. Create a bootloader configuration file (currently supported
-bootloaders are GRUB, GRUB2, Pulsar and U-Boot) and copy it with all
-other files needed for booting to a remote boot server.
+bootloaders are GRUB, GRUB2, ISOLINUX, Pulsar and U-Boot) and copy it
+with all other files needed for booting to a remote boot server.
./script --server=192.168.1.1:/tftp --iprelay=192.168.1.2
serial output.
3. Run DHCP and TFTP server on developer's machine to PXE-boot the target
-host from it. E.g.
+machine from it. E.g.
./script --dhcp-tftp
When a PXE-bootable machine is connected via Ethernet to developer's
- machine, it will boot the configuration described in _script_.
+ machine, it will boot the configuration described in the _script_.
4. Create bootable ISO images. E.g.
novaboot --iso -- script1 script2
- The created ISO image will have GRUB bootloader installed on it and
+ The created ISO image will use ISOLINUX bootloader installed on it and
the boot menu will allow selecting between _script1_ and _script2_
configurations.
# PHASES AND OPTIONS
Novaboot performs its work in several phases. Each phase can be
-influenced by several options, certain phases can be skipped. The list
-of phases (in the execution order) and the corresponding options
-follow.
+influenced by several command line options, certain phases can be
+skipped. The list of phases (in the execution order) and the
+corresponding options follow.
## Configuration reading phase
After starting, novaboot reads configuration files. Their content is
-described in ["CONFIGURATION FILE"](#configuration-file). By default, configuration is
-read from two locations. First from the configuration directory and
-second from `.novaboot` files along the path to the current
-directory. The later read files override settings from the former
-ones.
+described in section ["CONFIGURATION FILE"](#configuration-file). By default,
+configuration is read from two locations. First from the configuration
+directory and second from `.novaboot` files along the path to the
+current directory. The later read files override settings from the
+former ones.
Configuration directory is determined by the content of
NOVABOOT\_CONFIG\_DIR environment variable defaulting to
solely from English letters, numbers, dashes '-' and underscores '\_'
(note that dot '.' is not included) are read in alphabetical order.
-Then novaboot searches for files named `.novaboot` starting
-from the directory of the novaboot script (or working directory, see
-bellow) and continuing upwards up to the root directory. The found
-configuration files are then read in order from the root directory
-downwards.
+Then novaboot searches for files named `.novaboot` starting from the
+directory of the novaboot script (or working directory, see bellow)
+and continuing upwards up to the root directory. The found
+configuration files are then read in the opposite order (i.e. from the
+root directory downwards). This allows to have, for example, user
+specific configuration in `~/.novaboot` and project specific one in
+`~/project/.novaboot`.
In certain cases, the location of the novaboot script cannot be
determined in this early phase. This happens either when the script is
-read from the standard input or when novaboot is invoked explicitly
-and options precede the script name, as in the example ["4."](#4) above.
-In this case the current working directory is used as a starting point
-for configuration file search instead of the novaboot script
-directory.
+read from the standard input or when novaboot is invoked explicitly as
+in the example ["4."](#4) above. In this case the current working
+directory is used as a starting point for configuration file search
+instead of the novaboot script directory.
- -c, --config=_filename_
Append a string to the first `load` line in the novaboot script. This
can be used to append parameters to the kernel's or root task's
- command line. Can appear multiple times.
+ command line. This option can appear multiple times.
- -b, --bender
- --chainloader=_chainloader_
- Chainloader that is loaded before the kernel and other files specified
- in the novaboot script. E.g. 'bin/boot/bender promisc'.
+ Specifies a chainloader that is loaded before the kernel and other
+ files specified in the novaboot script. E.g. 'bin/boot/bender
+ promisc'.
- --dump
- --grub2\[=_filename_\]
- Generate GRUB2 menuentry in _filename_. If _filename_ is not
- specified `grub.cfg` is used. The content of the menuentry can be
- customized with **--grub-preable**, **--grub2-prolog** or
+ Generate GRUB2 menu entry in _filename_. If _filename_ is not
+ specified `grub.cfg` is used. The content of the menu entry can be
+ customized with **--grub-preamble**, **--grub2-prolog** or
**--grub\_prefix** options.
- In order to use the the generated menuentry on your development
+ In order to use the the generated menu entry on your development
machine that uses GRUB2, append the following snippet to
`/etc/grub.d/40_custom` file and regenerate your grub configuration,
i.e. run update-grub on Debian/Ubuntu.
- --grub2-prolog=_prolog_
- Specifies text _preable_ that is put at the beginning of the entry
- GRUB2 entry.
+ Specifies text that is put at the beginning of the GRUB2 menu entry.
- -m, --make\[=make command\]
used. The _port_ specifies a TCP port for SOL. If not specified, the
default is 16992. Default _user_ is admin.
-- --ider
-
- Use Intel AMT technology for IDE redirection. This allows the target
- machine to boot from nonvaboot created ISO image.
-
- The experimental _amtider_ utility needed by this option can be
- obtained from https://github.com/wentasah/amtterm.
-
- --iprelay=_addr\[:port\]_
Use TCP/IP relay and serial port to access the target's serial port
- --server\[=\[\[user@\]server:\]path\]
- Copy all files needed for booting to another location (implies **-g**
- unless **--grub2** is given). The files will be copied (by **rsync**
- tool) to the directory _path_. If the _path_ contains string $NAME,
- it will be replaced with the name of the novaboot script (see also
- **--name**).
+ Copy all files needed for booting to another location. The files will
+ be copied (by **rsync** tool) to the directory _path_. If the _path_
+ contains string $NAME, it will be replaced with the name of the
+ novaboot script (see also **--name**).
+
+- --rsync-flags=_flags_
+
+ Specifies which _flags_ are appended to `rsync` command line when
+ copying files as a result of _--server_ option.
- --concat
concatenating all files of the same name from all subdirectories of
_path-wo-name_ found on the "server".
-- --rsync-flags=_flags_
+- --ider
- Specifies which _flags_ are appended to `rsync` command line when
- copying files as a result of _--server_ option.
+ Use Intel AMT technology for IDE redirection. This allows the target
+ machine to boot from novaboot created ISO image. Implies **--iso**.
+
+ The experimental `amtider` utility needed by this option can be
+ obtained from https://github.com/wentasah/amtterm.
## Target power-on and reset phase
+At this point, the target is reset (or switched on/off). There is
+several ways how this can be accomplished. Resetting a physical target
+can currently be accomplished by the following options: **--amt**,
+**--iprelay**, **--reset-cmd**.
+
- --on, --off
Switch on/off the target machine and exit. The script (if any) is
- --uboot\[=_prompt_\]
- Interact with uBoot bootloader to boot the thing described in the
+ Interact with U-Boot bootloader to boot the thing described in the
novaboot script. _prompt_ specifies the U-Boot's prompt (default is
"=> ", other common prompts are "U-Boot> " or "U-Boot# ").
Implementation of this option is currently tied to a particular board
- WVDESC
- Description of the wvtest-compliant program.
+ Description of the WvTest-compliant program.
- WVTEST\_TIMEOUT
default, novaboot looks for files named `.novaboot` as described in
["Configuration reading phase"](#configuration-reading-phase). Alternatively, configuration file
location can be specified with the **-c** switch or with the
-NOVABOOT\_CONFIG environment variable. The configuration file has perl
+NOVABOOT\_CONFIG environment variable. The configuration file has Perl
syntax and should set values of certain Perl variables. The current
configuration can be dumped with the **--dump-config** switch. Some
configuration variables can be overridden by environment variables
if ($ret) { die("Command failure $ret"); }
}
-## WvTest handline
+## WvTest headline
if (exists $variables->{WVDESC}) {
print "Testing \"$variables->{WVDESC}\" in $last_fn:\n";
### U-boot conversation
if (defined $uboot) {
my $uboot_prompt = $uboot || '=> ';
- print "novaboot: Waiting for uBoot prompt...\n";
+ print "novaboot: Waiting for U-Boot prompt...\n";
$exp->log_stdout(1);
#$exp->exp_internal(1);
$exp->expect(20,
[qr/Hit any key to stop autoboot:/, sub { $exp->send("\n"); exp_continue; }],
- $uboot_prompt) || die "No uBoot prompt deteceted";
+ $uboot_prompt) || die "No U-Boot prompt deteceted";
foreach my $cmd (@uboot_init) {
if ($cmd =~ /\$NB_MYIP/) {
my $ip = (grep /inet /, `ip addr show eth0`)[0] || die "Problem determining our IP address";
}
chomp($cmd);
$exp->send("$cmd\n");
- $exp->expect(10, $uboot_prompt) || die "uBoot prompt timeout";
+ $exp->expect(10, $uboot_prompt) || die "U-Boot prompt timeout";
}
# Boot the system if there are some load lines in the script
$uboot_prompt) || die "Initrd load failed";
}
$exp->send("setenv bootargs $kcmd\n");
- $exp->expect(5, $uboot_prompt) || die "uBoot prompt timeout";
+ $exp->expect(5, $uboot_prompt) || die "U-Boot prompt timeout";
$exp->send("bootm $uboot_addr{kernel} $ramdisk_addr $fdt_addr\n");
- $exp->expect(5, "\n") || die "uBoot command timeout";
+ $exp->expect(5, "\n") || die "U-Boot command timeout";
}
}
=item 2.
Create a bootloader configuration file (currently supported
-bootloaders are GRUB, GRUB2, Pulsar and U-Boot) and copy it with all
-other files needed for booting to a remote boot server.
+bootloaders are GRUB, GRUB2, ISOLINUX, Pulsar and U-Boot) and copy it
+with all other files needed for booting to a remote boot server.
./script --server=192.168.1.1:/tftp --iprelay=192.168.1.2
=item 3.
Run DHCP and TFTP server on developer's machine to PXE-boot the target
-host from it. E.g.
+machine from it. E.g.
./script --dhcp-tftp
When a PXE-bootable machine is connected via Ethernet to developer's
-machine, it will boot the configuration described in I<script>.
+machine, it will boot the configuration described in the I<script>.
=item 4.
novaboot --iso -- script1 script2
-The created ISO image will have GRUB bootloader installed on it and
+The created ISO image will use ISOLINUX bootloader installed on it and
the boot menu will allow selecting between I<script1> and I<script2>
configurations.
=head1 PHASES AND OPTIONS
Novaboot performs its work in several phases. Each phase can be
-influenced by several options, certain phases can be skipped. The list
-of phases (in the execution order) and the corresponding options
-follow.
+influenced by several command line options, certain phases can be
+skipped. The list of phases (in the execution order) and the
+corresponding options follow.
=head2 Configuration reading phase
After starting, novaboot reads configuration files. Their content is
-described in L</"CONFIGURATION FILE">. By default, configuration is
-read from two locations. First from the configuration directory and
-second from F<.novaboot> files along the path to the current
-directory. The later read files override settings from the former
-ones.
+described in section L</"CONFIGURATION FILE">. By default,
+configuration is read from two locations. First from the configuration
+directory and second from F<.novaboot> files along the path to the
+current directory. The later read files override settings from the
+former ones.
Configuration directory is determined by the content of
NOVABOOT_CONFIG_DIR environment variable defaulting to
solely from English letters, numbers, dashes '-' and underscores '_'
(note that dot '.' is not included) are read in alphabetical order.
-Then novaboot searches for files named F<.novaboot> starting
-from the directory of the novaboot script (or working directory, see
-bellow) and continuing upwards up to the root directory. The found
-configuration files are then read in order from the root directory
-downwards.
+Then novaboot searches for files named F<.novaboot> starting from the
+directory of the novaboot script (or working directory, see bellow)
+and continuing upwards up to the root directory. The found
+configuration files are then read in the opposite order (i.e. from the
+root directory downwards). This allows to have, for example, user
+specific configuration in F<~/.novaboot> and project specific one in
+F<~/project/.novaboot>.
In certain cases, the location of the novaboot script cannot be
determined in this early phase. This happens either when the script is
-read from the standard input or when novaboot is invoked explicitly
-and options precede the script name, as in the example L</"4."> above.
-In this case the current working directory is used as a starting point
-for configuration file search instead of the novaboot script
-directory.
+read from the standard input or when novaboot is invoked explicitly as
+in the example L</"4."> above. In this case the current working
+directory is used as a starting point for configuration file search
+instead of the novaboot script directory.
=over 8
Append a string to the first C<load> line in the novaboot script. This
can be used to append parameters to the kernel's or root task's
-command line. Can appear multiple times.
+command line. This option can appear multiple times.
=item -b, --bender
=item --chainloader=I<chainloader>
-Chainloader that is loaded before the kernel and other files specified
-in the novaboot script. E.g. 'bin/boot/bender promisc'.
+Specifies a chainloader that is loaded before the kernel and other
+files specified in the novaboot script. E.g. 'bin/boot/bender
+promisc'.
=item --dump
=item --grub2[=I<filename>]
-Generate GRUB2 menuentry in I<filename>. If I<filename> is not
-specified F<grub.cfg> is used. The content of the menuentry can be
-customized with B<--grub-preable>, B<--grub2-prolog> or
+Generate GRUB2 menu entry in I<filename>. If I<filename> is not
+specified F<grub.cfg> is used. The content of the menu entry can be
+customized with B<--grub-preamble>, B<--grub2-prolog> or
B<--grub_prefix> options.
-In order to use the the generated menuentry on your development
+In order to use the the generated menu entry on your development
machine that uses GRUB2, append the following snippet to
F</etc/grub.d/40_custom> file and regenerate your grub configuration,
i.e. run update-grub on Debian/Ubuntu.
=item --grub2-prolog=I<prolog>
-Specifies text I<preable> that is put at the beginning of the entry
-GRUB2 entry.
+Specifies text that is put at the beginning of the GRUB2 menu entry.
=item -m, --make[=make command]
used. The I<port> specifies a TCP port for SOL. If not specified, the
default is 16992. Default I<user> is admin.
-=item --ider
-
-Use Intel AMT technology for IDE redirection. This allows the target
-machine to boot from nonvaboot created ISO image.
-
-The experimental I<amtider> utility needed by this option can be
-obtained from https://github.com/wentasah/amtterm.
-
=item --iprelay=I<addr[:port]>
Use TCP/IP relay and serial port to access the target's serial port
=item --server[=[[user@]server:]path]
-Copy all files needed for booting to another location (implies B<-g>
-unless B<--grub2> is given). The files will be copied (by B<rsync>
-tool) to the directory I<path>. If the I<path> contains string $NAME,
-it will be replaced with the name of the novaboot script (see also
-B<--name>).
+Copy all files needed for booting to another location. The files will
+be copied (by B<rsync> tool) to the directory I<path>. If the I<path>
+contains string $NAME, it will be replaced with the name of the
+novaboot script (see also B<--name>).
+
+=item --rsync-flags=I<flags>
+
+Specifies which I<flags> are appended to F<rsync> command line when
+copying files as a result of I<--server> option.
=item --concat
concatenating all files of the same name from all subdirectories of
I<path-wo-name> found on the "server".
-=item --rsync-flags=I<flags>
+=item --ider
-Specifies which I<flags> are appended to F<rsync> command line when
-copying files as a result of I<--server> option.
+Use Intel AMT technology for IDE redirection. This allows the target
+machine to boot from novaboot created ISO image. Implies B<--iso>.
+
+The experimental C<amtider> utility needed by this option can be
+obtained from https://github.com/wentasah/amtterm.
=back
=head2 Target power-on and reset phase
+At this point, the target is reset (or switched on/off). There is
+several ways how this can be accomplished. Resetting a physical target
+can currently be accomplished by the following options: B<--amt>,
+B<--iprelay>, B<--reset-cmd>.
+
=over 8
=item --on, --off
=item --uboot[=I<prompt>]
-Interact with uBoot bootloader to boot the thing described in the
+Interact with U-Boot bootloader to boot the thing described in the
novaboot script. I<prompt> specifies the U-Boot's prompt (default is
"=> ", other common prompts are "U-Boot> " or "U-Boot# ").
Implementation of this option is currently tied to a particular board
=item WVDESC
-Description of the wvtest-compliant program.
+Description of the WvTest-compliant program.
=item WVTEST_TIMEOUT
default, novaboot looks for files named F<.novaboot> as described in
L</Configuration reading phase>. Alternatively, configuration file
location can be specified with the B<-c> switch or with the
-NOVABOOT_CONFIG environment variable. The configuration file has perl
+NOVABOOT_CONFIG environment variable. The configuration file has Perl
syntax and should set values of certain Perl variables. The current
configuration can be dumped with the B<--dump-config> switch. Some
configuration variables can be overridden by environment variables
=head1 AUTHORS
Michal Sojka <sojka@os.inf.tu-dresden.de>
+
+=cut
+
+# LocalWords: novaboot Novaboot NOVABOOT TFTP PXE DHCP filename stty
+# LocalWords: chainloader stdout Qemu qemu preprocessing ISOLINUX bootable
+# LocalWords: config subprocesses sudo sudoers tftp dhcp IDE stdin
+# LocalWords: subdirectories TTY whitespace heredoc POSIX WvTest