Raspios Arm 64によるラズベリーパイ3 B + ISCSIブート
15777 ワード
Raspios 64ビットは最近行ったGA そして、私は最近私のラズベリーパイ3 B +とラズベリーパイゼロ2 Wデバイスで見つかりました.
今すぐディスクレスブートを再訪する素晴らしい時間のように感じている.
これは私が使っているものです.
64ビットインストール
用途
rpi-imager
そして、64ビットRaspiosのGAバージョンをインストールしてください!ブートモードを有効にする
私が持っているデバイスは4 - 6歳です.私は新しいものが既にこのセットを持っているかどうかわからない.
このコマンドを実行します.
vcgencmd otp_dump | grep 17:
これは私のOTPダンプがUSBRACKブートモードを有効にする前に見えたものです.17:1020000a
出力がこのように見えるなら、最新のファームウェアを入手してください.sudo rpi-update
私は少し心配していたrpi-update
, しかし、私はまた、私自身のメモに従います. *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Backing up firmware
*** Backing up modules 5.10.63-v8+
#############################################################
WARNING: This update bumps to rpi-5.15.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?t=322879
'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.
DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 173 100 173 0 0 678 0 --:--:-- --:--:-- --:--:-- 678
100 123M 0 123M 0 0 4052k 0 --:--:-- 0:00:31 --:--:-- 3014k
*** Updating firmware
*** Updating kernel modules
*** depmod 5.15.21-v8+
*** depmod 5.15.21-v7+
*** depmod 5.15.21-v7l+
*** depmod 5.15.21+
*** Updating VideoCore libraries
*** Using SoftFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to fbcab73d5a20f592aa9f6b0e364757ef131dae27
*** A reboot is needed to activate the new firmware
からの再起動後rpi-update
私たちはまだUSBRANTブートモードを有効にする必要があります.この行を
/boot/config.txt
それは問題ではないが、独自の行が必要です.私はそれを頂上に置きました.program_usb_boot_mode=1
その後、再びデバイスを再起動します.さて、OTPダンプは次のようになります.17:3020000a
OTPダンプが設定されているので、program_usb_boot_mode=1
ライン/boot/config.txt
ファイル.再起動する必要はありませんが、行を削除して再起動すると、OTPダンプにはまだUSBRANTブートモードが有効になっていることがわかります.( iSCSIモジュールをinitramfsツールで有効にする)
これらは私が撮ったステップです.
# Update repositories
sudo apt update
# Install available upgrades
sudo apt upgrade -y
# Install open-iscsi
sudo apt install open-iscsi
# Start open-iscsi to create the configs that we will use later
sudo systemctl start open-iscsi
# Create initramfs flag file for the iscsi module
sudo touch /etc/iscsi/iscsi.initramfs
# Create a new initramfs image that includes the iscsi module from the current kernel
sudo update-initramfs -v -k `uname -r` -c
これで、initrd.img
あなたの/boot
ディレクトリ.ls -latr /boot/initrd.img*
出力は次のようになります.-rwxr-xr-x 1 root root 10487750 Feb 11 10:59 /boot/initrd.img-5.15.21-v8+
我々は、この新しいを参照しますinitrd.img
後でファイル!DFTPサーバへのTFTPオプションの追加
この時点で、デバイス上のブートローダは、ネットワークブートを受け入れるでしょう.
TFTPサーバを指すようにDHCPサーバを設定します.DHCPプロトコル
Option 66
TFTPサーバ用.基本的には、あなたのDHCPクライアント(Raspberry PI 3 b +)をどのサーバーに次の接続を指示し、さらに指示を取得します.TFTPサーバ
raspberry pi 3 b +のネットワークブートプロセスはpxeのようです.したがって、少しカスタムセットアップが必要です.これは、予め知られている装置のシリアル番号を必要とする.
デバイスのシリアル番号を取得します.
grep Serial /proc/cpuinfo
私の場合は以下のようになります.Serial : 000000002edd5668
TFTPサーバーで、デバイスのディレクトリを作成します.私のqnapサーバの場合、tftp rootは/share/tftp
でも変数を使いますTFTP_ROOT
.# Set the implementation specific TFTP_ROOT
export TFTP_ROOT=/share/tftp
# Create directory using the device serial number, without leading 0s
sudo mkdir $TFTP_ROOT/2edd5668
さて、TFTPサーバから/boot
新しいカーネルを含むラズベリーパイのパーティション.sudo scp -r pi@2edd5668:/boot/* $TFTP_ROOT/2edd5668/
作業をチェックしたい場合、ディレクトリは次のようになります.COPYING.linux* bcm2708-rpi-cm.dtb* bcm2710-rpi-3-b-plus.dtb* bcm2711-rpi-4-b.dtb* cmdline.txt* fixup4db.dat* initrd.img-5.15.21-v8+* kernel8.img* start4db.elf*
LICENCE.broadcom* bcm2708-rpi-zero-w.dtb* bcm2710-rpi-3-b.dtb* bcm2711-rpi-400.dtb* config.txt* fixup4x.dat* issue.txt* overlays/ start4x.elf*
bcm2708-rpi-b-plus.dtb* bcm2708-rpi-zero.dtb* bcm2710-rpi-cm3.dtb* bcm2711-rpi-cm4.dtb* fixup.dat* fixup_cd.dat* kernel.img* start.elf* start_cd.elf*
bcm2708-rpi-b-rev1.dtb* bcm2709-rpi-2-b.dtb* bcm2710-rpi-zero-2-w.dtb* bcm2711-rpi-cm4s.dtb* fixup4.dat* fixup_db.dat* kernel7.img* start4.elf* start_db.elf*
bcm2708-rpi-b.dtb* bcm2710-rpi-2-b.dtb* bcm2710-rpi-zero-2.dtb* bootcode.bin* fixup4cd.dat* fixup_x.dat* kernel7l.img* start4cd.elf* start_x.elf*
今、これはPXEのようなので、我々はコピーする必要がありますbootcode.bin
にTFTP_ROOT
sudo cp $TFTP_ROOT/2edd5668/bootcode.bin $TFTP_ROOT/
この時点で、SDカードがインストールされなくても、ラズベリーパイ3 B +は以下の通りです.$TFTP_ROOT/2edd5668/
正確に我々のデバイスのSDカードにあるものと一致します.私たちは、新しいISCSI対応カーネルを使用するようにデバイスに伝える必要があります.私は下に次の行を追加
$TFTP_ROOT/2edd5668/config.txt
, しかし、あなたの特定を使用する必要がありますinitrd.img
バージョン.initramfs initrd.img-5.15.21-v8+ followkernel
デバイスのiscsi lunを作成する
簡単にするために、私は32 GBのLUNを作成しています.私は、それが私が使っていたSDCARDのサイズであるので、私は32 GBを選びました.また、私はLunとISCIターゲットの命名にラズベリーパイのシリアル番号を使用しました.
あなたの新しいISCSI Lunがアクセス可能であることを確認するために、我々はそれをラズベリーパイ3 b +から接続します.
# set the IP address of the ISCSI server
export ISCSI_IP=192.168.1.248
#
sudo iscsiadm -m discovery -t sendtargets -p $ISCSI_IP | grep 2edd5668
出力には、新しいISCSIターゲットが含まれます.192.168.1.248:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c
Targetstra IQNの上からiqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c
そして、それを格納する環境変数を作成します.export TARGET_IQN=iqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c
ISCSI Lunをラズベリーパイに取り付ける
ISCSI LUNへのログイン、この例はCHAP認証を使用していません.
sudo iscsiadm -m node -l -T $TARGET_IQN -p $ISCSI_IP
成功は次のようになります.Logging in to [iface: default, target: iqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c, portal: 192.168.1.248,3260]
Login to [iface: default, target: iqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c, portal: 192.168.1.248,3260] successful.
新しいiSCSI接続を有効にしますsudo fdisk -l
ラズベリーパイ3 B +から、このようなものを探してくださいDisk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: iSCSI Storage
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 1048576 bytes / 1048576 bytes
Lunが現れている/dev/sda
この場合# Format the LUN attached as /dev/sda to ext4
sudo mkfs.ext4 /dev/sda
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 8388608 4k blocks and 2097152 inodes
Filesystem UUID: f581fa52-f7ea-4c87-91cc-e236d64f63a6
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
# Get the UUID of the LUN
sudo blkid /dev/sda
/dev/sda: UUID="f581fa52-f7ea-4c87-91cc-e236d64f63a6" BLOCK_SIZE="4096" TYPE="ext4"
# Mount the new disk
sudo mount /dev/sda /mnt
既存のインストールをマウントLUNにコピーします
このステップには多少時間がかかる.我々はすべてのファイルをコピーしている
/
ラズベリーパイ3 b +上のSDカードのネットワーク接続LUNへの分配.ブート中にマウントされるディレクトリを除く.# Copy / partition to /mnt
sudo rsync -avhP --exclude /boot --exclude /proc --exclude /sys --exclude /dev --exclude /mnt / /mnt/
# Create directories that are mounted during boot
sudo mkdir /mnt/{dev,proc,sys,boot,mnt}
/etc/fstabからSDカードの詳細を削除する
cat /mnt/etc/fstab
以前proc /proc proc defaults 0 0
PARTUUID=9633a3a2-01 /boot vfat defaults 0 2
PARTUUID=9633a3a2-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
行を削除するPARTUUID
これはSDカードを参照している.その後
proc /proc proc defaults 0 0
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
TFTPサーバ上のカーネル設定を更新する
ファイルシステムを更新しました.ネットワーク上にロードされているカーネルを再訪問する必要があります.我々はそれをマウントする方法を教えてください
/
経由でファイルシステム.raspberry pi 3 b +デバイスを識別するISCSIイニシエータは
/etc/iscsi/initiatorname.iscsi
sudo cat /etc/iscsi/initiatorname.iscsi
## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator. The InitiatorName must be unique
## for each iSCSI initiator. Do NOT duplicate iSCSI InitiatorNames.
InitiatorName=iqn.1993-08.org.debian:01:2ccb20a316
TFTPサーバでは、$TFTP_ROOT/2edd5668/cmdline.txt
ファイル.ISCSIドライブをマウントするためにこれらの詳細を追加/更新します.
console=serial0,115200 console=tty1 root=PARTUUID=9633a3a2-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_enable=cpuset cgroup_enable=memory cgroup_enable=pids cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
その後console=serial0,115200 console=tty1 root=PARTUUID=9633a3a2-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_enable=cpuset cgroup_enable=memory cgroup_enable=pids cgroup_memory=1 systemd.unified_cgroup_hierarchy=0 ISCSI_INITIATOR=iqn.1993-08.org.debian:01:2ccb20a316 ISCSI_TARGET_NAME=iqn.2004-04.com.qnap:ts-231p:iscsi.2edd5668.21250c ISCSI_TARGET_IP=192.168.1.248 ISCSI_TARGET_PORT=3260 rw
This all needs to be on a single line.
準備ができて再起動!
ラズベリーパイ3 B +装置から:
# Unmount the drive
sudo umount /mnt
# Disconnect from ISCSI
sudo iscsiadm -m node --logout all
# Shutdown
sudo shutdown now
SDカードを削除し、デバイスを再起動!概要
あなたが細心の注意を払っていたならば、あなたは
cmdline.txt
また、デフォルトではデフォルトの設定もありました.そこにあるk3s
よく走る.この記事は、ラズベリーパイ3 b +に非常に特異的で、ISCSIを使用しています.ラズベリーパイ4を使用したフォローアップ例を探してください.
すぐに、私はRaspberry PI 3 B +とRaspberry
arkade
and k3sup
Kubernetes抽象化層をこれらのHOMELABデバイス全体に設定する.謝辞と引用
Reference
この問題について(Raspios Arm 64によるラズベリーパイ3 B + ISCSIブート), 我々は、より多くの情報をここで見つけました https://dev.to/dashaun/raspberry-pi-3b-iscsi-boot-with-raspios-arm64-a2aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol