Come installare .NET Core su Raspberry
Su Raspberry PI con Rasbian è possibile installare il runtime della versione Arm32 di .Net Core.
Puoi procedere in 2 modi, usando raspi-config (non funziona da SSH) oppure da linea di comando editando /etc/default/keyboard.
imposta
e riavvia il servizio
ad esempio
oppure tramite interfaccia grafica
poi il .Net Core
Verifica sè installato correttamente
poi crea un progetto, in questo esempio un sito web basato su Angular 5
compilalo per la versione Linux ARM
la versione compilata si troverà in root-progetto\bin\Debug\netcoreapp2.1\linux-arm\publish\
Da Windows copia i file su linux con l'utility pscp.exe
su Linux dai i permessi di esecuzione all'applicazione all'utente corrente
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
a questo punto il sito risulta accessibile da remoto
In alternativa puoi modificare il file Program.cs per fare in modo che il server rimanga in ascolto su tutti gli IP aggiungendo:
questo è il risultato finale
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 italianoPuoi 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
Text
XKBMODEL="pc105"
XKBLAYOUT="it"
Bash
service keyboard-setup restart
Cambiare password
Imposta subito una password più sicuraBash
passwd
Attivare SSH
Sulle nuove versioni il servizio SSH è disabilitato per default, abilitalo con:Bash
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:Bash
sudo nano /etc/dhcpcd.conf
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 PuttyBash
putty.exe -ssh pi@192.168.1.210
Aggiornamento
Assicurati che il sistema sia aggiornato:Bash
sudo apt-get update
sudo apt-get upgrade
installare .NET Core
Installa i prerequisitiBash
sudo apt-get install curl libunwind8 gettext apt-transport-https
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
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 cartellaDOS / Batch file
mkdir testcore && cd testcore
DOS / Batch file
dotnet new angular
DOS / Batch file
dotnet publish -r linux-arm
Eseguire .NET Core su Raspberry
Crea una cartella nella tua homeBash
cd ~
mkdir testcore && cd testcore
pwd
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
Bash
chmod 755 ./testcore
Vedi chmod
mandalo in esecuzione conBash
./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.
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
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);
});
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