How to change MAC address while installing Lenny

(I’m reposting this from my other, more generic blog.)

It’s easy enough to change your network adapter’s MAC address once you have a Debian/Ubuntu system installed, but I needed to do this from within the Debian installer (Lenny beta 2), and it took me a while to figure out how. So I’m making a note of it for my own future reference, and maybe someone googling for the phrases I initially did will find this helpful.

So here’s the problem: my NIC’s default MAC address is (say) 01:02:03:04:05:06, and for one reason or another, I need it to be 06:05:04:03:02:01 instead. Furthermore, I need this change to be in effect while I’m inside Lenny’s installer, so ifconfig is not available. Here’s how I did it:

  1. From the installer’s boot menu, select Advanced options, and Expert install.
  2. Work your way down the steps as needed, starting from the top, until you’ve gone through Detect network hardware. Instead of the next one (Configure the network), pick Execute a shell from further down the menu.
  3. In the shell you can check your network interface status with
    # ip link show eth0

    You might use eth1 or some other port instead of eth0, but I haven’t done this with anything other than the one NIC I had in the setup, and so haven’t used anything besides eth0.

    In my case, entering the command gives the following output:

    2: eth0:  mtu 1500 qdisc noop qlen 1000
        link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff
  4. Next, the spell you’ve been waiting for. Let’s change that MAC address!
    # ip link set eth0 addr 06:05:04:03:02:01

    If all goes well, ip won’t say anything. Re-run the ‘show‘ command listed in the previous point to see that it actually worked.

  5. Type exit to return to the installer.
  6. Now you pick up from Configure the network, and proceed installing from there.

One last point: the changed MAC address won’t survive the reboot finalizing the installation, so if you want to make it permanent, you’ll want to set it after the first boot into your new system, by using the method I linked to in the beginning (editing /etc/network/interfaces). Or you could to do it from the installer, using nano (in busybox).