=======Setting up and learning to use the Raspberry Pi======= All steps contain links in the form of video guides and images that explain how to implement this step. During this task you will need a Raspberry Pi, a micro SD card, a Windows PC and a monitor with HDMI port, a MiniHDMI-HDMI cable, a USB C charger, two keyboards, two mice and a normal monitor. All these items should be available at your workplace or handed to you by a responsible trainer. Information on the Raspberry Pi device and the associated OS can be found at https://www.raspberrypi.com/documentation/ respectively https://www.raspberrypi.com/software/ if sd card already has the RaspiOS -> set up again if empty -> reset ===== Step 1: Get the Raspberry Pi ready to boot ===== To set up the Raspberry Pi, you need an SD card and an SD card reader to install the image. The following video shows how to load the ISO file (Raspberry Pi OS (64 bit)) onto the SD card using the Raspberry Pi Imager: {{youtube>ntaXWS8Lk34}} Now insert the SD card into the SD card slot on the Raspberry Pi. ===== Step 2: Booting the Raspberry Pi and initial setup ===== Now that you have equipped the Raspberry Pi with a bootable SD card, connect the mouse and keyboard to the device, using an unused USB A port for each. Next, connect the Ethernet cable to the Raspberry Pi and the switch on the table. Next, connect the Raspberry Pi and the screen using the mini HDMI-HDMI cable. Make sure that the screen is connected to the Storm and switched on. Once you have connected all the hardware to the main module, you can plug the USB C charger connected to the power supply into the Raspberry Pi and flip the toggle switch on the cable if necessary. You should now be able to see the Raspberry Pi start up on the screen. If this is not the case, check the HDMI plug. If this does not solve the problem, check the power plug on the socket side and on the Raspberry Pi side. These procedures should resolve the most common sources of error. If the problem persists, remove the power supply from the Raspberry Pi and remove the SD card. Now repeat the procedure described in step 1 above to write a new image to the SD card. Then repeat step 2. If the problem is still not resolved, please contact your instructor. Now that the Raspberry Pi is starting, you have to wait for a moment, then a window should open. Here you select your "Country" (Switzerland), your "Language" (Swiss High German) and your "Timezone" (Zurich9 and confirm your entry. Then enter your "username" (sysadmin) and your "password" (Password1) and confirm your entry. Under "Set Up Screen" select "Reduce the Size of the desktop on this monitor" and confirm your entry. Skip the WiFI network setup and confirm on the next screen that you want to update the software. Then restart the Raspberry Pi by selecting "Restart". ===== Step 3: Updates and control centre ===== Now that you have set up the Raspberry Pi, you can update your programmes again. Open the console and type in sudo apt-get update Use this command to check whether your data packages require an update. If the answer is yes, you can use the command sudo apt-get upgrade command to install the corresponding packages. ==== Assign a fixed IP address ==== We give our Pi a fixed IP address. To do this, we call up the network settings by left-clicking on the opposing arrows at the top right of the screen and select ''Advanced Options/Edit Connections''. In the following window, double-click the ''Wired connection 1''. Then switch to the tab ''IPv4 Settings''tab, select the method ''Manual'' and enter the following information:\\ IPv4 Adress: 172.16.51.2 Netmask: 255.255.255.0 Gateway: 172.16.51.1 DNS Server: 8.8.4.4, 172.16.51.2, 8.8.8.8 Then confirm and restart the device. ==== Remote Desktop ==== This is very important, as Raspis are often installed without a mouse and keyboard and are only maintained or configured using SSH or Remote Desktop.\\ Take, for example, a surveillance camera mounted on the front of a building. It would be quite conspicuous if a screen, mouse and keyboard were also installed there.\\ === With a graphical user interface === == Installing the desktop server on the RasbpberryPi == Step 1\\ We install xrdp using the APT package manager. This is a free implementation of the Remote Desktop Protocol for Linux.\\ sudo apt-get install xrdp\\ == Create remote desktop user == On the Raspberry Pi:\\ Create new rdp user : \\ sudo useradd -m -s /bin/bash -g users -G sudo crt\\ sudo passwd crt \\ (set password)\\ == Use remote desktop client on Windows PC == Use the Remote Desktop programme from Windows to connect to the RaspberryPi:\\ {{de:ausbildung:remotedesktop.png?400|}}\\ {{ausbildung:rem_ohne_grafische_oberflaeche_nun_oeffnen_wir_den_raspberry_pi_configurator_unter_einstellungen_im_startmenue_waehlen_schnittstellen_und_aktivieren_den_punkt_ssh_und_klicken_dann_auf_ok._so_koennen_wir_nun_via_konsole_auf_unseren_raspi_zugreifen_und_damit_arbeiten._auf_einem_windows-computer_nutzen_sie_das_programm_putty:ausbildung:putty.png?400|}}\\ === Or you can also use ssh:=== ssh 172.16.51.2 -l crt ===== Installation DHCP server ===== To install the DHCP server, select the following package from Natty onwards:\\ \\ sudo apt-get install isc-dhcp-server\\ \\ After the package has been installed, we still have to adjust some files and of course plan our DHCP server.\\ In this example, the nano editor is used. If this is not yet installed, we can do this with the command sudo apt-get install nano command.\\ The functions of the nano editor that are required for this guide are as follows:// - "CTRL" + "O", followed by "Enter" to save the changes made to a file// -CTRL" + "X" to exit the editor// Alternatively, a cheatsheet can be found under the following link "https://www.nano-editor.org/dist/latest/cheatsheet.html"// configuration\\ Example configuration\\ - The rogue DHCP server should be activated does not allow other DHCP servers in the network\\ - The server serves the network 172.16.51.0\\ - The clients are assigned IP addresses between 172.16.51.21 and 172.16.51.99\\ - The transition (gateway or router) to another network has the IP address 172.16.51.1\\ - The name server has the IP address 172.16.51.2 (is only integrated during DNS configuration) and 8.8.8.8\\ - The server receives the fixed IP 172.16.51.2\\ - The netmask is 255.255.255.0\\ - Broadcast is 172.16.51.255\\ - The domain is called "raspi.home"\\ - The lease time is set to 10 minutes \\ - The maximum lease time is set to 2 hours\\ - The Eth0 interface is defined as the default\\ - A specific client is always assigned the same IP address based on its hardware (MAC) address.\\ ==== Setting up the DHCP server ==== We open the file /etc/default/isc-dhcp-server\\ sudo nano /etc/default/isc-dhcp-server\\ \\ And change the entry as follows:\\ # Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). #DHCPDv4_CONF=/etc/dhcp/dhcpd.conf #DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf # Path to dhcpd's PID file (default: /var/run/dhcpd.pid). #DHCPDv4_PID=/var/run/dhcpd.pid #DHCPDv6_PID=/var/run/dhcpd6.pid # Additional options to start dhcpd with. # Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead #OPTIONS="" # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACESv4="eth0" INTERFACESv6="" \\ \\ We copy the file dhcpd.conf.\\ \\ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd2.conf\\ \\ We open the dhcpd.conf file in the /etc/dhcp directory\\ \\ sudo nano /etc/dhcp/dhcpd.conf\\ \\ We delete the entire contents of the file and then insert the following lines:\\ \\ subnet 172.16.51.0 netmask 255.255.255.0 { range 172.16.51.21 172.16.51.99; interface eth0; option domain-name-servers 172.16.51.2, 8.8.8.8; option domain-name "rafisa.home"; option routers 172.16.51.1; option broadcast-address 172.16.51.255; default-lease-time 600; max-lease-time 7200;} \\ Once the configuration is complete, we can start and stop the server with the following commands or query the status.\\ \\ sudo /etc/init.d/isc-dhcp-server start\\ \\ sudo /etc/init.d/isc-dhcp-server stop\\ \\ sudo /etc/init.d/isc-dhcp-server status\\ ===== Installation DNS server ===== ==== Installation ==== First, BIND (currently in version 9) must be installed via the APT package management system using the following terminal command.\\ \\ sudo apt-get install bind9 bind9utils dnsutils\\ \\ Once the installation is complete, we can test the DNS server. With the command\\ \\ dig @127.0.0.1 www.google.de\\ \\ a similar output to the one below should appear.\\ \\ <<>> DiG 9.16.22-Debian <<>> @127.0.0.1 www.google.de\\ ; (1 server found)\\ ;; global options: +cmd\\ ;; Got answer:\\ ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 59482\\ ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1\\ \\ ;; OPT PSEUDOSECTION:\\ ; EDNS: version: 0, flags:; udp: 1232\\ ; COOKIE: e31452e9a2ec22550100000062161feaf2121d8249561dd2 (good)\\ ;; QUESTION SECTION:\\ ;www.google.de. IN A\\ \\ ;; Query time: 404 msec\\ ;; SERVER: 127.0.0.1#53(127.0.0.1)\\ ;; WHEN: Wed Feb 23 11:52:10 GMT 2022\\ ;; MSG SIZE rcvd: 70\\ \\ Beispiel-Konfiguration\\ \\ Kommen wir nur zur eigentlichen Einrichtung von eigenen Zonen und der Konfiguration von BIND welches sich in der Datei /etc/bind/named.conf.local befindet.\\ \\ Für ein einfaches Beispiel gehen wir von folgender lokalen Netzwerk-Topologie aus.\\ \\ • Raspberry: 172.16.51.2\\ • Netzwerk: 172.16.51.0/24\\ • Subnetzmaske: 255.255.255.0\\ • Broadcast-Adresse: 172.16.51.255\\ • Gateways/Router: 172.16.51.1\\ • Interner Server: 172.16.51.5\\ • Raspberry (DNS-Server): 172.16.51.2 8.8.8.8\\ • Hostname: raspi\\ • DNS-Zone: raspi.home\\ Forward- und Reverse-Lookup Zonen anlegen\\ Domains die wir im DNS-Server konfigurieren wollen, werden eigene Zonen angelegt. \\ Für jede Domain sollte es normalerweise zwei Zonen-Dateien geben. Jeweils eine Zonen-Datei für den Forward- und den Reverse-Lookup.\\ \\ Zuerst muss in der Datei „/etc/bind/named.conf.local“ die Konfiguration für diese beiden Dateien unserer Beispiel-Zone „raspi.home“ eingetragen werden. \\ Um die Datei zu bearbeiten, muss diese in einem Editor (z. B. „nano“) geöffnet werden.\\ \\ Natürlich machen wir zuerst ein Backup der Datei.\\ \\ sudo cp /etc/bind/named.conf.local /etc/bind/named2.conf.local\\ \\ We then open the file and enter our configuration.\\ \\ sudo nano /etc/bind/named.conf.local\\ \\ We enter the following configuration\\ // ----------------------- Zones ----------------------- // Forward-Lookup zone "raspi.home" { type master; file "/etc/bind/zones/raspi.home"; }; // Reverse-Lookup zone "51.16.172.in-addr.arpa" { type master; file "/etc/bind/zones/db.51.16.172.inv"; }; // ----------------------- Zones ----------------------- \\ Firstly, only the zones for BIND are made known here. The actual configuration of the logical structure is then entered in the files specified under "file".\\ \\ For a better overview, we will create a separate "zones" folder and save the files in it.\\ \\ sudo mkdir /etc/bind/zones\\ \\ The "raspi.home.zone" file does not need to be created and can be opened directly with the following command.\\ \\ sudo nano /etc/bind/zones/raspi.home\\ \\ The following content must be entered and saved in the file.\\ \\ ;; BIND forward data file for zone raspi.home ;; $TTL 86400 ; time-to-live - 24 hours could have been written as 24h or 1d @ IN SOA ns1.raspi.home. mail.raspi.home. ( 2015061201 ; Serial - (NOTE: Needs to increment every time you restart BIND) 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Default TTL IN NS ns1.raspi.home. ; nameserver IN A 172.16.51.2 ; loop-back address ns1 IN A 172.16.51.2 raspi.home. IN A 172.16.51.2 server IN TXT "Interner Server" www IN CNAME raspi.home. \\ \\ Reverse lookup\\ Another zone file "db.20.168.192.inv" is created for the reverse lookup.\\ sudo nano /etc/bind/zones/db.51.16.172.inv\\ \\ And fill in the following data\\ \\ ;; BIND reverse data file for zone db. 51.16.172.inv ;; $TTL 86400 ; time-to-live - 24 hours could have been written as 24h or 1d @ IN SOA ns1.raspi.home. mail.raspi.home. ( 2015061101 ; Serial - (NOTE: Needs to increment every time you restart BIND) 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Default TTL IN NS ns1.raspi.home. ; nameserver 2 IN PTR ns1.raspi.home. ; #1 172.16.51.2 10 IN PTR server.raspi.home. ; #2 172.16.51.2 \\ Start server\\ \\ sudo service bind9 restart\\ \\ or\\ \\ sudo service bind9 stop\\ sudo service bind9 start\\ \\ We can now view the status of the server with the command. If all is well, no red lines should appear.\\ \\ sudo service bind9 status\\ \\ If something has gone wrong, it is advisable to view the messages in the log file "/var/log/syslog".\\ Testing the DNS server with DNS queries\\ \\ Enter the following command in the CMD prompt:\\ \\ nslookup\\ Default server: ns1.raspi.home\\ Address: 172.16.51.2\\ \\ The first DNS server in the system is now displayed. Then enter the IP address in the prompt and confirm with Enter:\\ \\ {{ausbildung:dns_1.jpg?400|}}\\ The name must be resolved correctly. \\ ===== Installing the print server ===== ==== Installation ==== To install the CUPS print server, we enter the following command in the console if we have not already made the selection at the beginning:\\ sudo apt-get install cups cups-client cups-bsd \\ \\ In addition, we now need the root account so that we can then access Cups via the Webgui.\\ We enter the following command in the terminal:\\ User root\\ PWD Password1\\ Cups requires some additional packages such as drivers for the printers and others, which is why the installation will take a moment.\\ Once Cups is installed, access to the web interface only works on the local host. We have to edit this configuration in the cupsd.conf file.\\ First we copy the file for security.\\ sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd2.conf\\ Then we edit the file.\\ sudo nano /etc/cups/cupsd.conf\\ The following parameters are entered at the bottom of the file:\\ # Only listen for connections from the local machine.\\ Listen Port 631\\ Listen 172.16.51.2:631\\ Listen /var/run/cups/cups.sock\\ We then execute the following two commands so that we can configure a printer.\\ sudo cupsctl --remote-any\\ sudo /etc/init.d/cups restart\\ Once the installation is complete, we can immediately open our web browser and enter the following address:\\ for the local PC:\\ http://localhost:631/admin\\ or for another PC:\\ http://172.16.51.2:631/admin\\ The following interface appears.\\ {{ausbildung:cups_1.jpg?400|}}\\ In order to install a printer, we need the following information:\\ IP address (172.16.51.150 in our case and the exact name of the device in our case a Brother-HL-5270DN. Under Linux as well as under Windows, the operating system requires a driver file so that the printer can be addressed. \\ Most drivers can be found on the page https://www.openprinting.org/drivers or directly from the manufacturer. The drivers are called ppd under Linux.\\ Under this link we can find the driver for our printer.\\ https://www.openprinting.org/printer/Brother/Brother-HL-5270DN .\\ Save the ppd file on your Raspi.\\ \\ Now switch to the Administration grid on the CUPS start page and select the Add printer button.\\ {{ausbildung:cups_2.jpg?400|}}\\ The following picture appears.\\ {{ausbildung:cups_3.jpg?400|}}\\ Here we select the LPD/LPR host or printer protocol and confirm with next.\\ Now we enter the IP address of our printer with the prefix socket://172.16.51.150 and confirm with next.\\ {{ausbildung:cups_4.jpg?400|}}\\ The following screen appears and we can now enter the details such as location, device, etc. As this is a server, we enable the printer in the network and also activate colour management.\\ Confirm with continue.\\ {{ausbildung:cups_5.jpg?400|}}\\ The following menu appears.\\ {{ausbildung:cups_6.jpg?400|}}\\ If it is an older printer, it may already be installed on the system and we will find it in the menu. Unfortunately, our printer is not yet installed, which is why we click on the "Select file" button and enter our PPD file.\\ {{ausbildung:cups_7.jpg?400|}}\\ We then select the "Add printer" button.\\ A window then appears in which we can set all the printer options.\\ {{ausbildung:cups_8.jpg?400|}}\\ We leave most of the settings as they are. We only set the following point under the "General" grid and confirm with the "Set default settings" button.\\ {{ausbildung:cups_9.jpg?400|}}\\ We now switch to the "Printer" grid where we find our new printer.\\ \{{ausbildung:cups_10.jpg?400|}}\ If we click on the "Maintenance" checkbox, we can select "Print test page" in the menu and our first page will be printed. \\