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
SSHPoi 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
italianoPuoi procedere in 2 modi, usando
raspi-config (non funziona da SSH) oppure da linea di comando editando
/etc/default/keyboard.
sudo nano /etc/default/keyboard
imposta
XKBMODEL="pc105"
XKBLAYOUT="it"
e riavvia il servizio
service keyboard-setup restart
Cambiare password
Imposta subito una password più sicura
Attivare SSH
Sulle nuove versioni il servizio
SSH è disabilitato per default, abilitalo con:
sudo systemctl enable ssh
sudo systemctl start ssh
Impostare un IP statico
Per raggiungere più facilmente il
Raspberry PI da remoto, in
SSH, conviene impostare un IP fisso:
sudo nano /etc/dhcpcd.conf
ad esempio
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:
sudo nano /etc/hostname
sudo nano /etc/hosts
Reboot
Riavvia per rendere attive tutte le modifiche:
SSH
Adesso, da
Windows, se vuoi, puoi collegarti da remoto in
SSH con
Puttyputty.exe -ssh pi@192.168.1.210
oppure tramite interfaccia grafica
PuttyAggiornamento
Assicurati che il sistema sia aggiornato:
sudo apt-get update
sudo apt-get upgrade
installare .NET Core
Installa i prerequisiti
sudo apt-get install curl libunwind8 gettext apt-transport-https
poi il
.Net Corecurl -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
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
mkdir testcore && cd testcore
poi crea un progetto, in questo esempio un sito web basato su
Angular 5
compilalo per la versione
Linux ARMdotnet 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
cd ~
mkdir testcore && cd testcore
pwd
Da
Windows copia i file su linux con l'utility
pscp.exeD:\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
mandalo in esecuzione con
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./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:
.UseKestrel(options =>
{
options.Listen(System.Net.IPAddress.Any, 5000);
});
questo è il risultato finale
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