Difference between revisions of "Install Raspberry Pi"
(→Links) |
(→Operating system) |
||
(28 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 164: | Line 214: | ||
* [https://raspberrypi.stackexchange.com/questions/48056/login-as-root-not-possible enabling root ssh] | * [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
[hide]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: