Passaggio all'ora legale 31 marzo 2024 02:00 03:00 sposta avanti l'orologio di 1 ora (si dorme 1 ora in meno)
Su Raspberry PI con Rasbian è possibile installare il runtime della versione Arm32 di .Net Core.
L'SDK non è supportato su ARM.

Installazione sistema operativo

Prima cosa, se non ll'hai già fatto, installa Raspbian (attualmente la versione Raspbian Stretch Lite).
Ho installato la versione senza Desktop in quanto lo uso sempre da remoto tramite SSH
Poi trasferisci l'immagine su SD, puoi usare Rufus.
L'utente di default è pi con password raspberry

Impostare la tastiera

Appena loggato assicurati che la tastiera abbia il layout italiano
Puoi procedere in 2 modi, usando raspi-config (non funziona da SSH) oppure da linea di comando editando /etc/default/keyboard.
Bash
sudo nano /etc/default/keyboard
imposta
Text
XKBMODEL="pc105"
XKBLAYOUT="it"
e riavvia il servizio
Bash
service keyboard-setup restart

Cambiare password

Imposta subito una password più sicura
Bash
passwd

Attivare SSH

Sulle nuove versioni il servizio SSH è disabilitato per default, abilitalo con:
Bash
sudo systemctl enable ssh
sudo systemctl start ssh
Per collegarti in SSH da Windows puoi usare Putty.

Impostare un IP statico

Per raggiungere più facilmente il Raspberry PI da remoto, in SSH, conviene impostare un IP fisso:
Bash
sudo nano /etc/dhcpcd.conf
ad esempio
Text
interface eth0
static ip_address=192.168.1.210/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254 1.1.1.1 8.8.8.8

Cambiare il nome

Se vuoi puoi cambiare il nome al Raspberry PI, puoi farlo editando questi due file:
Bash
sudo nano /etc/hostname
sudo nano /etc/hosts

Reboot

Riavvia per rendere attive tutte le modifiche:
Bash
sudo reboot

SSH

Adesso, da Windows, se vuoi, puoi collegarti da remoto in SSH con Putty
Bash
putty.exe -ssh pi@192.168.1.210
oppure tramite interfaccia grafica
PuttyPutty

Aggiornamento

Assicurati che il sistema sia aggiornato:
Bash
sudo apt-get update
sudo apt-get upgrade

installare .NET Core

Installa i prerequisiti
Bash
sudo apt-get install curl libunwind8 gettext apt-transport-https
poi il .Net Core
Bash
curl -sSL -o dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/dotnet-runtime-latest-linux-arm.tar.gz
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
Verifica sè installato correttamente
Bash
dotnet --info
Text
Host (useful for support):
  Version: 2.1.3-servicing-26708-02
  Commit:  cc9cf3686d

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.0.9 [/opt/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.3-servicing-26708-02 [/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Creare un progetto Core

Su una macchina su cui hai l'SDK, ad esempio Windows (ma anche Linux o Mac), crea una nuova cartella
DOS / Batch file
mkdir testcore && cd testcore
poi crea un progetto, in questo esempio un sito web basato su Angular 5
DOS / Batch file
dotnet new angular
compilalo per la versione Linux ARM
DOS / Batch file
dotnet publish -r linux-arm
la versione compilata si troverà in root-progetto\bin\Debug\netcoreapp2.1\linux-arm\publish\

Eseguire .NET Core su Raspberry

Crea una cartella nella tua home
Bash
cd ~
mkdir testcore && cd testcore
pwd
Da Windows copia i file su linux con l'utility pscp.exe
DOS / Batch file
D:\testcore>d:\Utility\PuTTY\PSCP.EXE -r .\bin\Debug\netcoreapp2.1\linux-arm\publish\*.* pi@192.168.1.210:/home/pi/testcore
su Linux dai i permessi di esecuzione all'applicazione all'utente corrente
Bash
chmod 755 ./testcore
Vedi chmod
mandalo in esecuzione con
Bash
./testcore
Text
Hosting environment: Production
Content root path: /home/pi/testcore
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
A questo punto se hai installato il sistema operativo nella versione desktop, puoi aprire la url http://localhost:5000.

Se invece stai accedendo da un computer remoto il sito non risulta raggiungile neanche dall'indirizzo http://192.168.1.210:5000.
Puoi provare ad eseguirlo con il parametro --urls specificando l'indirizzo IP dell Raspberry PI
Bash
./testcore --urls http://192.168.1.210:5000
a questo punto il sito risulta accessibile da remoto
Per determinare l'IP assegnato usa il comando ifconfig

In alternativa puoi modificare il file Program.cs per fare in modo che il server rimanga in ascolto su tutti gli IP aggiungendo:
C#
.UseKestrel(options =>
{
  options.Listen(System.Net.IPAddress.Any, 5000);
});
questo è il risultato finale
C#
namespace testcore
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseKestrel(options =>
                {
                options.Listen(System.Net.IPAddress.Any, 5000);
                });
    }
}

Le prove le ho fatte con un Raspberry PI versione 2 e 3 con Raspbian Stretch Lite senza Desktop
Potrebbe interessarti anche: