上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/RaspberryPi/ネットワークブート
のバックアップソース(No.1)
資料室
PC
/
RaspberryPi
/
ネットワークブート
のバックアップソース(No.1)
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
現在との差分
を表示
PC/RaspberryPi/ネットワークブート
へ行く。
Next »
* ネットワークブート [#bfc56539] Raspberry Piでネットワークにロードするファイル(カーネルやルートファイル)を置いて,それをロードしてブートさせてみる。 Pi,Pi2B,Pi zeroでネットワークブートさせるには,U-Bootを使う方法があります。~ SDカードのFAT/FAT32パーテーションにu-boot.binを置いて,通常はkernel.imgをロード・実行する代わりにU-Bootを実行して,ネットワーク越しにカーネルやルートファイルを読み込むことで,Raspbianを起動させる。 普通のPXEブートでは,tftpでカーネルをロードして実行させるようにするらしいが,tftpだとロードは出来たが実行できなかったので,カーネルもルートファイルシステムもnfsでロードするようにしてみた。 * U-Bootの用意 [#def4f8a2] U-Bootをデフォルトのブートローダーの代わりに使ってみます。 使用しているRaspbianが入ったMicroSDカードのFAT/FAT32パーテーション(/boot)に,ビルドしたu-boot.binをコピーする。~ /boot/config.txtで,u-boot.binを使うように変更します。/boot/config.txtの最後の変に, kernel=u-boot.bin を追加する。~ これでリブートすると,デフォルトだとkernel.img(Raspberry PiBの場合)をロードされる代わりにU-Bootがブートローダーとして起動するようになる。 ** U-Bootスクリプトファイルを作成 [#h234f4f2] ''uboot.scr''を作成する。 set serverip 192.168.24.XXX <-- nfsサーバーのIPアドレス set rootpath /var/exports/raspbian set kernelfile /boot/kernel.img set fbwidth 1824 set fbheight 984 set autoload "no" set bootfile "${rootpath}${kernelfile}" set bootarg_def "dma.dmachans=0x7f35 bcm2708_fb.fbwidth=${fbwidth} \ bcm2708_fb.fbheight=${fbheight} bcm2708.boardrev=0x10 smsc95xx.macaddr=${usbethaddr} \ bcm2708.disk_led_gpio=47 bcm2708.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 \ vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000" set bootarg_opt "dwc_otg.lpm_enable=0 ip=dhcp console=ttyAMA0,115200 console=tty1 \ kgdboc=ttyAMA0,115200 root=/dev/nfs nfsroot=${serverip}:${rootpath} \ elevator=deadline rootwait" set bootargs "${bootarg_def} ${bootarg_opt}" set net_start "usb start; dhcp" set load_kernel "nfs" run net_start run load_kernel usb stop bootz このようにして,nfsサーバーからkernel.imgをロードするようにして,カーネルにルートファイルシステムの場所をパラメータで渡すようにする。 作成したboot.scrをU-Bootが認識できるファイルに変換します。~ これには,mkimageコマンドを使います。U-Bootをビルドした時にこのコマンドもビルドされる。~ $ sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "MMC Boot" -d boot.scr boot.scr.uimg 作成された''boot.scr.uimg''をMicroSDカードの/bootにコピーする。 これで,Raspberry PiをリブートするとU-Bootを使ってRaspbianが起動するはず。 * nfsサーバーの設定 [#q82ea898] /etc/exportsでNFSエクスポートの設定をする。~ /etc/exportsファイルに追加する。~ /var/exports/raspbian *(rw,no_root_squash,no_subtree_check) nfsを再起動する。 /var/exports/raspbianには,Raspbianの/にあるファイルをすべてコピーする。(mmcblk0p1とmmcblk0p2の両方)~ どうにかして,Piのmmcblk0p2を/var/exports/raspbianにコピーする。 ** カーネルとルートファイルを用意する [#s9323785] nfsを使ってサービスするカーネルとルートファイルをなんとかして用意する。 イメージファイルからコピーする場合は,以下のようにする。 現在のPiのMicroSDカードを,ディスクイメージにバックアップする。 backupxxxx.img これをNFSサーバにコピーする。 NFSのexportするディレクトリを作成する。 # mkdir /var/exports/raspbian loopデバイスで空いているループバックデバイスを探す。 # losetup -a # losetup -f /dev/loop0 /dev/loop0が空いているのがわかる。空きが無い場合は,modprobeコマンドで増やす。 # modprobe loop max_loop=32 /dev/loop0にイメージファイルを割り当てる。 # losetup /dev/loop0 /temp/backupxxxx.img kpartx -aを使って,イメージファイルのパーティションを識別する。 #kpartx -a /dev/loop0 /dev/mapperに,loop0p1とloop0p2が出来ている。 /dev/loop0p2を,/mnt/raspberrypiにマウントする。 # mount /dev/loop0p2 /mnt/raspberrypi /mnt/raspberrypiの中身をrsyncでコピーする。 # rsync -xa /mnt/raspberrypi /var/exports/raspbian /mnt/raspberrypiをアンマウントする。 # umount /mnt/raspberrypi 次に,/dev/loop0p1を,/mnt/raspberrypiにマウントする。 # mount /dev/loop0p1 /mnt/raspberrypi /mnt/raspberrypiの中身をrsyncでコピーする。 # rsync -xa /mnt/raspberrypi /var/exports/raspbian/boot /mnt/raspberrypiをアンマウントする。 # umount /mnt/raspberrypi /dev/loop0を削除する。 # kpartx -d /dev/loop0 # losetup -d /dev/loop0 # losetup -a *** コピーしたRaspbianの中身を少し書き換える [#s1d8329f] SDカードのパーテーションをマウントしているところを削除する。 この設定をするため,/var/exports/raspbian/etc/fstab を編集。 ''/var/exports/raspbian/etc/fstab''~ proc /proc proc defaults 0 0 #/dev/mmcblk0p1 /boot vfat defaults 0 2 #/dev/mmcblk0p2 / ext4 defaults,noatime 0 1 /dev/nfs / rootfs defaults,rw 0 0
Next »
PC/RaspberryPi/ネットワークブート のバックアップ一覧
PC/RaspberryPi/ネットワークブート のバックアップソース(No. All)
1: 2019-06-29 (土) 07:27:42
yuji
現: 2020-12-26 (土) 15:08:05
yuji
Attached file: u-boot.bin, Deleted an attach file: u-boot.bin at 2019-06-30 (日) 22:01:44
Counter: 1905, today: 1, yesterday: 1
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ