X-Git-Url: http://rtime.felk.cvut.cz/gitweb/novaboot.git/blobdiff_plain/4af22159756e71747ed25baacd451af6b1a87548..ad6c3f55e0e9ab62b200b524a446f12dc44e6612:/novaboot diff --git a/novaboot b/novaboot index f2984d8..b86dba0 100755 --- a/novaboot +++ b/novaboot @@ -141,7 +141,7 @@ my ($target_reset, $target_power_on, $target_power_off); ); $rsync_flags = ''; $rom_prefix = 'rom://'; -$stty = 'raw -crtscts -onlcr 115200'; +$stty = 'raw -crtscts -onlcr -echo 115200'; $reset = 1; # Reset target by default $interaction = 1; # Perform target interaction by default $final_eol = 1; @@ -176,6 +176,9 @@ my %opt_spec_safe = ( "prefix|grub-prefix=s" => \$grub_prefix, "pulsar-root=s" => \$pulsar_root, "pulsar|p:s" => \$pulsar, + "remote-expect=s"=> \$remote_expect, + "remote-expect-silent=s"=> sub { $remote_expect=$_[1]; $remote_expect_silent=1; }, + "remote-expect-timeout=i"=> \$remote_expect_timeout, "uboot-addr=s" => \%uboot_addr, "uboot-cmd=s" => \$uboot_cmd, "uboot-stop-key=s" => \$uboot_stop_key, @@ -219,9 +222,6 @@ my %opt_spec = ( "qemu-append=s" => \$qemu_append, "qemu-flags|q=s" => \$qemu_flags_cmd, "remote-cmd=s" => sub { @remote_cmd = ($_[1]); }, - "remote-expect=s"=> \$remote_expect, - "remote-expect-silent=s"=> sub { $remote_expect=$_[1]; $remote_expect_silent=1; }, - "remote-expect-timeout=i"=> \$remote_expect_timeout, "reset!" => \$reset, "reset-cmd=s" => sub { @reset_cmd = ($_[1]); }, "reset-send=s" => \$reset_send, @@ -995,7 +995,7 @@ foreach my $script (@scripts) { $hostname = ""; } my $files = join(" ", map({ ($file) = m/([^ ]*)/; $file; } ( @$modules, @bootloader_configs, @$copy))); - map({ my $file = (split)[0]; die "$file: $!" if ! -f $file; } @$modules); + map({ my $file = (split)[0]; die "Not a file: $file: $!" if ! -f $file; } @$modules); my $istty = -t STDOUT && ($ENV{'TERM'} || 'dumb') ne 'dumb'; my $progress = $istty ? "--progress" : ""; if ($files) { @@ -1171,7 +1171,7 @@ if (defined $ider) { ### Reset target (IP relay, AMT, ...) if (defined $target_reset && $reset) { - print STDERR "novaboot: Reseting the test box... "; + print STDERR "novaboot: Resetting the test box... "; &$target_reset(); print STDERR "done\n"; if (defined $exp) { @@ -1379,6 +1379,40 @@ having per-system, per-user or per-project configurations. Configuration file syntax is described in section L. +Novaboot newcomers may be confused by a large number of configuration +options. Understanding all these options is not always needed, +depending on the used setup. The L
+shows different setups that vary in how much effort is needed +configure novaboot for them. The setups are: + +=over 3 + +=item A: Laptop and target device only + +This requires to configure everything on the laptop side, including a +serial line connection (L, L, ...), power +on/off/reset commands (L, ...), TFTP server +(L, L...), device IP addresses, etc. + +=item B: Laptop, target device and external TFTP server + +Like the previous setup, but the TFTP (and maybe DHCP) configuration +is handled by a server. Novaboot users need to understand where to +copy their files to the TFTP server (L) and which IP +addresses their target will get, but do not need to configure the +servers themselves. + +=item C: Novaboot server running novaboot-shell + +With this setup, the configuration is done on the server. Users only +need to know the SSH account (L) used to communicate between +novaboot and novaboot server. The server is implemented as a +restricted shell (L) on the server. No need to give +full shell access to novaboot users on the server. + +=back + =head2 Simple examples of using C: To boot Linux (files F and F in current @@ -1782,10 +1816,23 @@ example C. =item --remote-expect=I -Wait for reception of I after establishing the remote -connection. This option is needed when novaboot should wait for -confirmation before deploying files to the target, e.g. to not -overwrite other user's files when they are using the target. +Wait for reception of I after establishing the remote serial +line connection. Novaboot assumes that after establishing the serial +line connection, the user running novaboot has exclusive access to the +target. If establishing of the serial line connection happens +asynchronously (e.g. running a command remotely via SSH), we need this +option to wait until the exclusive access is confirmed by the remote +side. + +Depending on target configuration, this option can solve two practical +problems: 1) Overwriting of files deployed by another user currently +using the target. 2) Resetting the target board before serial line +connection is established and thus missing bootloader interaction. + +Example of usage with the L: + + --remote-cmd='ssh -tt example.com sterm -v /dev/ttyUSB0' --remote-expect='sterm: Connected' =item --remote-expect-silent=I @@ -2010,7 +2057,7 @@ The same as --exiton -re --exiton I. =item --exiton-timeout=I By default B<--exiton> waits for the string match forever. When this -option is specified, "exiton" timeouts after the specifies the number of +option is specified, "exiton" timeouts after the specified number of seconds and novaboot returns non-zero exit code. =item -i, --interactive