Once installed, RedBoot will operate fairly generically. However,
there are some features that can be configured for a particular installation.
These depend primarily on whether flash and/or networking support are available. The remainder
of this discussion assumes that support for both of these options is included
in RedBoot.
Each node in a networked
system needs to have a unique address. Since the network support in RedBoot
is based on TCP/IP, this address
is an IP (Internet Protocol) address. There are two ways for a system to “know”
its IP address. First, it can be stored locally on the platform. This is known
as having a static IP address. Second, the system can use the network itself
to discover its IP address. This is known as a dynamic IP address. RedBoot
supports this dynamic IP address mode by use of the BOOTP (a subset of DHCP) protocol. In this case, RedBoot will ask the network (actually
some generic server on the network) for the IP address to use.
NOTE: Currently, RedBoot only supports BOOTP. In future releases, DHCP may
also be supported, but such support will be limited to additional data items,
not lease-based address allocation.
The choice of IP
address type is made via the fconfig command. Once a selection
is made, it will be stored in flash memory. RedBoot only queries the flash
configuration information at reset, so any changes will require restarting
the platform.
Here is an example of the RedBoot fconfig
command, showing network addressing:
RedBoot> fconfig -l
Run script at boot: false
Use BOOTP for network configuration: false
Local IP address: 192.168.1.29
Default server IP address: 192.168.1.101
DNS server IP address: 192.168.1.1
GDB connection port: 9000
Network debug at boot time: false
In this case, the board has been configured with a static IP address
listed as the Local IP address. The default server IP address specifies which
network node to communicate with for TFTP service. This address can be overridden
directly in the TFTP
commands.
The DNS server IP address option
controls where RedBoot should make DNS lookups. A setting of 0.0.0.0 will disable DNS
lookups. The DNS server IP address can also be set at runtime.
If the selection for Use BOOTP for network configuration had been true, these IP
addresses would be determined at boot time, via the BOOTP protocol. The final
number which needs to be configured, regardless of IP address selection mode,
is the GDB connection port. RedBoot allows for incoming commands
on either the available serial ports or via the network. This port number
is the TCP port that RedBoot will use to accept incoming connections.
These connections can be used for GDB sessions, but they can also be
used for generic RedBoot commands. In particular, it is possible to communicate
with RedBoot via the telnet
protocol. For example, on Linux®:
% telnet redboot_board 9000
Connected to redboot_board
Escape character is ‘^]’.
RedBoot>
RedBoot
may require three different classes of service from a network host:
dynamic IP address allocation, using BOOTP
TFTP service for file downloading
DNS server for hostname lookups
Depending on the host system, these services may or may not be available
or enabled by default. See your system documentation for more details.
In particular, on Red Hat Linux, neither of these services will be configured
out of the box. The following will provide a limited explanation of how to
set them up. These configuration setups must be done as root on the host or server machine.
Reload the xinetd configuration using the command:
/sbin/service xinetd reload
Create the directory /tftpboot
using the command
mkdir /tftpboot
If you are using Red Hat 8 or newer, you may need to configure
the built-in firewall to allow through TFTP. Either edit
/etc/sysconfig/iptables or run
redhat-config-securitylevel on the command line or from
the menu as System Settings->Security Settings to lower the security level.
You should only do this with the permission of your systems administrator and
if you are already behind a separate firewall.
NOTE: Under Red Hat 7 you must address files by absolute pathnames, for example: /tftpboot/boot.img not /boot.img, as you may have done with
other implementations.
On systems newer than Red Hat 7 (7.1 and beyond), filenames are once again relative to the
/tftpboot directory.
First, ensure that you have
the proper package, dhcp (not dhcpd) installed. The DHCP server provides Dynamic Host Configuration,
that is, IP address and other data to hosts on a network. It does this in
different ways. Next, there can be a fixed relationship between a certain
node and the data, based on that node’s unique Ethernet Station Address
(ESA, sometimes called a MAC address). The other possibility is simply to
assign addresses that are free. The sample DHCP configuration file shown does
both. Refer to the DHCP documentation for more details.
First, ensure that you have the proper
RPM package, caching-nameserver
installed. Then change the configuration
(in /etc/named.conf) so that the
forwarders point to the primary
nameservers for your machine, normally using the nameservers listed in
/etc/resolv.conf.
Example 1-2. Sample /etc/named.conf for Red Hat Linux 7.x
--------------- /etc/named.conf -----------------------------
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
forward first;
forwarders {
212.242.40.3;
212.242.40.51;
};
};
//
// a caching only nameserver config
//
// Uncomment the following for Red Hat Linux 7.2 or above:
// controls {
// inet 127.0.0.1 allow { localhost; } keys { rndckey; };
// };
// include "/etc/rndc.key";
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
Make sure the server is started with the command:
# service named start
and is
started on next reboot with the command
# chkconfig named on
Finally, you may wish to change
/etc/resolv.conf to use
127.0.0.1 as the nameserver for your
local machine.
RedBoot cannot communicate with
machines on different subnets because it does not support routing. It always
assumes that it can get to an address directly, therefore it always tries
to ARP and then send packets directly to that unit. This means that whatever
it talks to must be on the same subnet. If you need to talk to a host on a
different subnet (even if it's on the same ‘wire’), you need to
go through an ARP proxy, providing that there is a Linux box connected to
the network which is able to route to the TFTP server. For example: /proc/sys/net/ipv4/conf/<interface>/proxy_arp where <interface>should be replaced with whichever network interface
is directly connected to the board.