Remote touchless install with a static IP?

Holland, Jake jholland at akamai.com
Fri Oct 2 01:20:13 CEST 2020


Hi Thomas,

Thanks for responding!

On 10/1/20, 7:13 AM, "Thomas Lange" <lange at cs.uni-koeln.de> wrote:
> you can build a FAI CD (or USB stick) which does not need any internet
> connection. Have you already tried the FAIme service at
> https://fai-project.org/FAIme/

Yes, I got an image from there (nice feature to let me include an
ssh key, btw) and picked the "reboot computer after installation"
option.

I tried that iso as the CD on a local vm as a sort of "getting started"
step, but it seemed to go into an infinite loop of installing.  I tried
ejecting the CD, but it didn't end with a system I could boot, so I'm
not sure what I was doing wrong.

But I figured I'd go ahead and try to see if I could launch that from
local hard drive instead of as a CD.

> Have a look at the dracut.cmdline manual
> https://manpages.debian.org/testing/dracut-core/dracut.cmdline.7.en.html

Thanks for that reference, very helpful.

After a few tries, this menuentry gets me to where in my vm it looks like
it's trying to do something with the .iso I've put into the hard drive:

menuentry "jake fai"  --class gnu-linux --id jake-fai4 {
    loopback loop (hd1,gpt2)/faime-PR5UDQU6.iso
    search --set=root --file /FAI-CD
    ifname=nat0:08:00:27:b0:02:bf
    ifname=hst1:08:00:27:b0:02:bf
    linux   /boot/vmlinuz FAI_FLAGS="menu,verbose,createvt" FAI_ACTION=install FAI_CONFIG_SRC=file:///var/lib/fai/config rd.live.image rd.debug root=live:CDLABEL=FAI_CD ip=10.0.2.15::10.0.2.2:255.255.255.0::nat0:off:8.8.8.8:8.8.4.4 ip=192.168.56.90:::255.255.255.0::hst1:off quiet
    initrd  /boot/initrd.img
}

But then it fails with:
dracut Warning: /dev/disk/by-label/FAI_CD does not exist
dracut Warning: /dev/root does not exist

That comes after a minute or 2 of polling with this looking like the
problem check:
//lib/dracut/hooks/initqueue/finished/devexists-x2fdevx2fdiskx2fFAI_CD.sh at 1(source): '[' -e /dev/disk/by-label/FAI_CD ']

As a guess after looking through options, I tried adding this:

rd.live.overlay=/dev/sdb2:faime-PR5UDQU6.iso

But no joy.  I tried a few variations, but I feel like it's stabbing
in the dark a bit.  This seems really close to what I'm aiming for, but
I don't quite follow how to express what I have.

Once I'm in the dracut shell after hitting that error, I can do:

mkdir mnt
mkdir mnt/disk
mkdir mnt/iso
mount -t ext4 /dev/sdb2 /mnt/disk
mount /mnt/disk/faime-PR5UDQU5.io /mnt/iso

And then I have /mnt/iso/FAI-XD and /mnt/iso/LiveOS/squashfs.img and
such.

So I feel like this is on the right track if I could find out the way
to pass in the right context.

Thanks for your help on this, and if you have a pointer to the right
way to express this root location, I'd be very grateful.

Best regards,
Jake


PS:
I could perhaps use the root=live:https://example.org/something.img.
is that supposed to be the squashfs.img inside the iso's LiveOS/, or
is it supposed to be the ext3.img inside the squashfs.img's LiveOS/?  But
it seems a bit silly when the live iso is already on the local disk...


PPS:
In case it's helpful, I put the .iso into /dev/sdb2 with these
commands (with the partition table pulled from sfdisk -d on /dev/sda
and then tweaked by removing uuids.)

cat > sfdisk_sdb_new.in <<EOF
label: gpt
device: /dev/sdb
unit: sectors
first-lba: 34
last-lba: 20971486

/dev/sdb1 : start=        2048, size=        2048, type=21686148-6449-6E6F-744E-656564454649
/dev/sdb2 : start=        4096, size=     2097152, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4
/dev/sdb3 : start=     2101248, size=    18868224, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4
EOF
sudo sfdisk /dev/sdb < sfdisk_sdb_new.in
sudo mke2fs -t ext4 /dev/sdb2
sudo mount -t ext4 /dev/sdb2 /mnt
sudo cp faime-PR5UDQU6.iso /mnt
sudo umount /mnt

(Then it's just append my menuentry text to /etc/grub.d/40_custom,
GRUB_DEFAULT=jake-fai4 in /etc/default/grub, and update-grub.)




More information about the linux-fai mailing list