Typo
[linux_from_scratch_hints.git] / OLD / nameif.txt
blobaf42b39b74e836ac75e6b904f472e83e043f2a48
1 TITLE:          Naming Network Interfaces
2 LFS VERSION:    any
3 AUTHOR:         Richard A Downing FBCS <geek109@yahoo.co.uk>
5 SYNOPSIS:
6     This hint describes how to specify your own names for Network
7     Interface Cards instead of eth0, eth1, etc...
8     
9 HINT:
11 INTRODUCTION
12 ============
14 When the Linux kernel boots, it assigns names (eth0 etc..) to
15 network devices in the order that it finds them.  This means that two
16 different versions of the kernel, say 2.4 and 2.6, might find the network
17 interfaces in a diffent order.  When this happens you might have to
18 swap all the cables to get your connections to work the way you want.
19 The proper way to do this is to name the interfaces with the nameif
20 command (part of the net-tools).
22 TAKE CARE: All the commands given in this hint need root priviledges.
24 MACTAB AND NAMEIF
25 =================
27 The nameif command can be driven from the command line, if you want to
28 do that, then read it's man page.  Another way is to set up a
29 /etc/mactab file to relate the MAC  addresses of the network cards to
30 the names you want.
32 Every NIC interface in the (known) universe has a unique MAC address
33 (Media Access Control address), which is usually expressed as a 12 digit
34 hexadecimal number, colon-dotted in pairs for readability. 
36 You will need to find the MAC addresses of each of your network cards.
37 The easiest way to find these (if you didn't make a note of the MAC
38 label when you installed the card) is to use ifconfig, each interface
39 that is configured will report its MAC address.  e.g:
41 $ /sbin/ifconfig
42 eth0      Link encap:Ethernet  HWaddr 00:60:97:52:9A:94  
43           inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
44           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
45           RX packets:6043 errors:0 dropped:0 overruns:0 frame:0
46           TX packets:6039 errors:0 dropped:0 overruns:0 carrier:0
47           collisions:0 txqueuelen:100 
48           RX bytes:1439604 (1.3 Mb)  TX bytes:509857 (497.9 Kb)
49           Interrupt:10 Base address:0xc800 
51 lo        Link encap:Local Loopback  
52           inet addr:127.0.0.1  Mask:255.0.0.0
53           UP LOOPBACK RUNNING  MTU:16436  Metric:1
54           RX packets:7218 errors:0 dropped:0 overruns:0 frame:0
55           TX packets:7218 errors:0 dropped:0 overruns:0 carrier:0
56           collisions:0 txqueuelen:0 
57           RX bytes:1085452 (1.0 Mb)  TX bytes:1085452 (1.0 Mb)
59 Take note of the HWaddr, this the NIC's MAC address.
61 Now you can decide what you would like the NIC to be called, and set
62 up your /etc/mactab, here's mine as an example:
64 # Begin /etc/mactab
65 # This file relates MAC addresses to interface names.
66 # We need this so that we can force the name we want
67 # even if the kernel finds the interfaces in the
68 # wrong order.
70 # eth0 under 2.4, eth1 under 2.6
71 beannet 00:60:97:52:9A:94
73 # eth1 under 2.4, eth0 under 2.6
74 sparenet 00:A0:C9:43:8F:77
76 # End /etc/mactab
78 If you run nameif (without parameters) now you will probably get an
79 error message, since nameif must be run when the interfaces are down.
81 $ nameif
82 cannot change name of eth0 to beannet: Device or resource busy
84 so, first take the interface down, then rename it:
86 $ ifconfig eth0 down
87 $ nameif
88 $ ifconfig eth0 up
89 $ ifconfig
90 beannet   Link encap:Ethernet  HWaddr 00:60:97:52:9A:94  
91           inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
92           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
93           RX packets:6617 errors:0 dropped:0 overruns:0 frame:0
94           TX packets:6596 errors:0 dropped:0 overruns:0 carrier:0
95           collisions:0 txqueuelen:100 
96           RX bytes:1748349 (1.6 Mb)  TX bytes:598513 (584.4 Kb)
97           Interrupt:10 Base address:0xc800 
99 lo        Link encap:Local Loopback  
100           inet addr:127.0.0.1  Mask:255.0.0.0
101           UP LOOPBACK RUNNING  MTU:16436  Metric:1
102           RX packets:9097 errors:0 dropped:0 overruns:0 frame:0
103           TX packets:9097 errors:0 dropped:0 overruns:0 carrier:0
104           collisions:0 txqueuelen:0 
105           RX bytes:1340480 (1.2 Mb)  TX bytes:1340480 (1.2 Mb)
108 LFS BOOTSCRIPT CHANGES
109 ======================
111 The following assumes normal LFS bootscripts.
113 As we've seen nameif needs to be run early in the boot cycle, before
114 the network interfaces are brought up.  This means adding it to
115 /etc/rc.d/init.d/network
117 Edit the start of the file as follows:
119 #!/bin/bash
120 # Begin $rc_base/init.d/network - Network Control Script
122 # Based on ethnet script from LFS-3.1 and earlier.
123 # Rewritten by Gerard Beekmans  - gerard@linuxfromscratch.org
125 source /etc/sysconfig/rc
126 source $rc_functions
127 source /etc/sysconfig/network
129 case "$1" in
130     start)
131          if [ -e /etc/mactab ]
132          then
133          # if /etc/mactab exists then set up the named interfaces
134              nameif
135          fi
136          for file in $(grep -il "ONBOOT=yes" $network_devices/ifconfig.*)
137          do
138 ......
140 This ensures that nameif is run with /etc/mactab, if that file exists.
142 Now go to /etc/sysconfig and change the name(s) of the interface(s) wherever
143 it(they) occur(s).  I made the following changes:
145 1) edit /etc/sysconfig/network to specify the renamed GATEWAY_IF.
146 2) rename /etc/network-devices/ifconfig.eth0 to ifconfig.yourname and
147    edit it so that DEVICE=yourname.
149 If you use the Beyond Linux From Scratch instructions to use DHCP,
150 then you will need to substitute your new NIC names in the scripts and
151 filenames in the appropriate places.
154 COMMENTS AND CORRECTIONS
155 ========================
157 To the author please.  I'm indebited to Kevin Fleming for pointing the nameif
158 command out to me.