From 78425235a7dc69233d21477ebb9a42d996948176 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Tue, 7 Jun 2016 16:26:00 +0200 Subject: net: update network docs The network configuration has changed in the previous patches. Update the documentation accordingly. Signed-off-by: Sascha Hauer --- Documentation/user/booting-linux.rst | 40 ++++---------- Documentation/user/networking.rst | 101 +++++++++++++++++++++++++++++++++-- 2 files changed, 105 insertions(+), 36 deletions(-) diff --git a/Documentation/user/booting-linux.rst b/Documentation/user/booting-linux.rst index 66f64ece08..b5e4320ef6 100644 --- a/Documentation/user/booting-linux.rst +++ b/Documentation/user/booting-linux.rst @@ -232,43 +232,20 @@ Network boot With the following steps, barebox can start the kernel and root filesystem over the network, a standard development case. -Configure network: edit ``/env/network/eth0``. For a standard DHCP setup -the following is enough: - -.. code-block:: sh - - #!/bin/sh - - ip=dhcp - serverip=192.168.23.45 - -The optional setting ``serverip`` specifies the IP address of your TFTP and NFS -server, and is only necessary if it differs from the server IP offered by the -DHCP server (i.e., the field ``siaddr`` in the DHCP ACK Reply). - -A static IP setup can look like this: - -.. code-block:: sh - - #!/bin/sh - - ip=static - ipaddr=192.168.2.10 - netmask=255.255.0.0 - gateway=192.168.2.1 - serverip=192.168.2.1 +See :ref:`networking` for informations how to configure your network interfaces. Note that barebox will pass the same IP settings to the kernel, i.e. it passes -``ip=$ipaddr:$serverip:$gateway:$netmask::eth0:`` for a static IP setup and -``ip=dhcp`` for a dynamic DHCP setup. +``ip=$ipaddr:$serverip:$gateway:$netmask:::`` for a static IP setup +and ``ip=dhcp`` for a dynamic DHCP setup. ```` is a configurable value. +set ``nv.dev..linuxdevname`` to the name the device has in Linux. By default, barebox uses the variables ``global.user`` and ``global.hostname`` to retrieve its kernel image over TFTP, which makes it possible to use multiple boards for multiple users with one single server. -You can adjust those variables in ``/env/config``:: +You can adjust those variables using nvvars with these commands:: - global.user=sha - global.hostname=efikasb + nv user=sha + nv hostname=efikasb Copy the kernel (and devicetree if needed) to the root directory of your TFTP server, and name them accordingly; for example:: @@ -311,7 +288,8 @@ If the preconfigured paths or names are not suitable, they can be adjusted in fi nfsroot="/home/${global.user}/nfsroot/${global.hostname}" - bootargs-ip + ip_route_get -b ${global.net.server} global.linux.bootargs.dyn.ip + global.linux.bootargs.dyn.root="root=/dev/nfs nfsroot=$nfsroot,v3,tcp" ``boot net`` will then retrieve the kernel (and also the device tree and diff --git a/Documentation/user/networking.rst b/Documentation/user/networking.rst index 8afb433837..5822165281 100644 --- a/Documentation/user/networking.rst +++ b/Documentation/user/networking.rst @@ -1,3 +1,5 @@ +.. _networking: + Networking ========== @@ -7,6 +9,49 @@ barebox has IPv4 networking support. Several protocols such as :ref:`DHCP Network configuration --------------------- +Lowlevel network device configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Network devices are configured with a set of device specific variables: + ++-------------------+--------------+----------------------------------------------------+ +| name | type | | ++===================+==============+====================================================+ +| .mode | enum | "dhcp": DHCP is used to get IP address and netmask | +| | | "static": Static IP setup described by variables | +| | | below | +| | | "disabled": Interface unused | ++-------------------+--------------+----------------------------------------------------+ +| .ipaddr | ipv4 address | The IP address when using static configuration | ++-------------------+--------------+----------------------------------------------------+ +| .netmask | ipv4 address | The netmask when using static configuration | ++-------------------+--------------+----------------------------------------------------+ +| .gateway | ipv4 address | Alias for global.net.gateway. For | +| | | compatibility, do not use. | ++-------------------+--------------+----------------------------------------------------+ +| .serverip| ipv4 address | Alias for global.net.server. For | +| | | compatibility, do not use. | ++-------------------+--------------+----------------------------------------------------+ +| .ethaddr | MAC address | The MAC address of this device | ++-------------------+--------------+----------------------------------------------------+ + +Additionally there are some more variables that are not specific to a +device: + ++------------------------------+--------------+------------------------------------------------+ +| name | type | | ++==============================+==============+================================================+ +| global.net.gateway | ipv4 host | The network gateway used when a host is not in | +| | | any directly visible subnet. May be set | +| | | automatically by DHCP. | ++------------------------------+--------------+------------------------------------------------+ +| global.net.server | ipv4 host | The default server address. If unspecified, may| +| | | be set by DHCP | ++------------------------------+--------------+------------------------------------------------+ +| global.net.nameserver | ipv4 address | The DNS server used for resolving host names. | +| | | May be set by DHCP | ++------------------------------+--------------+------------------------------------------------+ + The first step for networking is configuring the network device. The network device is usually ``eth0``. The current configuration can be viewed with the :ref:`devinfo ` command: @@ -16,10 +61,9 @@ device is usually ``eth0``. The current configuration can be viewed with the barebox:/ devinfo eth0 Parameters: ethaddr: 00:1c:49:01:03:4b - gateway: 192.168.23.1 ipaddr: 192.168.23.197 netmask: 255.255.0.0 - serverip: 192.168.23.1 + [...] The configuration can be changed on the command line with: @@ -30,9 +74,56 @@ The configuration can be changed on the command line with: The :ref:`dhcp command ` will change the settings based on the answer from the DHCP server. -This low-level configuration of the network interface is often not necessary. Normally -the network settings should be edited in ``/env/network/eth0``, then the network interface -can be brought up using the :ref:`ifup command `. +To make the network device settings persistent across reboots there is a nonvolatile +variable (nvvar) for each of the varariables above. The network device specific variables +are: + +.. code-block:: sh + + nv.dev..mode + nv.dev..ipaddr + nv.dev..netmask + nv.dev..ethaddr + +The others are: + +.. code-block:: sh + + nv.net.gateway + nv.net.server + nv.net.nameserver + +A typical simple network setting is to use DHCP. Provided the network interface is eth0 +then this would configure the network device for DHCP: + +.. code-block:: sh + + nv dev.eth0.mode=dhcp + +(In fact DHCP is the default, so the above is not necessary) + +A static setup would look like: + +.. code-block:: sh + + nv dev.eth0.mode=static + nv dev.eth0.ipaddr=192.168.0.17 + nv dev.eth0.netmask=255.255.0.0 + nv net.server=192.168.0.1 + +The settings can be activated with the :ref:`ifup command `: + +.. code-block:: sh + + ifup eth0 + +or: + +.. code-block:: sh + + ifup -a + +'ifup -a' will activate all ethernet interfaces, also the ones on USB. Network filesystems ------------------- -- cgit v1.2.3