Powered off Vero 4K, plugged USB drive, powered back on (as per instructions)
Waited for OSMC to install
Unfortunately I ended up at the installer’s configuration screen with no preseeded network settings. After the installation my USB drive contained an “install.log” file with the following relevant lines:
(...)
Thu Jan 1 00:00:16 2015 Preseed file found, will attempt to parse
Thu Jan 1 00:00:16 2015 Found a definition for storage: sd
Thu Jan 1 00:00:16 2015 Flash looks OK
Thu Jan 1 00:01:22 2015 Creating root partition
(...)
Which indicates that the preseed config was actually detected, but only the first definition was taken into account…
Thu Jan 1 00:00:13 2015 Starting OSMC installer
Thu Jan 1 00:00:16 2015 Detecting device we are running on
Thu Jan 1 00:00:16 2015 Mounting boot filesystem
Thu Jan 1 00:00:16 2015 Trying to mount to MNT_BOOT (/mnt/boot)
Thu Jan 1 00:00:16 2015 Using device->boot: /dev/mmcblk1p1 and FS: fat32
Thu Jan 1 00:00:16 2015 Trying to mount to MNT_BOOT (/mnt/boot)
Thu Jan 1 00:00:16 2015 Using device->boot: /dev/sda1 and FS: fat32
Thu Jan 1 00:00:16 2015 Filesystem defined by /mnt/boot/filesystem.tar.xz
Thu Jan 1 00:00:16 2015 Preseed file found, will attempt to parse
Thu Jan 1 00:00:16 2015 Found a definition for storage: sd
Thu Jan 1 00:00:16 2015 Flash looks OK
Thu Jan 1 00:01:22 2015 Creating root partition
Thu Jan 1 00:01:23 2015 Calling fmtpart for partition /dev/vero-nand/root and fstype ext4
Thu Jan 1 00:01:26 2015 Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=2 blocks, Stripe width=1024 blocks
930240 inodes, 3716096 blocks
185804 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3808428032
114 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Thu Jan 1 00:01:26 2015 From a root partition of /dev/vero-nand/root, I have deduced a base device of /dev/vero-nand/roo
Thu Jan 1 00:01:26 2015 Mounting root
Thu Jan 1 00:01:26 2015 Trying to mount to MNT_ROOT (/mnt/root)
Thu Jan 1 00:01:26 2015 Using device->root: /dev/vero-nand/root
Thu Jan 1 00:01:26 2015 Extracting files to root filesystem
Thu Jan 1 00:01:26 2015 Starting extract process ...
Thu Jan 1 00:01:26 2015 Extracting from /mnt/boot/filesystem.tar.xz
Thu Jan 1 00:02:27 2015 Extraction of root filesystem completed
Thu Jan 1 00:02:27 2015 Configuring bootloader
Thu Jan 1 00:02:27 2015 Boot changed. Re-mounting the real /boot
Thu Jan 1 00:02:27 2015 Trying to unmount MNT_BOOT (/mnt/boot)
Thu Jan 1 00:02:27 2015 Using device->boot: /dev/sda1
Thu Jan 1 00:02:27 2015 Could not unmount old boot partition
Thu Jan 1 00:02:27 2015 Trying to mount to MNT_BOOT (/mnt/boot)
Thu Jan 1 00:02:27 2015 Using device->boot: /dev/sda1 and FS: fat32
Thu Jan 1 00:02:27 2015 Could not mount new boot partition
Thu Jan 1 00:02:27 2015 Configuring bootloader: moving /boot to appropriate boot partition
Thu Jan 1 00:02:28 2015 Vero 4K family: bootloader to be flashed is uboot-vero4k.bin
Thu Jan 1 00:02:28 2015 Configuring boot cmdline
Thu Jan 1 00:02:28 2015 Configuring /etc/fstab
Thu Jan 1 00:02:28 2015 Successful installation. Dumping log and rebooting system
I’ve checked and the preseeder is being detected in your scenario and it’s parsed.
It should then be copied to /boot/preseed.cfg on your actual installation.
Can you check if this is the case?
The WiFi set up is parsed on the next boot of the actual OS, which is why you don’t see further verbose messages about this.
I just checked /boot/preseed.cfg and the definitions are indeed there.
However I had 1) already configured the network settings through the GUI installer previously 2) run the preseed command through SSH, just to see what would happen (it apparently hangs and I had to terminate).
Should I try the whole process again from the start to be sure?
I run the preseed command only after preseed.cfg failed to pre-configure the network settings though so I don’t think that was the problem. I will try re-installing again and then check /boot/preseed.cfg, without running the preseed command, and get back to you.
By the way if you are planning to change the preseeding process, please consider adding other non-network preseeding options (e.g. timezone, hostname, etc) so that a completely headless installation is possible. That would be really helpful.
Alright so I tried again and I can confirm it’s not working, for whatever reason…
I followed the same process as before, but I added one more definition into preseed.cfg, namely globe/locale which I accidentally found by looking at the source code
OSMC was installed and then I ended up again with no pre-configured network connectivity
I completed the installation, SSH’ed into the device and looked for /boot/preseed.cfg, which was not there this time
The file install.log was identical with the one from my previous attempt but with the addition of globalisation definition
(…)
Sun Jan 1 00:00:16 2017 Preseed file found, will attempt to parse
Sun Jan 1 00:00:16 2017 Found a definition for globalisation: en_US
Sun Jan 1 00:00:16 2017 Could not load translation
Sun Jan 1 00:00:16 2017 Found a definition for storage: sd
Sun Jan 1 00:00:16 2017 Flash looks OK
Sun Jan 1 00:01:20 2017 Creating root partition
(…)
Then I run the preseed command, again just to see what will happen, which completed with no output
sudo journalctl | grep preseed gave the following: Oct 25 21:53:48 osmc preseed[3315]: No preseed file found
I have no idea why /boot/preseed.cfg was not found this time. The only difference with my previous attempt was the addition of the locale definition, which was actually found and parsed, although unsuccessfully probably because I provided a wrong value.
Other than that everything is correct so I give up and I’ll be happy to wait for any future changes in the preseeding process.
I suppose there could be a lot customizations possible, but here is the list of the bare minimum:
Network settings (+ a hostname option)
Language
Timezone
Time format
SSH
Look+Feel
A boolean flag for having read the License
A boolean flag for having read the Warranty
The above are actually all the options the GUI installer needs to complete (minus the time format), so if there was a way to preseed them it would become possible to make a completely headless installation without any user interaction.
Wait… do you mean that I should just skip the network configuration on the first boot, complete the installation process by going through the remaining screens, then reboot the device and wait for the network settings in preseed.cfg to be picked up??
I’m not sure what you mean… I did generate a preseed file (the one I put at the root of my USB drive, as I outlined in my post). As for the preseeding daemon, are you refering to the preseed command?
Connecting via Ethernet, then SSH’ing into the device and manually executing any command so that preseed.cfg gets picked up defeats the whole purpose of preseeding anyway.