==== Raspbian installation ====
{{:interfaces:ldrheaven.jpg?200|MCP3008 LDR}}
=== Download ===
Visit [[https://www.raspberrypi.org/downloads/raspbian/]] and locate the latest download image.
Fetch the image.
wget https://downloads.raspberrypi.org/raspbian_lite_latest
Verify the file with the hash on the download page.
sha1sum 2018-10-09-raspbian-stretch-lite.zip
fe99e1c4e64c44a67468889e64d732f601968e87 2018-10-09-raspbian-stretch-lite.zip
Decompress.
unzip 2018-10-09-raspbian-stretch-lite.zip
=== Install ===
Place a microsd card in your desktop system and write the image.
In this instance, the microsd card is detected as sdd.
sudo dd if=2018-10-09-raspbian-stretch-lite.img of=/dev/sdd bs=4M
Initiate a rescan of the device.
su root -c 'echo 1 > /sys/block/sdd/device/rescan'
=== Edit config ===
Mount the RPi boot partition and make some changes.
su -m
mount /dev/sdd1 /mnt
vi /mnt/config.txt
Some example options for config.txt.
sdtv_mode=2
#dtparam=audio=on
gpu_mem=16
dtparam=spi=on
dtoverlay=spi-bcm2835
#dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtparam=i2c_arm=on
dtparam=i2c_vc=on
#dtoverlay=w1-gpio,gpiopin=4
#dtoverlay=dht11,gpiopin=17
Enable network login for default user.
touch /mnt/ssh
Un mount the boot partition.
umount /mnt
=== Edit networking ===
Mount the system partition and set up networking. This
will allow us to login after the Pi boots and finalise the
set up.
mount /dev/sdd2 /mnt
vi /mnt/etc/network/interfaces
vi /mnt/etc/resolv.conf
Protect resolv.conf from errant applications which may wish
to break it.
chattr +i /mnt/etc/resolv.conf
Un mount the system partition.
umount /mnt
=== Boot Pi and login to fix the O/S ===
It will take some time before the Pi is available, be patient.
ssh pi@X.X.X.X
sudo -s
=== Update ===
apt-get update
apt-get dist-upgrade
=== Install sysvinit and restart ===
apt-get install sysvinit-core sysvinit-utils
sync
reboot
=== Remove systemd ===
ssh pi@X.X.X.X
sudo -s
apt-get remove --purge --auto-remove systemd
echo -e 'Package: systemd\nPin: origin ""\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
=== Disable undesired services ===
update-rc.d dhcpcd disable
update-rc.d motd disable
update-rc.d triggerhappy disable
update-rc.d cron disable
update-rc.d dbus disable
update-rc.d dphys-swapfile disable
update-rc.d ntp disable
update-rc.d avahi-daemon disable
update-rc.d bluetooth disable
update-rc.d plymouth disable
update-rc.d paxctld disable
Edit /etc/inittab and disable unnecessary gettys and reboot.
=== Set up swap ===
Because we disabled the useless swap generator, do it by hand.
swapoff /var/swap
dd if=/dev/zero of=/var/swap bs=4M count=512
mkswap /var/swap
echo "/var/swap none swap sw 0 0" >> /etc/fstab
reboot
=== Finish off ===
When we log in now we have a mean and lean linux installation but
no service management. I prefer runit or you may prefer daemontools.
Set up runit/daemontools now as required and you are done.