Differenze tra le versioni di "Raspberry Pi:network boot"
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 58: | Riga 58: | ||
<pre style="color:green;overflow:auto"> | <pre style="color:green;overflow:auto"> | ||
proc /proc proc defaults 0 0 | proc /proc proc defaults 0 0 | ||
− | 192.168.2.1:/var/lib/tftpboot/<seriale> /boot nfs defaults 0 0 | + | 192.168.2.1:/var/lib/tftpboot/<seriale> /boot nfs defaults,vers=3 0 0 |
</pre> | </pre> | ||
Riga 125: | Riga 125: | ||
== troubleshoot (risolvere i problemi) == | == troubleshoot (risolvere i problemi) == | ||
− | + | === L'utente "pi" non ha permessi di scrittura nella propria "home" directory === | |
<pre style="background-color:black;color:white;overflow:auto"> | <pre style="background-color:black;color:white;overflow:auto"> | ||
sudo su | sudo su | ||
Riga 133: | Riga 133: | ||
</pre> | </pre> | ||
+ | === Raspberry Pi 3B+ === | ||
+ | Gia` predisposto per l'avvio da rete se non trova una SD Card o altro, si avvia solo se trova il file "bootcode.bin" e lo cerca nella root del servizio "tftp". | ||
+ | |||
+ | Copiare il file "bootcode.bin" nella "/var/lib/tftpboot" (se e` la directory del vostro tftp). | ||
+ | |||
+ | Dopodiche`, si comporta come gli altri, cerca la [sotto]directory col nome del suo numero seriale .. | ||
+ | |||
+ | === Permessi/Proprietario della/nella "/boot" === | ||
+ | |||
+ | L'errore e` capitato nell'upgrade del kernel: | ||
+ | <pre style="background-color:black;color:white;overflow:auto"> | ||
+ | ... | ||
+ | Removing 'diversion of /boot/overlays/w1-gpio.dtbo to /usr/share/rpikernelhack/overlays/w1-gpio.dtbo by rpikernelhack' | ||
+ | dpkg-divert: error: unable to change ownership of target file '/boot/overlays/w1-gpio.dtbo.dpkg-divert.tmp': Invalid argument | ||
+ | ... | ||
+ | Removing 'diversion of /boot/start.elf to /usr/share/rpikernelhack/start.elf by rpikernelhack' | ||
+ | dpkg-divert: error: unable to change ownership of target file '/boot/start.elf.dpkg-divert.tmp': Invalid argument | ||
+ | Removing 'diversion of /boot/start_cd.elf to /usr/share/rpikernelhack/start_cd.elf by rpikernelhack' | ||
+ | dpkg-divert: error: unable to change ownership of target file '/boot/start_cd.elf.dpkg-divert.tmp': Invalid argument | ||
+ | ... | ||
+ | </pre> | ||
+ | |||
+ | Correggere il "mount" della directory nel file "fstab" (/opt/rpi/<seriale>/etc/fstab): | ||
+ | <pre style="color:green;overflow:auto"> | ||
+ | proc /proc proc defaults 0 0 | ||
+ | 192.168.4.1:/var/lib/tftpboot/<seriale> /boot nfs defaults,vers=3 0 0 | ||
+ | </pre> | ||
== Riferimenti == | == Riferimenti == |
Versione attuale delle 09:39, 7 apr 2018
Raspberry Pi: Network boot (w/ debian 5)
Network boot realizzato con un server Debian Lenny (versione 5)
Questa Debian Lenny, gia` configurata come server, fornisce i servizi DHCP, NFS e TFTP, quest'ultimo in particolare, invocato da "inetd".
I pacchetti necessari dovrebbero essere: nfs-kernel-server dhcp3-server tftpd-hpa.
Preparazione
Occorre avviare il Raspberry Pi che s'intede utilizzare, verificando il numero "hardware address" della scheda di rete, un comando "ifconfig" lo mostra gia`, ed il seriale, che si ottiene leggendolo da "/proc/cpuinfo", un "cat /proc/cpuinfo" e` sufficiente a leggerlo.
raspbian lite
Scompattata lultima versione d'immagine raspberry pi, sono state copiate la "boot" in /var/lib/tftpboot/<seriale> e la root "/" in /opt/rpi/<seriale>, dove <seriale> e` il numero seriale del raspberry utilizzato.
- Download
aria2c https://downloads.raspberrypi.org/raspbian_lite_latest
- oggi e` "2018-03-13-raspbian-stretch-lite.zip".
- Unzip
unzip -x 2018-03-13-raspbian-stretch-lite.zip
- Mount
- Da qui, i comandi sono da eseguirsi come root
fdisk -l 2018-03-13-raspbian-stretch-lite.img
- Prendete nota dei numeri di "Boot Start" delle partizioni e montatele cosi`:
mount -t <filesystemtype> -o loop,offset=$((<start>*512)) <immagine> <punto di mount>
- Per esempio
mount -t ext4 -o loop,offset=$((98304*512)) 2018-03-13-raspbian-stretch-lite.img /mnt mount -t vfat -o loop,offset=$((8192*512)) 2018-03-13-raspbian-stretch-lite.img /mnt/boot
- Copia
- Nelle destinazioni, si devono copiare i files (io ho rispettato i permessi e non scrivo il comando perche` ho usato un file manager).
- in "/opt/rpi/<seriale>", copiate tutta la "root" (e` /mnt, dove avete montato il filesystem "/" dell'immagine), eliminando i files in "/boot" ma lasciando la directory.
- in "/var/lib/tftpboot/<seriale>, copiate il contenuto di "/mnt/boot"
- Modifica
- /var/lib/tftpboot/<seriale>/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.2.1:/opt/rpi/<seriale> rootfstype=ext3 rw ip=dhcp elevator=deadline rootwait
- Modifica
- /opt/rpi/<seriale>/etc/fstab
proc /proc proc defaults 0 0 192.168.2.1:/var/lib/tftpboot/<seriale> /boot nfs defaults,vers=3 0 0
Ricordate di sostituire <seriale>.
NFS
Ho aggiunto queste righe al file "/etc/exports":
# Raspberry Pi (1) /opt/rpi/<seriale> 192.168.2.0/255.255.255.0(rw,no_subtree_check,no_root_squash,async) /var/lib/tftpboot/<seriale> 192.168.2.0/255.255.255.0(rw,no_subtree_check,no_root_squash,async)
Poi i comandi seguenti, ricaricano la configurazione e mostrano quali sono le "esportazioni":
exportfs -ra exportfs
DHCPD
Ho aggiunto queste righe al file "/etc/dhcp3/dhcpd.conf":
host rpi { hardware ethernet b8:27:eb:35:65:6a; # hardware address option tftp-server-name "192.168.2.1"; }
E il restart del demone (e` una debian 5, ricordate ?):
/etc/init.d/dhcp3-server restart
TFTP
Era gia` attivo, la riga e` nel file "/etc/inetd.conf":
#:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
SD Card
Tranne la versione 3, per tutti i Raspberry Pi e` ncessario disporre di una SD Card formattata in fat32 con il file "bootcode.bin", che potete copiare dalla "/boot".
Un'esempio/promemoria di com'e` stata partizionata e feormattata la SD Card (report di "fdisk -l <sdcard>", e creazione filesystem):
# fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 241.3 MiB, 252968960 bytes, 494080 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x3a2c78c6 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 2048 494079 492032 240.3M b W95 FAT32 # mkfs.vfat /dev/mmcblk0
troubleshoot (risolvere i problemi)
L'utente "pi" non ha permessi di scrittura nella propria "home" directory
sudo su chown pi:pi /home/pi chown pi:pi /homepi.bash* chown pi:pi /homepi.profile
Raspberry Pi 3B+
Gia` predisposto per l'avvio da rete se non trova una SD Card o altro, si avvia solo se trova il file "bootcode.bin" e lo cerca nella root del servizio "tftp".
Copiare il file "bootcode.bin" nella "/var/lib/tftpboot" (se e` la directory del vostro tftp).
Dopodiche`, si comporta come gli altri, cerca la [sotto]directory col nome del suo numero seriale ..
Permessi/Proprietario della/nella "/boot"
L'errore e` capitato nell'upgrade del kernel:
... Removing 'diversion of /boot/overlays/w1-gpio.dtbo to /usr/share/rpikernelhack/overlays/w1-gpio.dtbo by rpikernelhack' dpkg-divert: error: unable to change ownership of target file '/boot/overlays/w1-gpio.dtbo.dpkg-divert.tmp': Invalid argument ... Removing 'diversion of /boot/start.elf to /usr/share/rpikernelhack/start.elf by rpikernelhack' dpkg-divert: error: unable to change ownership of target file '/boot/start.elf.dpkg-divert.tmp': Invalid argument Removing 'diversion of /boot/start_cd.elf to /usr/share/rpikernelhack/start_cd.elf by rpikernelhack' dpkg-divert: error: unable to change ownership of target file '/boot/start_cd.elf.dpkg-divert.tmp': Invalid argument ...
Correggere il "mount" della directory nel file "fstab" (/opt/rpi/<seriale>/etc/fstab):
proc /proc proc defaults 0 0 192.168.4.1:/var/lib/tftpboot/<seriale> /boot nfs defaults,vers=3 0 0