/
) von NFS gemountet wird, stellen Sie die NFS-Serverseite mit Ubuntu 20.04 von VirtualBox ein.
―― Manchmal scheint die NFS-Bereitstellung fehlzuschlagen (Timing?). Vielleicht sollten Sie also versuchen, einen Monitor anzuschließen?--Referenz: [WIE MAN RASPBIAN OHNE SD-CARD AUF EINER RASPBERRY PI ZERO LAUFEN ODER BOOTEN KANN](https://dev.webonomic.nl/how-to-run-or-boot-raspbian-on-a-raspberry- pi-zero-without-an-sd-card)
Oder besser gesagt, ich habe es so wie es ist auf Buster überprüft
ubuntu/focal64
(Ubuntu 20.04) | IP: 10.42.0.1/24
--RPi Zero (Möchten Sie mit W gehen?)2020-02-13-raspbian-buster-lite
IP: 10.42.0.14/24
Starten Sie PowerShell als Administrator (Win + x, a, ALT + y).
Chocolatey-Installation (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'))
Installieren Sie Virtualbox + Extension und stecken Sie es fest (kein Upgrade ohne Erlaubnis)
#choco pin remove --name virtualbox
#choco uninstall -y virtualbox -x
cinst -y virtualbox --params "/ExtensionPack /NoQuickLaunch /NoRegister /NoPath"
choco pin add --name virtualbox
Vagabund und andere Installation
cinst -y vagrant vscode
Starten Sie den Hostcomputer (Windows 10) einmal neu und starten Sie PowerShell erneut als Administrator.
Vagrant Plug-In Installation
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-disksize
Beenden Sie mit exit
Starten Sie PowerShell normal (Win + x, i)
Arbeitsordner: Erstellen Sie C: \ Vagrant \ u20 (> mkdir C: \ Vagrant \ u20
) und verschieben Sie ('> cd C: \ Vagrant \ u20`)
Erstellen Sie das folgende Vagrantfile mit VSCode (> Code C: \ Vagrant \ u20 \ Vagrantfile
).
Fügen Sie das Plug-In hinzu
 -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 #Das Virtualbox-Fenster wird geöffnet
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
Starten Sie die virtuelle Maschine mit "vagrant up"
Warten Sie eine Weile. Etwa 20 bis 30 Minuten?
Laden Sie das Bild "ubuntu / focal64" herunter
――Es dauert lange, diesen Kerl zu starten. Wenn ich den grub-Parameter ändere (entferne console = ttyS0
), scheint er gut zu sein (https://bugs.launchpad.net/cloud-images/+bug/1829625), also mache ich das mit vagabundierender Bereitstellung.
Laden Sie Tools und andere Informationen herunter
--Installieren Sie linux-modules-extra-
für den USB-Ethernet-Treiber
Einmal mit "Vagrant Halt" herunterfahren.
Ändern Sie das add
von vb.customize [" usbfilter "," add "...
in Vagrantfile in modify
. (Führen Sie alle drei aus. Nur zwei Bilder unten .. drei Ich versuche meine Augen zu ändern ...)

Beginnen Sie mit "vagrant up" und melden Sie sich mit "vagrant ssh" an
Melden Sie sich bei der virtuellen Maschine an
Erstellen Sie usbboot / rpiboot
cd ${HOME} && \
git clone --depth=1 https://github.com/raspberrypi/usbboot && \
cd usbboot && \
make && \
cd ${HOME}
Laden Sie Raspbian lite herunter und entpacken Sie es
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
Hängen Sie das Raspbian Lite-Image ein.
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 zum Starten
# 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
#Starten Sie ssh automatisch
cd /pi/root/etc/systemd/system/multi-user.target.wants
sudo ln -s /lib/systemd/system/ssh.service ssh.service
cd ${HOME}
#Bring 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
Ubuntu-Seiteneinstellungen
#NFS-Einstellungen
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
#Weisen Sie Ethernet eine feste IP für die USB-Verbindung zu.
#Der Gerätename kann usb0 oder enx5ea14f5dcfd2 sein..
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
#Anpassung
sudo netplan generate
sudo netplan apply
#IP-Weiterleitung aktiviert
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Beenden Sie mit exit
, virtuelle Maschine mit vagrant halt
, fahren Sie einmal herunter
RPi Zero stellt keine Verbindung her
Starten Sie PowerShell normal (Win + x, i)
Führen Sie Folgendes aus
#Zum Arbeitsordner wechseln
cd C:\Vagrant\u20
#Start der virtuellen Maschine
vagrant up
#Melden Sie sich bei der virtuellen Maschine an
vagrant ssh
Führen Sie Folgendes aus
#IP-Weiterleitungseinstellungen(Rette nicht)
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
#
#Raspbian Lite Image Mount
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
#
#Führen Sie rpiboot aus
cd ${HOME}
sudo usbboot/rpiboot -d /pi/boot/
Schließen Sie den RPi Zero USB-Anschluss (nicht den PWR des Netzteils) an Ihren PC an.
Es ist möglicherweise besser, RPi Zero an einen Fernseher anzuschließen und zu sehen, wie es aussieht.
Bete
--10.42.0.1: / pi / root on / type nfs ...
Legen Sie Raspbian auf SD und starten Sie es.
Beginnen Sie mit RPi Zero
Führen Sie Folgendes aus
## 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`
Eine Datei mit dem Namen "/ boot / initrd.img-4.19.97 +" wird erstellt. Kopieren Sie sie daher in die Datei "/ pi / boot / initrd.img" der VM.
Recommended Posts