Pidora-Headless-Mode
Contents
What is headless mode?
Headless mode is a system configuration which enables access to a raspberry pi, through ssh on a network, without the use of a monitor or keyboard plugged into the raspberry pi. This mode does require another computer to ssh into the raspberry pi. When this feature is enabled, firstboot is bypassed and disabled.
Enabling Headless Mode on Pidora
To enable Headless Mode, create a file named "headless" inside the boot file system on the Raspberry Pi's SD card. Create this "headless" file before you boot your Raspberry Pi.
On Linux:
Tutorial Video: http://youtu.be/ALUAmw6Mz_o
Insert the SD card into your system, and create a file named "headless" in the filesystem labelled "boot".
On Windows:
Insert the SD card into your system. Only the boot filesystem will be made available, because Windows will not be able to read other partitions on the card. Create a file named "headless" on that partition
There are two possible configurations for Headless Mode "DHCP" configuration and "Static" configuration.
DHCP Configuration
If you would like to configure the Raspberry Pi to use DHCP, leave the "headless" file empty, and the Raspberry Pi should be assigned an IP Address dynamically.
Static Configuration
If you would like to set a static, non-changing, IP Address on your Raspberry Pi, you will need to modify the "headless" file, adding an IP Address, Gateway, and Netmask, to the file for the configurations to work properly(see samples configs below).
Static Configuration: Required parameters for a Headless Mode static configuration.
IPADDR=[IP Address of Raspberry Pi] NETMASK=[Mask to define network subnet] GATEWAY=[IP Address of router/gateway]
Optional Configuration: If "RESIZE" is in the "headless" file, the root filesystem will be expanded to the maximum size of the sd card via the service rootfs-resize. If "SWAP"(requires the value in megabytes) exists in the "headless" file, a swap file will be created of the specified size, and then activated.
RESIZE SWAP=[Size of swap in megabytes]
Sample Headless Mode Static Configuration
Static Configuration(without rootfs resizing or swap creation):
IPADDR=192.168.1.105 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
Static Configuration(with rootfs resizing and swap creation):
IPADDR=192.168.1.105 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 RESIZE SWAP=512
Headless Mode is enable with DHCP -- How do I find out my ip-address?
After you have enabled headless mode with either the DHCP configuration or Static IP configuration, the ip address that has been assigned to Raspberry Pi will be played through the speakers 2 minutes after you have powered the Raspberry Pi, and 30 seconds later it will also flash your ip address through Pi's OK/ACT LED.
More information about ip-read and ip-flash
Headless Mode Script Update
Initially there were a few issues with dchp and headless mode since our release the headless script has been updated. It has not been officially added to the updates repo yet but, if you are interested in trying this mode out now you can copy and replace the old headon script with the updated one located at /usr/bin/headon
#!/bin/bash headless=`ls /boot/headless* 2> /dev/null | head -n 1` echo "Headless Mode Enabled" if [ -e "$headless" ] then systemctl enable sshd.service systemctl start sshd.service systemctl stop firstboot-graphical.service systemctl disable firstboot-graphical.service headtext=`grep '[0-9]' "$headless"` if [ "$headtext" != "" ] then ip_address=$(sed -n 's/IPADDR=//p' $headless) ip_netmask=$(sed -n 's/NETMASK=//p' $headless) ip_gateway=$(sed -n 's/GATEWAY=//p' $headless) swap_size=$(sed -n 's/SWAP=//p' $headless) cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 IPADDR=$ip_address NETMASK=$ip_netmask GATEWAY=$ip_gateway BOOTPROTO=static ONBOOT=yes NM_CONTROLLED=yes EOF systemctl restart NetworkManager.service else cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes NM_CONTROLLED=yes EOF fi else systemctl stop headless-mode.service systemctl disable headless-mode.service fi #Check headless file for resize option #Check headless file for resize and swap option grep -iE 'resize|swap' $headless if [ $? -eq 0 -a ! -f /.resized ] then touch /.rootfs-repartition touch /.resized echo $swap | grep -o '[0-9]*' > /.swap reboot else #resized already remove resize flag if it exists rm -f /.rootfs-repartition rm -f /.swap fi #read ip address systemctl start ip-read.service #flashing ip address systemctl start ip-flash.service
SSH to the headless Pi
ssh root@{ip_address} Default user: root/raspberrypi