From Fedora Project Wiki
No edit summary
No edit summary
Line 4: Line 4:


Two tasks:
Two tasks:
* Network '''''enablement''''' for installer - configure and activate one device to be used during installation. It can be configured using [[Anaconda/Network#boot | boot parameters]], or [[Anaconda/Network#kickstart | kickstart]], or if needed user can be prompted to enable network in [[Anaconda/Network#loader | loader UI]] (when fetching kickstart or [[Anaconda/Updates | updates image]] over network), or in [[Anaconda/Network#text | text mode UI]] and [[Anaconda/Network#gui | GUI]] (when setting up network storage (iscsi, fcoe) or network repository). Additional devices can be activated only in GUI, using '''NetworkManager Connection Editor''' ('''nm-c-e''') by checking ''Connect Automatically''.
* Network '''''enablement''''' for installer - configure and activate one device to be used during installation. It can be configured using [[Anaconda/Network#boot | boot parameters]], or [[Anaconda/Network#kickstart | kickstart]], or if needed user can be prompted to enable network in [[Anaconda/Network#loader | loader UI]] (when fetching kickstart or [[Anaconda/Updates | updates image]] over network), or in [[Anaconda/Network#text | text mode UI]] and [[Anaconda/Network#gui | GUI]] (when setting up network storage (iscsi, fcoe) or network repository). Additional devices can be activated only in GUI, using '''NetworkManager Connection Editor''' ('''nm-c-e''') by checking ''Connect Automatically''
** There is [[Anaconda/Network#ksactivate | a bug]] requiring an option of activation of additional devices in kickstart.
** There is [[Anaconda/Network#ksactivate | a bug]] requiring an option of activation of additional devices in kickstart.
** Once the device is activated, it can't be reactivated with changed configuration (e.g. static configuration with fixed nameserver, see [https://bugzilla.redhat.com/show_bug.cgi?id=504983 bug 504983]). I want to offer this possibility in [[Anaconda/Network#gui | GUI]]  which requires option to activate/deactivate a device on demand (see [[Anaconda/Network/#nmapplet |device activation]]).
** Once the device is activated, it can't be reactivated with changed configuration (e.g. static configuration with fixed nameserver, see [https://bugzilla.redhat.com/show_bug.cgi?id=504983 bug 504983]). I want to offer this possibility in [[Anaconda/Network#gui | GUI]]  which requires option to activate/disconnect a device on demand (see [[Anaconda/Network#nmapplet |device activation]]).
* Target system network '''''configuration'''''. Can be done with kickstart or in [[Anaconda/Network#gui | GUI]] using '''nm-c-e'''. Undesirably, checking ''Connect Automatically'' will activate the device after the configuration is applied (see [[Anaconda/Network#onboot| ONBOOT side-effect]]). We are not aware of any problems caused by this side effect which is invisible to the user ('''Anaconda''' doesn't wait for '''NetworkManager''' activating the device), but I can imagine there might be some lurking.
* Target system network '''''configuration'''''. Can be done with kickstart or in [[Anaconda/Network#gui | GUI]] using '''nm-c-e'''. Undesirably, checking ''Connect Automatically'' will activate the device after the configuration is applied (see [[Anaconda/Network#onboot| ONBOOT side-effect]]). We are not aware of any problems caused by this side effect which is invisible to the user ('''Anaconda''' doesn't wait for '''NetworkManager''' activating the device), but I can imagine there might be some lurking.


Line 24: Line 24:
{{Anchor|loader}}
{{Anchor|loader}}
==== loader text UI ====
==== loader text UI ====
Serves for selection and configuration of a network device that will be enabled in loader (which happens if kickstart or updates image should be fetched from network or in case of network installation). It will not be run if the information is provided via [[Anaconda/Network#boot | boot options]] or [[Anaconda/Network#kickstart]] unless required by boot option '''asknetwork'''. Configuration options of this UI are a subset of '''nm-c-e''' which is used in [[Anaconda/Network/GUI | GUI]].
Serves for selection and configuration of a network device that will be enabled in loader (which happens if kickstart or updates image should be fetched from network or in case of network installation). It will not be run if the information is provided via [[Anaconda/Network#boot | boot options]] or [[Anaconda/Network#kickstart]] unless required by boot option '''asknetwork'''. Configuration options of this UI are a subset of '''nm-c-e''' which is used in [[Anaconda/Network#GUI | GUI]].


Once the device is successfully activated, there is no possibility to change its configuration in loader UI (see [https://bugzilla.redhat.com/show_bug.cgi?id=504983 bug 504983]).
Once the device is successfully activated, there is no possibility to change its configuration in loader UI (see [https://bugzilla.redhat.com/show_bug.cgi?id=504983 bug 504983]).
Line 53: Line 53:


{{Anchor|ksactivate}}
{{Anchor|ksactivate}}
* [https://bugzilla.redhat.com/show_bug.cgi?id=638131 bug 638181] Here is a patch adding kickstart '''network --activate''' option: [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00042.html anaconda part][https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00043.html pykickstart part]
* [https://bugzilla.redhat.com/show_bug.cgi?id=638131 bug 638181] Here is a patch adding kickstart '''network --activate''' option: [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00042.html anaconda part][https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00043.html pykickstart part] - this doesn't work, we need to activate the device already in loader, so I am going to add '''--donotactivate''' option instead, and patch loader. Also '''network --bootproto ibft''' should be added. Now we read settings from firmware in anaconda, but '''NM''' should do it, us only writing <code>BOOTPROTO=ibft</code> to <code>ifcfg</code> (see [https://bugzilla.redhat.com/show_bug.cgi?id=479824 bug 479824] which seems to be fixed in Fedora, I have to check).


{{Anchor|nmapplet}}
{{Anchor|nmapplet}}
* Configuration of successfully activated device in installer environment can't be changed. There is no way to disconnect the device and activate it so that changed configuration could be applied (except for workaround by [[Anaconda/Network#configfiles | editing configuration files]]). In desktop, this id done with '''NetworkManager Applet''' which offers also selection of access points for wireless connection. I proposed two solutions for [[Anaconda/Network#gui | GUI]] on anaconda-devel-list:
* Configuration of successfully activated device in installer environment can't be changed. There is no way to disconnect the device and activate it so that changed configuration could be applied (except for workaround by [[Anaconda/Network#configfiles | editing configuration files]]). In desktop, this id done with '''NetworkManager Applet''' which offers also selection of access points for wireless connection. I proposed two solutions for [[Anaconda/Network#gui | GUI]] on anaconda-devel-list:
** [[http://www.redhat.com/archives/anaconda-devel-list/2010-October/msg00201.html | Our own UI]], which has some functional limits.
** [[http://www.redhat.com/archives/anaconda-devel-list/2010-October/msg00201.html| Our own UI]], which has some functional limits.
** [[http://www.redhat.com/archives/anaconda-devel-list/2010-November/msg00144.html| Integration of '''NetworkManager Applet''']] requiring use of panel (systray) which changes UI significantly.
** [[http://www.redhat.com/archives/anaconda-devel-list/2010-November/msg00144.html| Integration of '''NetworkManager Applet''']] requiring use of panel (systray) which changes UI significantly.
Related bug: [https://bugzilla.redhat.com/show_bug.cgi?id=504983 504983]
Related bug: [https://bugzilla.redhat.com/show_bug.cgi?id=504983 504983]

Revision as of 10:14, 16 December 2010

incomplete

Network enablement and configuration

Two tasks:

  • Network enablement for installer - configure and activate one device to be used during installation. It can be configured using boot parameters, or kickstart, or if needed user can be prompted to enable network in loader UI (when fetching kickstart or updates image over network), or in text mode UI and GUI (when setting up network storage (iscsi, fcoe) or network repository). Additional devices can be activated only in GUI, using NetworkManager Connection Editor (nm-c-e) by checking Connect Automatically
    • There is a bug requiring an option of activation of additional devices in kickstart.
    • Once the device is activated, it can't be reactivated with changed configuration (e.g. static configuration with fixed nameserver, see bug 504983). I want to offer this possibility in GUI which requires option to activate/disconnect a device on demand (see device activation).
  • Target system network configuration. Can be done with kickstart or in GUI using nm-c-e. Undesirably, checking Connect Automatically will activate the device after the configuration is applied (see ONBOOT side-effect). We are not aware of any problems caused by this side effect which is invisible to the user (Anaconda doesn't wait for NetworkManager activating the device), but I can imagine there might be some lurking.

As you can see, configuration of installer environment and target system is not well separated. It is because in GUI we use nm-c-e for enablement, and we have to use same configuration files for installer and target system configuration.

On Live CD, network is configured in Live CD environment using NetworkManager Applet on panel.

Modes of configuration

boot options

These anaconda boot options can be used to enable network in loader (e.g. for getting kickstart, updates image, or for network installation): asknetwork, dhcpclass, dhcptimeout, dns, essid, ethtool, gateway, ip, ipv6, ksdevice, linksleep, mtu, netmask, nicdelay, noipv4, noipv6, wepkey

kickstart

Kickstart network command can be used both to enable and configure devices. If a device should be enabled in loader (e.g. for getting updates image, or for network installation), first network command will be used to select and configure the device. Other network commands configure devices for target system. This bug should allow activation of these devices at the beginning of stage 2 (post loader) using --activate option.

loader text UI

Serves for selection and configuration of a network device that will be enabled in loader (which happens if kickstart or updates image should be fetched from network or in case of network installation). It will not be run if the information is provided via boot options or Anaconda/Network#kickstart unless required by boot option asknetwork. Configuration options of this UI are a subset of nm-c-e which is used in GUI.

Once the device is successfully activated, there is no possibility to change its configuration in loader UI (see bug 504983).

TODO screenshots

TODO explain ipv6 options

TODO ipv4 succ and ipv6 fail

text mode UI

TODO

anaconda GUI

TODO

editing configuration files

Anaconda communictes with NetworkManager mostly with ifcfg files (nm-c-e stores its configuration there too). It can be handy to edit them directly for debugging or as workaround solution. Files can be edited using shell in virtual terminal tty2 ([Ctrl][Alt][F2]). Their location is /etc/sysconfig/netwrok-scripts/ifcfg-<device name>. The configuration will be applied in installer after the device is disconnected and reactivated. The device is disconnected if its ifcfg file is removed. It will be activated if an ifcfg file will be copied back to its location with ONBOOT=yes set. So configuration of active device for installer environment can be changed this way:

mv /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp
vi /tmp/ifcfg-eth0
mv /tmp/ifcfg-eth0 /etc/sysconfig/network-scripts

At the end of the installation, ifcfg files are copied to target system tree to directory /mnt/sysimage/etc/sysconfig/network-scripts.

Bugs and issues

  • bug 638181 Here is a patch adding kickstart network --activate option: anaconda partpykickstart part - this doesn't work, we need to activate the device already in loader, so I am going to add --donotactivate option instead, and patch loader. Also network --bootproto ibft should be added. Now we read settings from firmware in anaconda, but NM should do it, us only writing BOOTPROTO=ibft to ifcfg (see bug 479824 which seems to be fixed in Fedora, I have to check).

  • Configuration of successfully activated device in installer environment can't be changed. There is no way to disconnect the device and activate it so that changed configuration could be applied (except for workaround by editing configuration files). In desktop, this id done with NetworkManager Applet which offers also selection of access points for wireless connection. I proposed two solutions for GUI on anaconda-devel-list:

Related bug: 504983

  • TODO ipv6 fail + ipv4 success
  • TODO stateless dhcp6
  • TODO onboot -> activate
  • TODO network storage - iSCSI (a bug)
  • TODO default of network --device (update documentation)
  • TODO documentation update

Wireless

TODO