User Tools

Site Tools


pi:raspbian

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pi:raspbian [2020-05-18 13:24] – raspi-config steps gabrielpi:raspbian [2020-05-19 09:39] (current) – [Raspbian] updating overview gabriel
Line 1: Line 1:
 ====== Raspbian ====== ====== Raspbian ======
  
-This page documents my local Raspberry Pi config for a Raspberry Pi 3 running Raspbian.  This is config is based on Raspian Buster Lite released on 2020-02-13 by the Raspberry Pi Foundation which can be found [[https://www.raspberrypi.org/downloads/raspbian/|here]].+Documentation for my local Raspberry Pi 3 B+ config.  These notes are based on Raspian Buster Lite released on 2020-02-13 by the Raspberry Pi Foundationwhich can be found [[https://www.raspberrypi.org/downloads/raspbian/|here]].
  
-  * Disable auto resizing of root partition on boot +===== Before first boot =====
-  * Disable quiet boot +
-  * Configure static IP address +
-  * Modify OpenSSH configuration +
-  * Add user+
  
-===== Disable automatic resizing of root partition =====+By default Raspbian attempts to grow the root partition of your system on first boot to fill your entire SD card. To disable this option do the following on the SD card image before first boot.
  
-By default Raspbian attempts to grow the root partition of your system on first boot to fill your entire SD card. +  * Remove custom init script and quiet from ''/boot/cmdline.txt'' before first power on. 
-To disable this option do the following. +  * Remove ''/etc/init.d/resize2fs_once'' script.
- +
-  * Remove custom init script and quiet from /boot/cmdline.txt before first power on. +
-  * Remove /etc/init.d/resize script.+
  
 ===== After first boot ===== ===== After first boot =====
  
 The following steps should be completed after first boot to configure the Pi for remote management. The following steps should be completed after first boot to configure the Pi for remote management.
 +
 +==== Set vim as the default editor ====
 +
 +<code>
 +apt install vim
 +update-alternatives --set editor /usr/bin/vim.basic
 +</code>
 +
 +==== Disble IPv6 ====
 +
 +Add the following to ''/etc/sysctl.d/local.conf'':
 +
 +<code>
 +# disable IPv6
 +net.ipv6.conf.all.disable_ipv6=1
 +</code>
  
 ==== Configure static IP address ==== ==== Configure static IP address ====
  
-Edit /etc/dhcpcd.conf+Edit ''/etc/dhcpcd.conf'' and add the following: 
 + 
 +<code> 
 +# Static eth0 configuration 
 +interface eth0 
 +static ip_address=10.77.3.6/24 
 +static routers=10.77.3.1 
 +static domain_name_servers=10.77.3.4 10.77.3.5 
 +</code> 
 + 
 +Add our local domain to the default search path configured by ''resolvconf''
 + 
 +<code> 
 +echo "search in.quay.net" >> /etc/resolv.conf.tail 
 +</code> 
 + 
 +==== Configure OpenSSHD on boot====
  
-==== Set OpenSSH to start on first boot ====+Set to run on boot.
  
 <code> <code>
Line 34: Line 59:
 ==== User configuration ==== ==== User configuration ====
  
-Add local user+The following user modifications are made. 
 + 
 +=== local user === 
 + 
 +Add local user:
  
 <code> <code>
Line 42: Line 71:
 </code> </code>
  
-Disable pi user+=== pi === 
 + 
 +Disable pi user:
  
 <code> <code>
Line 48: Line 79:
 </code> </code>
  
-Set root password+=== root === 
 + 
 +Now set root password
 + 
 +=== ansible === 
 + 
 +Add ansible user: 
 + 
 +<code> 
 +groupadd -g 1111 ansible 
 +useradd -u 1111 -c "Ansible control user" -g 1111 -m ansible 
 +usermod -p '*' ansible 
 +</code> 
 + 
 +Configure the following sudo rule for ansible: 
 + 
 +<code> 
 +# Ansible control user 
 +ansible ALL=(ALL) NOPASSWD:ALL 
 +</code> 
 + 
 +Copy SSH keys for Ansible user. 
 + 
 +==== Sudoers config ==== 
 + 
 +Set ''timestamp_timeout=NN'' to more useful timeout value.
  
 ==== Grow root partition ==== ==== Grow root partition ====
  
-Use parted and resize2fs to manually set root filesystem size.+Use ''parted'' and ''resize2fs'' to manually set root filesystem size.
  
 <code> <code>
Line 67: Line 123:
 ==== raspi-config ==== ==== raspi-config ====
  
-Run the raspi-config tool and set the following options.+Run the ''raspi-config'' tool and set the following options:
  
   * **2 Network Options** -> Hostname -> Set hostname   * **2 Network Options** -> Hostname -> Set hostname
Line 81: Line 137:
     * **A3 Memory Split** -> 16     * **A3 Memory Split** -> 16
  
-===== Old: Raspian Jessie Lite instructions =====+==== Additional hardware configuration via config.txt ====
  
-  * Add OpenSSH authorized_keys for root user +These settings involve manual configuration of ''/boot/config.txt'' to disable certain drivers.  See [[https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README|boot overlays README]] for more information
-  * Remove all key types except rsa and ed25519 from sshd_config + 
-  * Remove all default keys and regenerate +=== Disable unneeded networking ===
-    * ''rm *key*'' +
-    * ''ssh-keygen -q -N "" -t rsa -b 8192 -f /etc/ssh/ssh_host_rsa_key'' +
-    * ''ssh-keygen -q -N "" -t ed25519 -f /etc/ssh/ssh_host_ed25519_key'' +
-    * ''service ssh restart'' +
-    * Make ''vi'' the default editor: ''update-alternatives --set editor /usr/bin/vim.tiny'' +
-    * Set static IP address for host by editing ''/etc/dhcpcd.conf'':+
  
 <code> <code>
-See dhcpcd.conf(5) for details. +disable WiFi 
-interface eth0 +dtoverlay=disable-wifi 
-static ip_address=$IP/$MASK + 
-static routers=$ROUTER+# disable Bluetooth 
 +dtoverlay=disable-bt
 </code> </code>
  
-  * Set ''resolvconf'' for a static configuration by editing /etc/resolvconf.conf:+Disable modem service per boot overlays doc:
  
 <code> <code>
-# Configuration for resolvconf(8) +systemctl disable hciuart
-# See resolvconf.conf(5) for details +
- +
-resolv_conf=/etc/resolv.conf +
-# If you run a local name server, you should uncomment the below line and +
-# configure your subscribers configuration files below. +
-search_domains=in.quay.net +
-# BUG WORKAROUND: space separated lists of DNS servers are not currently working +
-name_servers=$NS1 +
-name_servers_append=$NS2 +
- +
-# Mirror the Debian package defaults for the below resolvers +
-# so that resolvconf integrates seemlessly. +
-dnsmasq_resolv=/var/run/dnsmasq/resolv.conf +
-pdnsd_conf=/etc/pdnsd.conf +
-unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf+
 </code> </code>
  
-  * Remove pi default user +=== Disable audio driver ===
-  * Remove pi group +
-  * Add new default user and group +
-    * Add sudoers entry for user +
-    * Set password +
-  * Update ntp config; ''apt-get install ntpdate'' and sync time +
-    * ''time.chu.nrc.ca'' +
-    * ''ntp1.torix.ca'' +
-    * ''tick.umanitoba.ca'' +
-    * ''time.nrc.ca'' +
-    * ''ntp2.torix.ca'' +
-    * ''tock.utoronto.ca'' +
-    * ''ntp3.torix.ca'' +
-    * ''tick.usask.ca'' +
-    * ''time.nist.gov'' +
-  * Set timezone to Toronto: ''sudo ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime'' +
-  * Remove MOTD text ''> /etc/motd'' +
-  * Install git and needrestart+
  
-Raspbian appears to have issues with managing network dependencies during boot.  This script ensures that BIND, dhcpd, and NTP start up correctly after the network interface is properly set up.  It is run via ''/etc/rc.local'' as a background process and depends on fping.+Comment out the audio driver:
  
 <code> <code>
-#!/bin/bash+Enable audio (loads snd_bcm2835) 
 +#dtparam=audio=on 
 +</code>
  
-until fping -qc 3 8.8.8.8 > /dev/null 2>&1; do +==== Configure OpenSSH server ====
-  echo "Waiting for network..." +
-done+
  
-for daemon in isc-dhcp-server bind9; do +Disable all keys except ed25519.
-  echo "Forcing restart of $daemon" +
-  service $daemon restart +
-done+
  
-echo "Forcing restart of ntp+<code> 
-service ntp stop +cat "HostKey /etc/ssh/ssh_host_ed25519_key>> /etc/ssh/sshd_config 
-ntpdate -s 0.ca.pool.ntp.org +rm -fv /etc/ssh/*key* 
-service ntp start+dpkg-reconfigure openssh-server
 </code> </code>
  
-====== Service management under systemd ======+==== Packages ====
  
-  * Add service to systemd init process: ''systemctl enable $SERVICE'' +<code> 
-  * List all services: ''service --status-all''+vim 
 +ntp 
 +isc-dhcp-server 
 +bind9 
 +dnsutils 
 +whois 
 +fping 
 +git 
 +tmux 
 +mksh 
 +zsh 
 +</code>
  
-====== Disable WiFi completely ====== 
  
-Blacklist the driver by creating a file in ''/etc/modprobe.d'' called ''wlan-blacklist.conf'' with the following contents:+==== Services ==== 
 + 
 +Service modification
  
 <code> <code>
-blacklist brcmfmac +systemctl disable apt-daily-upgrade.timer 
-blacklist brcmutil+systemctl disable apt-daily.timer
 </code> </code>
 +
 +===== See also =====
 +
 +  * [[quay:dns|Local DNS configuration]]
 +  * [[quay:ntp|Local time service]]
 +  * [[quay:dhcp|Local DHCP service]]
pi/raspbian.1589822662.txt.gz · Last modified: 2020-05-18 13:24 by gabriel