Raspberry Pi:network boot

Da raspibo.
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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    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


Riferimenti