Difference between revisions of "Pidora-Headless-Mode"

From CDOT Wiki
Jump to: navigation, search
(What is headless mode?)
(Enabling headless mode on Pidora)
Line 10: Line 10:
 
{{Admon/important| Security Warning! | If you are going to use headless mode it is critical that you change the root password as soon as possible, because Pidora is set with a default root password that is publicized.}}
 
{{Admon/important| Security Warning! | If you are going to use headless mode it is critical that you change the root password as soon as possible, because Pidora is set with a default root password that is publicized.}}
  
== Enabling headless mode on Pidora ==
+
== Enabling Headless Mode on Pidora ==
 +
 
 +
To enable Headless Mode, a file should be created in the boot file system. This file should be named "headless"(the first file found that starts with "headless" will be used).
 +
 
 +
 
 +
{{Admon/important| Note | This file should be created ''before'' you boot your Raspberry Pi, for Headless Mode to take effect and enable the correct mode of networking.}}
  
To enable headless mode, you will need to create a file named "headless" in the boot filesystem on your SD card ''before'' you insert the card into your Pi.
 
  
 
'''On Linux''':
 
'''On Linux''':
Line 22: Line 26:
 
'''On Windows:'''
 
'''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
+
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
  
 
{{Admon/important| Note | If you are using a Windows OS you will need to remove the .txt file extension on the headless file.
 
{{Admon/important| Note | If you are using a Windows OS you will need to remove the .txt file extension on the headless file.
 
[http://www.ehow.com/how_6394953_create-file-extension.html More information on removing file extensions on eHow]}}
 
[http://www.ehow.com/how_6394953_create-file-extension.html More information on removing file extensions on eHow]}}
  
There are two possible configurations for headless-mode "DHCP" configuration and "Static" configuration.
+
There are two possible configurations for Headless Mode "DHCP" configuration and "Static" configuration.
  
 
=== DHCP Configuration ===
 
=== DHCP Configuration ===
  
 
If you would like to obtain an ip address dynamically via DHCP, leave the "headless" file empty.
 
If you would like to obtain an ip address dynamically via DHCP, leave the "headless" file empty.
 +
 +
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 ===
 
=== Static Configuration ===
  
If you would like to specify a specific IP address you will need to include the IP Address, Netmask and Gateway, place the following information in the "headless" file:
+
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 ===
  
=== Sample headless file Static Configuration ===
+
Static Configuration(without rootfs resizing or swap creation):
There have been two added options to the headless file:
+
IPADDR=192.168.1.105
*'''RESIZE''' this will initiate a rootfs-resize if you want to use the full amount of space on the SD card.
+
NETMASK=255.255.255.0
*'''SWAP''' sets the amount of swap you would like to use.
+
GATEWAY=192.168.1.1
  
 +
Static Configuration(with rootfs resizing and swap creation):
 
  IPADDR=192.168.1.105
 
  IPADDR=192.168.1.105
 
  NETMASK=255.255.255.0
 
  NETMASK=255.255.255.0

Revision as of 13:49, 28 April 2014

Pidora-horizontal.png
Important.png
Notice
Headless mode is currently a experimental feature, updates to headless mode and current issues can be found below

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.


Important.png
Security Warning!
If you are going to use headless mode it is critical that you change the root password as soon as possible, because Pidora is set with a default root password that is publicized.

Enabling Headless Mode on Pidora

To enable Headless Mode, a file should be created in the boot file system. This file should be named "headless"(the first file found that starts with "headless" will be used).


Important.png
Note
This file should be created before you boot your Raspberry Pi, for Headless Mode to take effect and enable the correct mode of networking.


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

Important.png
Note
If you are using a Windows OS you will need to remove the .txt file extension on the headless file. More information on removing file extensions on eHow

There are two possible configurations for Headless Mode "DHCP" configuration and "Static" configuration.

DHCP Configuration

If you would like to obtain an ip address dynamically via DHCP, leave the "headless" file empty.

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