====== General Things on Raspbian ======
{{:playground:boo_the_bunny_13.png?nolink&200|}}
----
===== First step for Raspberry OS =====
{{mdi>mini-sd?color=#c7053d}} Flash Raspberry Pi OS ((previous called Raspbian)) --- ingredients: [[https://www.raspberrypi.org/downloads/|Raspberry Pi OS]] & [[https://www.balena.io/etcher/|BalenaEtcher]]
{{mdi>monitor?color=#c7053d}} Booting with flashed OS & login with ''**pi**'' / ''raspberry'' (default ID/password)
{{mdi>powershell?color=#c7053d}} Execute ''**sudo raspi-config**'' to setup initial configuration.
{{:manual:raspbi-config.png|}}
==== Setup raspbi-config ====
1. ''Change User Password'' --- Change password for user ''pi''
2. ''Network Options''
* **''N1 Hostname''** --- Change hostname for server
* **''N2 Wireless LAN''** --- Setup wireless region, SSID and passphrase for wireless network
* **''N3 Network interface names''** --- predictable network interface name such as ''enx78e7d1ea46da'' vs. traditional name such as ''wlan0''
* ''N4 Network proxy settings'' --- if necessary
3. ''Boot Options''
* **''B1 Desktop / CLI''** --- Desktop GUI or Command Line Interface for operation **''CLI''**
* ''B2 Wait for Network at Boot'' --- Booting sequences are not completed without network connection if yes
* ''B3 Splash Screen'' --- Choose your taste
4. Localisation Options
* **''I1 Change Locale''** --- Default value is ''en_GB.UTF-8 UTF-8'' , Set both **''en_US.UTF-8 UTF-8''** & **''ko_KR.UTF-8 UTF-8''**
* **''I2 Change Time Zone''** --- Asia/Seoul or your place
* ''I3 Change Keyboard Layout'' --- if necessary but usually pass
* ''I4 Change WLAN Country'' --- if necessary
5. Interfacing Options
* Disable: ''P1 Camera'', ''P3 VNC'' (if use CLI) , ''P4 SPI'' , ''P5 I2C'' , ''P6 Serial'' , ''P7 1-Wire'' , ''P8 Remote GPIO''
* Enable: **''P2 SSH''**
6. Overclock --- Simply pass over
7. Advance Options
* **''A1 Expand Filesystem''**
* **''A3 Memory Split''** --- ''**32**'' for console user. less than 32 can cause problem
==== Manage accounts ====
=== Change password for root ===
sudo passwd root
=== Create active userid ===
''pi'' user is build-in account, which means weak point of security. Therefore creating personal ''userid'' is recommended.
sudo adduser //userid//
Append ''sudoer'' privilege for ''userid''
Edit ''/etc/sudoers''
# User privilege specification
root ALL=(ALL:ALL) ALL
userid ALL=(ALL) NOPASSWD: ALL
Copy all files from ''/home/pi'' to ''/home/userid'' if necessary (e.g.: ''.profile'' ''.bashrc'')
Reboot system and login with ''userid''
Delete ''pi'' user
sudo deluser pi
sudo rm -rf /home/pi
=== Update and Upgrade ===
sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove
or enjoy every single step
sudo apt update
sudo apt dist-upgrade -y
sudo apt autoremove
Update kernel and VideoCore **''firmware''**
sudo rpi-update
----
==== Mount external disk(s) ====
Check attached or plugin devices using
sudo blkid
=== Format the disk with ext4 ===
sudo mkfs.ext4 /dev/sdXY
=== Mount NTFS formatted disk ===
NTFS format has little advantage under Linux system but could mount it as well
sudo apt-get install ntfs-3g
Formatting disk with NTFS
mkfs.ntfs -Q -L diskLabel /dev/sdXY
=== Disk mount at booting ===
Edit ''/etc/fstab''
Append line(s) with device's UUID or location path ''/dev/sdXY''. strongly prefer UUID with mount pointing
UUID="dd7c1879-68c5-e9b9-bad6-789d3b8db984" /(path)/Storage ext4 defaults 0 0
Reboot the system and check the disk mounted.
----
==== Configure wireless connection ====
* Check wireless & configuration ''sudo iwconfig'' to find wireless is available.
* Change proper configuration with editing ''/etc/network/interfaces''
{{fa>warning?size=16&color=#b84592}} Since ''Stretch'', ''/etc/network/interfaces'' is not useless unless stop ''dhcpcd'' service. Use ''/etc/dhcpcd.conf'' instead.
# Do not use in Stretch
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.abc.xyz
netmask 255.255.255.0
gateway 192.168.abc.1
dns-nameservers 8.8.8.8 8.8.4.4
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
''Edit'' ''/etc/dhcpcd.conf'' for static IP address
# Here is an example which configures a static address, routes and dns.
# define static profile
profile static_eth0
static ip_address=192.168.1.23/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
# fallback to static profile on eth0
interface eth0
fallback static_eth0
This configuration is static (fixed) IP with assigned DNS servers. ''fallback'' option is possible to configure a static profile within dhcpcd and fall back to it when DHCP lease fails.
* Edit ''/etc/wpa_supplicant/wpa_supplicant.conf''
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR_SSID"
psk="YOUR_PRESHARED_KEY_FOR_WIRELESS"
key_mgmt=WPA-PSK
}
* Gear wireless up
sudo ip link set wlan0 down
sudo ip link set wlan0 up
----
==== Set Google Public NTP ====
Use either ''systemd-timesyncd'' or ''ntp'' service. If you wish to use ''ntp''
apt-get install ntp
systemctl stop systemd-timesyncd
systemctl disable systemd-timesyncd
β (sudo) /etc/init.d/ntp stop
β (sudo) /etc/init.d/ntp start
Edit ''/etc/ntp.conf'' and append the following near ''server'' part.
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
restart NTP daemon
sudo service ntp reload
----
===== Maintenance & Operation =====
==== Useful packages ====
Initially install the following packages for convenience.
* ''tree'' --- The tree is a tiny, cross-platform command-line program used to recursively list or display the content of a directory in a tree-like format.
* ''vim'' --- vim is a text editor. It can be used for editing any kind of text and is especially suited for editing computer programs.
* ''iftop'' --- iftop is a real time console-based Linux network bandwidth monitoring
----
==== Time stamp prompt ====
Edit ''~/.bashrc'' and change ''PS1'' line
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]: \[\033[01;33m\]\D{%T}\[\033[00m\] \[\033[01;37m\]\w\$\[\033[00m\] '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h: \D{%T} \w\$ '
fi
Save and load ''.bashrc''
source ~/.bashrc
----
==== Modify login message ====
Edit ''/etc/motd''
Create ''20-disks'' (arbitrary name) and edit in ''/etc/update-motd.d/''
#!/bin/sh
printf "\n"
df -h /dev/sd* --out=target,fstype --output=size,used,avail,pcent --type=ext4
printf "\n"
Script shows the information of the attached disks, which also reminds whether disk is mounted or not.
Mounted on Type Size Used Avail Use%
/home/userid/disk1 ext4 917G 338G 533G 39%
/home/userid/disk2 ext4 458G 307G 128G 71%
----
==== Move directories & files using rsync ====
''rsync'' is useful command to transfer data from source to destination.
rsync -av --ignore-existing --remove-source-files /.. /source_directory/ TARGET.DOMAINS:/.. /destination_direcotry/ && \
find /../source_directory/ -depth -type d -empty -delete;
''--remove-source-files'' sender removes synchronized files (non-dirs)
''--ignore-existing'' skip updating files that already exist on receiver
After running ''rsync'' command, ''find'' command runs to find and delete empty directories.
----
==== Upgrade Raspbian from Jessie to Stretch ====
[[https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=184830|Upgrade video guide]] | [[https://www.52pi.com/blog/7-upgrade-raspbian-jessie-to-raspbian-stretch|Upgrade Guide]]
sudo apt update
sudo apt dist-upgrade
Check for any system inconsistencies. Perform database sanity and consistency checks for partially installed, missing and obsolete packages
sudo dpkg -C
If no issues are reported, check what packages are held back.
sudo apt-mark showhold
Packages showing ''On Hold'' **will not be upgraded**.
Replace ''Jessie'' to ''Stretch'' in distribution sources.
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
And update & upgrade with ''stretch'' sources. Reboot & check distribution information.
lsb_release -a
----
==== Upgrade Raspbian from Stretch to Buster ====
Preparing upgrade with keeping up latest
sudo apt update
sudo apt dist-upgrade -y
Update Raspberry Pi's firmware,
sudo rpi-update
After rebooting, modify source list with ''buster'' Edit ''/etc/apt/source.list''
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
Edit ''/etc/apt/sources.list.d/raspi.list''
deb http://archive.raspberrypi.org/debian/ buster main
To optimize upgrading process, remove ''apt-listchanges'' package
sudo apt-get remove apt-listchanges
Run update and upgrade for ''buster'' and it takes a long time.
sudo apt update
sudo apt dist-upgrade
Optional remove (or possible these are supposed to be removed) the followings
sudo apt purge timidity lxmusic gnome-disk-utility deluge-gtk evince wicd wicd-gtk clipit usermode gucharmap gnome-system-tools pavucontrol
Clean and purge repository for update and reboot finally.
sudo apt autoremove -y
sudo apt autoclean
sudo reboot
----