/
) 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.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 #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 ...)
![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/c33e2e68-3a16 -5f13-4567-b565bd87ead8.png)
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