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
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'
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
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
It will take some time before the Pi is available, be patient.
ssh pi@X.X.X.X sudo -s
apt-get update apt-get dist-upgrade
apt-get install sysvinit-core sysvinit-utils sync reboot
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
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.
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
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.