Karaniwan kang nagsisimula ng Raspberry Pi mula sa isang (micro) SD card. Ngunit kung minsan ay hindi ito maginhawa. Kamakailan lamang, ang mga developer ng pamilya ng mga minicomputer ay nagdagdag ng dalawang bagong boot mode: USB at Network. Sa USB mode, sisimulan mo ang Raspberry Pi mula sa isang operating system sa isang USB stick o hard drive na ikinonekta mo sa pamamagitan ng USB.
Sa network mode, hindi mo na kailangan ng lokal na storage device: dina-download ng Raspberry Pi ang operating system nito sa network mula sa isa pang computer. Sa ganitong paraan, madali mo ring ma-boot ang maraming Raspberry Pis sa pamamagitan ng isang operating system sa isang sentral na computer. Kung ia-update mo ang central operating system na iyon, lahat ng iyong Raspberry Pis ay awtomatikong tatakbo sa pinakabagong bersyon.
01 Mga Pang-eksperimentong Boot Mode
Ang mga bagong boot mode ay eksperimental at binuo para sa Raspberry Pi 3. Ang boot code na kailangan para dito ay nasa BCM2837: ang processor ng Raspberry Pi 3. Kung mayroon kang Raspberry Pi 1, 2 o Zero, maaari mo ring gamitin ang mga bagong boot mode, ngunit sa paikot-ikot na paraan: mag-format ng sd card na may fat32, kopyahin ang file bootcode.bin sa card at i-boot ang iyong Pi mula sa card na ito. Maaaring hindi iyon kumpleto nang walang SD card, ngunit maaari mong i-boot ang iyong Pi mula sa USB o sa network.
02 Mga posibleng problema sa USB
Ang pag-boot mula sa USB ay hindi palaging gumagana. Halimbawa, masyadong mabagal ang pag-on ng ilang USB stick. Ang mga panlabas na hard drive ay hindi rin palaging tumutugon sa loob ng dalawang segundo, ang oras na naghihintay ang boot code bilang default. Maaari mong taasan ang timeout na iyon sa limang segundo, ngunit ang ilang mga drive ay hindi pa handa. Ang iba pang mga USB stick ay may napakaspesipikong mga kinakailangan para sa protocol ng komunikasyon, na hindi natutugunan ng Raspberry Pi 3 boot code (limitado sa 32 kB ROM). Kaya maaaring kailanganin mong subukan ang ilang mga disc.
03 Pag-upgrade ng Firmware
Ipinapalagay namin na nagpapatakbo ka ng Raspbian sa iyong Raspberry Pi. Kung hindi, mag-download ng isang imahe at ilagay ito sa isang SD card na may programang Win32DiskImager at i-boot ang Pi mula dito. Una, i-refresh ang lahat ng mga repository na may sudo apt-get update. Kung nagpapatakbo ka ng Raspbian Lite (ang bersyon na walang graphical na interface), tumakbo muna sudo apt-get install rpi update dahil ang minimal na bersyon ng Raspbian ay walang rpi-update na pakete. Pagkatapos ay i-update ang firmware mula sa 'next' branch na may sudo BRANCH=next rpi-update.
04 Paganahin ang USB Mode
Buksan ang boot configuration file gamit ang sudo nano /boot/config.txt at idagdag ang utos program_usb_boot_mode=1 hanggang dulo. I-save ang file gamit ang Ctrl+O at lumabas sa nano gamit ang Ctrl+X. I-restart ang iyong Pi gamit ang sudo reboot, at pagkatapos ng pag-reboot, tiyaking naka-enable ang USB mode. Gawin mo iyon gamit ang utos vcgencmd otp_dump | grep 17:, na dapat magbalik ng numerong nagtatapos sa 0x3020000a. Pagkatapos ay buksan muli ang boot configuration file at tanggalin ang command program_usb_boot_mode=1, para hindi mo sinasadyang ma-enable ang USB boot mode sa isa pang Pi kung saan mo ilalagay ang SD card na ito.
05 Paghahati ng USB Storage
Ngayon ikonekta ang iyong USB storage device sa iyong Pi. Hatiin ang device na ito gamit ang sudo humiwalay /dev/sda. Gumawa ng bagong partition table na may mktable msdos at kumpirmahin sa oo na gusto mong sirain ang lahat ng data sa disk. Pagkatapos ay lumikha ng isang 100 megabyte fat32 partition na may mkpart pangunahing taba32 0% 100M at isang ext4 partition na sumasakop sa natitirang bahagi ng disk mkpart primary ext4 100M 100%. Tingnan ang mga pagbabago na may naka-print at malapit na pinaghiwalay huminto. Pagkatapos ay lumikha ng boot file system gamit ang sudo mkfs.vfat -n BOOT -F 32 /dev/sda1 at ang root file system na may sudo mkfs.ext4 /dev/sda2.
06 Raspbian na kopya
I-install ang program rsync gamit ang sudo apt-get install rsync. Pagkatapos ay lumikha ng isang bagong direktoryo na may sudo mkdir /mnt/usb at i-mount ang ext4 file system ng usb storage dito gamit ang sudo mount /dev/sda2 /mnt/usb/. Pagkatapos ay lumikha ng isang boot directory na may sudo mkdir /mnt/usb/boot at i-mount ang boot filesystem dito gamit ang sudo mount /dev/sda1 /mnt/usb/boot/. Ngayon, kopyahin ang Raspbian system na iyong pinapatakbo mula sa SD card patungo sa file system sa iyong USB storage. Gawin mo iyon gamit ang utos sudo rsync -ax --progress / /boot /mnt/usb. Mangyaring maging mapagpasensya dahil maaaring tumagal ito ng ilang sandali.
07 Chroot
Naglalaman na ngayon ang USB storage ng kopya ng iyong tumatakbong Raspbian, ngunit hindi dapat magkapareho ang lahat. Halimbawa, ang bagong sistema ay nangangailangan ng iba't ibang mga ssh key. Samakatuwid, pumunta sa USB storage gamit ang cd /mnt/usb at i-mount ang ilang mga espesyal na filesystem na may sudo mount --bind /dev dev, sudo mount --bind /sys sys at sudo mount --bind /proc proc. Pagkatapos ay ipasok ang a chrome (palitan ang ugat) sa sudo chroot.. Ang lahat ng command na iyong ipapatupad ngayon ay isasagawa sa system sa USB storage, wala na sa system sa SD card.
08 Bagong ssh key
Root user ka na ngayon sa chroot. Una, tanggalin ang mga umiiral na ssh key dahil iyon ang mga kinopya namin mula sa system ng sd card. Gawin mo iyon sa rm /etc/ssh/ssh_host*. Pagkatapos ay bumuo ng mga bagong ssh key sa pamamagitan ng muling pagsasaayos ng OpenSSH server gamit ang dpkg-reconfigure openssh-server. Pagkatapos ay lumabas sa chroot gamit ang labasan. Ang lahat ng command na gagawin mo ngayon ay isasagawa muli sa system sa SD card. Pagkatapos ay i-unmount ang mga espesyal na filesystem na may sudo umount dev, sudo umount sys at sudo umount proc.
09 I-customize ang Root File System
Ngayon siguraduhin na ang Pi ay gumagamit ng root file system sa USB storage sa halip na ang isa sa SD card. Para diyan, binago mo ang file /boot/cmdline.txt sa may sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/usb/boot/cmdline.txt. Gawin ang parehong sa file /etc/fstab: sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/usb/etc/fstab. Pagkatapos ay pumunta sa iyong home directory na may cd, i-unmount ang mga filesystem mula sa usb storage na may sudo umount /mnt/usb/boot at sudo umount /mnt/usb at i-off ang Pi na may sudo poweroff. I-unplug ang power cable, alisin ang SD card at isaksak muli ang power cable. Kung magiging maayos ang lahat, magbo-boot na ngayon ang iyong Pi mula sa iyong USB storage.