--Connectez Raspberry Pi Zero à Internet avec un seul câble USB
/
) est montée par NFS, définissez le côté serveur NFS avec Ubuntu 20.04 de VirtualBox.
――Parfois, le montage NFS semble échouer (timing?), Alors peut-être devriez-vous essayer de connecter un moniteur?--Référence: [COMMENT COURIR OU BOOTER RASPBIAN SUR UNE FRAMBOISE PI ZERO SANS CARTE SD](https://dev.webonomic.nl/how-to-run-or-boot-raspbian-on-a-raspberry- pi-zero-without-an-sd-card)
Ou plutôt, je l'ai vérifié pour Buster tel quel
ubuntu/focal64
(Ubuntu 20.04) | IP: 10.42.0.1/24
--RPi Zero (Voulez-vous aller avec W?)2020-02-13-raspbian-buster-lite
IP: 10.42.0.14/24
Démarrez PowerShell en tant qu'administrateur (Win + x, a, ALT + y)
Installation Chocolatey (https://chocolatey.org/install)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Installez Virtualbox + Extension et épinglez-le (ne pas mettre à niveau sans autorisation)
#choco pin remove --name virtualbox
#choco uninstall -y virtualbox -x
cinst -y virtualbox --params "/ExtensionPack /NoQuickLaunch /NoRegister /NoPath"
choco pin add --name virtualbox
vagabond et autre installation
cinst -y vagrant vscode
Redémarrez une fois la machine hôte (Windows 10) et redémarrez PowerShell en tant qu'administrateur.
Installation du plug-in Vagrant
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-disksize
Quittez avec ʻexit`
Démarrez PowerShell normalement (Win + x, i)
Dossier de travail: Créez C: \ Vagrant \ u20 (> mkdir C: \ Vagrant \ u20
), déplacez ('> cd C: \ Vagrant \ u20`)
Créez le Vagrantfile
suivant avec VSCode (> code C: \ Vagrant \ u20 \ Vagrantfile
).
Ajoutez le plug-in
![Image.png](https: // qiita) -image-store.s3.ap-northeast-1.amazonaws.com/0/75594/3817fecb-f4e0-65ee-d19d-4dce4078da26.png)
# -*- mode: ruby -*-
# vi: set ft=ruby :
VB_NAME="u2004"
VM_MEMORY=1024
VM_CORES=2
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.boot_timeout = 6000
config.vm.network "public_network"
config.vm.provider "virtualbox" do |vb|
#vb.gui = true #La fenêtre Virtualbox s'ouvre
vb.name = VB_NAME
vb.memory = VM_MEMORY
vb.cpus = VM_CORES
vb.customize ['modifyvm', :id, '--usb', 'on']
vb.customize ['modifyvm', :id, '--usbehci', 'on' ] # USB 2.0 controller
vb.customize ["modifyvm", :id, "--usbxhci", 'off' ] # USB 3.0 controller
vb.customize ["usbfilter", "add", "0", "--target", :id, '--name', "Broadcom BCM2708 Boot","--vendorid","0a5c","--productid","2763", "--remote", "no"] #
vb.customize ["usbfilter", "add", "1", "--target", :id, '--name', "Broadcom BCM2710 Boot","--vendorid","0a5c","--productid","2764", "--remote", "no"] #
vb.customize ["usbfilter", "add", "2", "--target", :id, '--name', "Linux with usb RNDIS/Ethernet Gadget","--vendorid","0525","--productid","a4a2", "--remote", "no"] #
end
config.vm.provision "shell", privileged: true, inline: <<-SHELL
sed -i -e 's/ console=ttyS0//g' /etc/default/grub.d/50-cloudimg-settings.cfg
update-grub
apt-get update
apt install -y linux-modules-$(uname -r) linux-modules-extra-$(uname -r)
apt install -y build-essential libusb-1.0-0-dev git unzip nfs-kernel-server
SHELL
end
Démarrez la machine virtuelle avec vagrant up
Attendez un moment. Environ 20 à 30 minutes?
--ʻUbuntu / focal64Téléchargement d'image «Il faut beaucoup de temps pour démarrer ce type. Si je change le paramètre grub (enlevez
console = ttyS0), cela semble être bon (https://bugs.launchpad.net/cloud-images/+bug/1829625), donc je le fais avec des dispositions vagabondes. --Télécharger les outils et autres informations --Installez
linux-modules-extra-` pour le pilote USB Ethernet
Arrêtez-vous une fois avec "arrêt vagabond".
Changez vb.customize [" usbfilter "," add "...
ʻadd to
modify` dans Vagrantfile. (Faites les trois. Seulement deux images ci-dessous .. trois J'essaye de changer mes yeux ...)
![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/c33e2e68-3a16 -5f13-4567-b565bd87ead8.png)
Commencez par vagrant up
, connectez-vous avec vagrant ssh
Connectez-vous à la machine virtuelle
Construisez usbboot / rpiboot
cd ${HOME} && \
git clone --depth=1 https://github.com/raspberrypi/usbboot && \
cd usbboot && \
make && \
cd ${HOME}
Téléchargez et décompressez Raspbian lite
cd ${HOME} && \
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2020-02-14/2020-02-13-raspbian-buster-lite.zip && \
unzip 2020-02-13-raspbian-buster-lite.zip
Montez l'image Raspbian Lite.
sudo losetup -P /dev/loop5 ${HOME}/2020-02-13-raspbian-buster-lite.img
sudo mkdir -p /pi/{boot,root}
sudo mount /dev/loop5p1 /pi/boot
sudo mount /dev/loop5p2 /pi/root
Patch pour commencer
# Edit /pi/boot/config.txt
grep -e '^dtoverlay=dwc2$' /pi/boot/config.txt || echo -e "# enable OTG\ndtoverlay=dwc2\n# set initramfs\ninitramfs initrd.img followkernel" | sudo tee -a /pi/boot/config.txt
#cmdline.txt
#console=serial0,115200 console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
echo 'otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=10.42.0.1:/pi/root rw ip=10.42.0.14:10.42.0.1::255.255.255.0:pi:usb0:static elevator=deadline modules-load=dwc2,g_ether fsck.repair=yes rootwait g_ether.host_addr=5e:a1:4f:5d:cf:d2' | sudo tee /pi/boot/cmdline.txt
cat <<'EOF' | sudo tee /pi/root/etc/fstab
proc /proc proc defaults 0 0
10.42.0.1:/pi/root / nfs defaults 0 1
#PARTUUID=738a4d67-01 /boot vfat defaults 0 2
#PARTUUID=738a4d67-02 /
EOF
# /pi/root/etc/dhcpcd.conf
grep -e '^interface usb0 #mt08$' /pi/root/etc/dhcpcd.conf || echo -e 'interface usb0 #mt08\nstatic ip_address=10.42.0.14/24\nstatic routers=10.42.0.1\nstatic domain_name_servers=8.8.8.8' | sudo tee -a /pi/root/etc/dhcpcd.conf
#Démarrer ssh automatiquement
cd /pi/root/etc/systemd/system/multi-user.target.wants
sudo ln -s /lib/systemd/system/ssh.service ssh.service
cd ${HOME}
#Apportez initrd.
cd ${HOME} && \
wget "https://github.com/mt08xx/files/raw/master/2020-0512-1_RPIZero_initrd.img-4.19.97%2B" && \
sudo cp 2020-0512-1_RPIZero_initrd.img-4.19.97+ //pi/boot/initrd.img
Paramètres latéraux d'Ubuntu
#Paramètres NFS
grep 10.42.0 /etc/exports || echo "/pi/root 10.42.0.14(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo systemctl restart nfs-server.service
sudo exportfs -rav
#Attribuez une adresse IP fixe à Ethernet pour la connexion USB.
#Le nom de l'appareil peut être usb0 ou enx5ea14f5dcfd2..
cat << 'EOF' | sudo tee /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp0s3:
dhcp4: true
match:
macaddress: 02:c2:ed:de:cc:93
set-name: enp0s3
usb0:
dhcp4: no
dhcp6: no
addresses: [10.42.0.1/24]
enx5ea14f5dcfd2:
dhcp4: no
dhcp6: no
addresses: [10.42.0.1/24]
version: 2
EOF
#Adaptation
sudo netplan generate
sudo netplan apply
#Transfert IP activé
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Quittez avec ʻexit, machine virtuelle avec
vagrant halt`, arrêtez une fois
RPi Zero ne se connecte pas
Démarrez PowerShell normalement (Win + x, i)
Exécutez les opérations suivantes
#Déplacer vers le dossier de travail
cd C:\Vagrant\u20
#Démarrage de la machine virtuelle
vagrant up
#Connectez-vous à la machine virtuelle
vagrant ssh
Exécutez les opérations suivantes
#Paramètres de transfert IP(Ne pas enregistrer)
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
#
#Monture d'image Raspbian Lite
sudo losetup -P /dev/loop5 ${HOME}/2020-02-13-raspbian-buster-lite.img
sudo mkdir -p /pi/{boot,root}
sudo mount /dev/loop5p1 /pi/boot
sudo mount /dev/loop5p2 /pi/root
#
#Exécutez rpiboot
cd ${HOME}
sudo usbboot/rpiboot -d /pi/boot/
Connectez le port USB RPi Zero (et non l'alimentation PWR) à votre PC.
Il peut être préférable de connecter le RPi Zero à un téléviseur et de voir à quoi il ressemble.
Priez
--10.42.0.1: / pi / root sur / type nfs ...
Mettez Raspbian sur SD et démarrez-le.
Commencez avec RPi Zero
Exécutez les opérations suivantes
## Make initramfs on "RPi-Zero"
sudo apt install -y initramfs-tools
grep -e '^g_ether$' /etc/initramfs-tools/modules || echo -e 'g_ether\nlibcomposite\nu_ether\nudc-core\nusb_f_rndis\nusb_f_ecm' | sudo tee -a /etc/initramfs-tools/modules
sudo update-initramfs -c -k `uname -r`
Un fichier appelé / boot / initrd.img-4.19.97 +
sera créé, donc copiez-le dans le répertoire / pi / boot / initrd.img
de la VM.
Recommended Posts