Difference between revisions of "Install Raspberry Pi"
(→Links) |
(→Operating system) |
||
(29 intermediate revisions by one user not shown) | |||
Line 6: | Line 6: | ||
This wiki bases on the console version of Raspbian. | This wiki bases on the console version of Raspbian. | ||
− | == | + | == Operating system == |
− | + | A [https://www.raspberrypi.org/downloads/raspbian/ disk image] | |
− | + | can be downloaded and copied to the SD card | |
− | + | with the help of [https://etcher.io/ Etcher]. | |
− | + | unzip ~/Downloads/etcher-1.1.2-linux-x86_64.zip -d /tmp/ | |
− | + | /tmp/etcher-*.AppImage & | |
− | unzip | + | |
− | + | ||
− | + | Place the SD card on the board and power it. | |
− | + | Attach a keyboard and a screen and wait for the boot process to terminate. | |
− | + | Login as <code>pi</code> with username <code>raspberry</code>. | |
− | + | raspi-config | |
− | + | sudo su | |
− | + | passwd | |
− | + | apt update | |
− | + | apt upgrade | |
− | + | Check OS version: | |
− | + | uname -a | |
− | + | The result can be compared to the [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Version_history Raspberry Pi OS version history]. | |
− | + | ||
− | + | With <code>raspi-config</code>, one can: | |
− | + | * change the keyboard layout | |
+ | * edit the host name | ||
+ | * enable <code>ssh</code> (from <code>Interfacing Options</code>) | ||
+ | * disable predictable interface names (keep to <code>eth0</code> and <code>wlan0</code>) | ||
+ | * set the wi-fi region | ||
− | + | Enable root SSH by changing in <code>/etc/ssh/sshd_config</code>: | |
− | + | PermitRootLogin yes | |
+ | |||
+ | Disable the [https://en.wikipedia.org/wiki/Bluetooth Bluetooth] related services: | ||
+ | systemctl disable hciuart.service | ||
+ | systemctl disable bluetooth.service | ||
+ | |||
+ | Disable loading the Bluetooth kernel modules by adding in <code>/boot/config.txt</code>: | ||
+ | # Disable Bluetooth | ||
+ | dtoverlay=pi3-disable-bt | ||
− | == Change root | + | == Change root settings == |
Insert the SD card in the Raspberry Pi and boot it. | Insert the SD card in the Raspberry Pi and boot it. | ||
Line 45: | Line 54: | ||
apt upgrade | apt upgrade | ||
− | + | Setup aliases: | |
+ | nano .bashrc | ||
+ | source .bashrc | ||
− | + | Specify what to do with pageUp/Down keys: | |
− | + | nano /etc/inputrc | |
+ | |||
+ | Allow ssh: | ||
+ | nano /etc/ssh/sshd_config | ||
+ | # change: PermitRootLogin yes | ||
+ | service ssh restart | ||
+ | |||
+ | == Perl == | ||
+ | |||
+ | Specify locales by editing <code>/etc/default/locale</code>: | ||
+ | LANG=C.UTF-8 | ||
+ | LC_ALL=C | ||
+ | |||
+ | Test it: | ||
+ | perl -e exit | ||
− | + | Install the necessary package for the documentation of [https://www.perl.org/ Perl] scripts: | |
− | + | apt install perl-doc | |
− | == Swap | + | == Swap partition == |
Add a 1 GB swap partition | Add a 1 GB swap partition | ||
cfdisk /dev/mmcblk0 | cfdisk /dev/mmcblk0 | ||
+ | swaplabel -L swap /dev/mmcblk0p3 | ||
Edit <code>/etc/fstab</code> and add: | Edit <code>/etc/fstab</code> and add: | ||
− | + | LABEL=swap none swap sw 0 0 | |
Remove the default swapfile: | Remove the default swapfile: | ||
Line 72: | Line 98: | ||
Check the Ethernet connection: | Check the Ethernet connection: | ||
− | ifconfig | grep inet | + | ifconfig | grep 'inet ' |
− | ping google.com | + | ping -c 4 google.com |
Change host name: | Change host name: | ||
raspi-config | raspi-config | ||
− | Give a static address: | + | Give a static IP address: |
− | nano /etc/ | + | nano /etc/dhcpcd.conf |
− | + | Add the following lines: | |
− | + | # Set a static IP address | |
− | + | interface eth0 | |
− | + | static ip_address=192.168.1.18/24 | |
− | + | static routers=192.168.1.1 | |
− | + | static domain_name_servers=192.168.1.3 | |
+ | |||
+ | Restart the machine and re-enable SSH: | ||
+ | reboot | ||
+ | raspi-config | ||
+ | ifconfig | grep 'inet ' | ||
Set-up Apple FileProtocol (AFP) sharing: | Set-up Apple FileProtocol (AFP) sharing: | ||
Line 91: | Line 122: | ||
nano /etc/netatalk/AppleVolumes.default | nano /etc/netatalk/AppleVolumes.default | ||
− | = | + | = Users = |
− | + | Removing the default user can close security gaps: | |
− | + | userdel -r pi | |
− | + | ||
− | + | ||
− | |||
− | |||
− | + | Add a data partition for the users' home | |
+ | cfdisk /dev/mmcblk0 | ||
+ | mke2fs -t ext4 -L data /dev/mmcblk0p4 | ||
− | + | Edit <code>/etc/fstab</code> and add: | |
− | + | LABEL=data /home ext4 defaults,noatime 0 1 | |
− | + | Reboot the machine: | |
− | + | reboot | |
+ | lsblk -o name,label,mountpoint | ||
− | + | Add the <code>control</code> user: | |
+ | useradd -m -g users -G users,dialout,audio -s /bin/bash control | ||
+ | passwd control | ||
− | = | + | = Backup = |
− | + | Zeroing unused blocks on the SD card should be better for later compression: | |
− | + | apt install secure-delete | |
+ | lsblk -o name,label,mountpoint | ||
− | + | Zero fill unused blocks of the data partition: | |
+ | sfill -lzv /home/ | ||
− | + | Zero fill unused blocks of the system partition: | |
− | + | umount /home | |
− | + | sfill -lzv / | |
+ | |||
+ | Zero the swap partition: | ||
+ | swapoff /dev/mmcblk0p3 | ||
+ | dd if=/dev/zero of=/dev/mmcblk0p3 | ||
+ | mkswap -L pi-swap /dev/mmcblk0p3 | ||
+ | |||
+ | Stop the machine: | ||
+ | halt | ||
+ | |||
+ | Extract the SD card, insert it in a reader and plug it in a Linux PC. | ||
+ | |||
+ | Save the whole disk: | ||
+ | lsblk -o name,label,fstype,size,mountpoint | ||
+ | RPI_DISK='/dev/sdb' | ||
+ | RPI_BACKUP_FILE='/home/<i>user</i>/Desktop/rpi.img.bz2' | ||
+ | umount $RPI_DISK* | ||
+ | dd if=$RPI_DISK status=progress | bzip2 -9f >$RPI_BACKUP_FILE | ||
+ | ls -lh $RPI_BACKUP_FILE | ||
+ | eject $RPI_DISK | ||
+ | |||
+ | Restore the whole disk: | ||
+ | bunzip2 -dc $RPI_BACKUP_FILE | dd of=$RPI_DISK status=progress | ||
= Checks = | = Checks = | ||
Line 150: | Line 206: | ||
done | done | ||
ps ax -o nice,pid,user,args | grep -v ' grep ' | grep -i xpl- | ps ax -o nice,pid,user,args | grep -v ' grep ' | grep -i xpl- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Links = | = Links = | ||
Line 162: | Line 212: | ||
* [https://narcisocerezo.wordpress.com/2014/06/25/create-a-robust-raspberry-pi-setup-for-24x7-operation/ create a robust Raspberry Pi setup for 24x7 operation] | * [https://narcisocerezo.wordpress.com/2014/06/25/create-a-robust-raspberry-pi-setup-for-24x7-operation/ create a robust Raspberry Pi setup for 24x7 operation] | ||
* [https://raspberrypi.stackexchange.com/questions/47773/disable-auto-file-system-expansion-in-new-jessie-image-2016-05-10 removing automatic filesystem expansion at boot] | * [https://raspberrypi.stackexchange.com/questions/47773/disable-auto-file-system-expansion-in-new-jessie-image-2016-05-10 removing automatic filesystem expansion at boot] | ||
+ | * [https://raspberrypi.stackexchange.com/questions/48056/login-as-root-not-possible enabling root ssh] | ||
* [https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update setting a static IP address] | * [https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update setting a static IP address] | ||
+ | * [https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md setting-up WiFi] | ||
[[Category: all]] [[Category: Install]] | [[Category: all]] [[Category: Install]] |
Latest revision as of 11:36, 29 January 2021
The xPL protocol is light enough to run on simple machines such as the Raspberry Pi.
Contents
Install Raspbian
Several distributions are available for the Raspberry Pi. This wiki bases on the console version of Raspbian.
Operating system
A disk image can be downloaded and copied to the SD card with the help of Etcher.
unzip ~/Downloads/etcher-1.1.2-linux-x86_64.zip -d /tmp/ /tmp/etcher-*.AppImage &
Place the SD card on the board and power it.
Attach a keyboard and a screen and wait for the boot process to terminate.
Login as pi
with username raspberry
.
raspi-config sudo su passwd apt update apt upgrade
Check OS version:
uname -a
The result can be compared to the Raspberry Pi OS version history.
With raspi-config
, one can:
- change the keyboard layout
- edit the host name
- enable
ssh
(fromInterfacing Options
) - disable predictable interface names (keep to
eth0
andwlan0
) - set the wi-fi region
Enable root SSH by changing in /etc/ssh/sshd_config
:
PermitRootLogin yes
Disable the Bluetooth related services:
systemctl disable hciuart.service systemctl disable bluetooth.service
Disable loading the Bluetooth kernel modules by adding in /boot/config.txt
:
# Disable Bluetooth dtoverlay=pi3-disable-bt
Change root settings
Insert the SD card in the Raspberry Pi and boot it.
sudo su passwd apt update apt upgrade
Setup aliases:
nano .bashrc source .bashrc
Specify what to do with pageUp/Down keys:
nano /etc/inputrc
Allow ssh:
nano /etc/ssh/sshd_config # change: PermitRootLogin yes service ssh restart
Perl
Specify locales by editing /etc/default/locale
:
LANG=C.UTF-8 LC_ALL=C
Test it:
perl -e exit
Install the necessary package for the documentation of Perl scripts:
apt install perl-doc
Swap partition
Add a 1 GB swap partition
cfdisk /dev/mmcblk0 swaplabel -L swap /dev/mmcblk0p3
Edit /etc/fstab
and add:
LABEL=swap none swap sw 0 0
Remove the default swapfile:
update-rc.d -f dphys-swapfile remove swapoff -a rm /var/swap
Reboot and check:
swapon -s
Ethernet
Check the Ethernet connection:
ifconfig | grep 'inet ' ping -c 4 google.com
Change host name:
raspi-config
Give a static IP address:
nano /etc/dhcpcd.conf
Add the following lines:
# Set a static IP address interface eth0 static ip_address=192.168.1.18/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.3
Restart the machine and re-enable SSH:
reboot raspi-config ifconfig | grep 'inet '
Set-up Apple FileProtocol (AFP) sharing:
apt install netatalk nano /etc/netatalk/AppleVolumes.default
Users
Removing the default user can close security gaps:
userdel -r pi
Add a data partition for the users' home
cfdisk /dev/mmcblk0 mke2fs -t ext4 -L data /dev/mmcblk0p4
Edit /etc/fstab
and add:
LABEL=data /home ext4 defaults,noatime 0 1
Reboot the machine:
reboot lsblk -o name,label,mountpoint
Add the control
user:
useradd -m -g users -G users,dialout,audio -s /bin/bash control passwd control
Backup
Zeroing unused blocks on the SD card should be better for later compression:
apt install secure-delete lsblk -o name,label,mountpoint
Zero fill unused blocks of the data partition:
sfill -lzv /home/
Zero fill unused blocks of the system partition:
umount /home sfill -lzv /
Zero the swap partition:
swapoff /dev/mmcblk0p3 dd if=/dev/zero of=/dev/mmcblk0p3 mkswap -L pi-swap /dev/mmcblk0p3
Stop the machine:
halt
Extract the SD card, insert it in a reader and plug it in a Linux PC.
Save the whole disk:
lsblk -o name,label,fstype,size,mountpoint RPI_DISK='/dev/sdb' RPI_BACKUP_FILE='/home/user/Desktop/rpi.img.bz2' umount $RPI_DISK* dd if=$RPI_DISK status=progress | bzip2 -9f >$RPI_BACKUP_FILE ls -lh $RPI_BACKUP_FILE eject $RPI_DISK
Restore the whole disk:
bunzip2 -dc $RPI_BACKUP_FILE | dd of=$RPI_DISK status=progress
Checks
CPU usage
Check CPU usage:
ps -eo pcpu,user,args | sort -k 1 -r | head -10 echo && ps -eo pcpu,user,args | grep -v ' 0.0 ' | grep -v '%CPU' | sort -k 1 -r | sed 's/[ ^I]\/.*\/perl//' | sed 's/.pl[ ^I].*/.pl/'
Process priorities
Check process priorities:
ps ax -o nice,pid,user,args | grep -v ' NI ' | sort
The lowest numbers correspond to the highest priorities.
Change the priority level of xPL devices:
ps ax -o nice,pid,user,args | grep -v ' grep ' | grep -i xpl- USER='control' NEW_LEVEL=-10 SYSTEM_IFS=$IFS; IFS=$'\n'; task_list=(`ps ax -o pid,user,args | grep -v ' grep ' | grep -i '/xpl-'`) IFS=$SYSTEM_IFS for item in "${task_list[@]}" ; do task_id=`echo "${item}" | sed "s/$USER.*//"` # echo $task_id renice $NEW_LEVEL -p $task_id >/dev/null done ps ax -o nice,pid,user,args | grep -v ' grep ' | grep -i xpl-
Links
Here some interesting pages for the installation process: