qemu-user-staticを使用したRaspberry Piイメージの編集(Ubuntu 14.04)

画像

場合によっては、標準のブートイメージを編集したり、多数のRaspberry Piボードへの後続の複製を使用してシステムを構成したりする必要があります。 このような問題を解決するには、qemu-user-staticおよびbinfmt-supportパッケージを使用すると便利です。

ターミナルを起動し、qemu-user-staticおよびbinfmt-supportパッケージをインストールします。

sudo apt-get install qemu qemu-user-static binfmt-support 

qemu-user-staticモードのQEMUを使用すると、異なるアーキテクチャのプロセッサを使用して、1つのプロセッサ用にコンパイルされたバイナリファイルを実行できます。 binfmt-supportパッケージを使用すると、バイナリファイルを直接実行できます。

インストール後、サポートされているバイナリファイルのリストを確認します。

 update-binfmts --display 


 qemu-aarch64(有効):
 ......
 qemu-microblaze(有効):
 ......
 qemu-arm(有効):
 ......
 qemu-m68k(有効):
 ......
 qemu-ppc64abi32(有効):
 ......
 qemu-sparc64(有効):
 ......
 qemu-sparc(有効):
 ......
 qemu-sh4(有効):
 ......
 qemu-sh4eb(有効):
 ......
 qemu-sparc32plus(有効):
 ......
 qemu-ppc64(有効):
 ......
 qemu-ppc(有効​​):
 ......
 qemu-mipsel(有効):
 ......
 qemu-alpha(有効):
 ......
 qemu-mips(有効):
 ......
 qemu-cris(有効):
 ......
 qemu-s390x(有効):
 ......
 qemu-armeb(有効):
 ...... 


ご覧のとおり、ARMファイルのサポートが有効になっています-qemu-arm(有効)。

www.raspberrypi.org/downloadsページに移動し、目的のシステムを選択します。 Raspbian Wheezyを例にとると、現在のバージョンは2015-05-05-raspbian-wheezy.imgです。

アーカイブをダウンロードして解凍します。

 sudo mkdir ~/rpi_image cd ~/rpi_image sudo wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2015-05-07/2015-05-05-raspbian-wheezy.zip sudo unzip 2015-05-05-raspbian-wheezy.zip sudo rm 2015-05-05-raspbian-wheezy.zip 

まず、画像情報を取得します。

 sudo fdisk -lu 2015-05-05-raspbian-wheezy.img 


ディスク2015-05-05-raspbian-wheezy.img:3276 MB、3276800000バイト
 255ヘッド、63セクター/トラック、398シリンダー、合計6,400,000セクター
単位= 1 * 512 = 512バイトのセクター
セクターサイズ(論理/物理):512バイト/ 512バイト
 I / Oサイズ(最小/最適):512バイト/ 512バイト
ドライブID:0xa6202af7
 
                    デバイスZagr開始終了ブロックIDシステム
 2015-05-05-raspbian-wheezy.img1 8192 122879 57344 with W95 FAT32(LBA)
 2015-05-05-raspbian-wheezy.img2 122880 6399999 3138560 83 Linux


画像に1Gbを追加します。

 sudo chmod 775 2015-05-05-raspbian-wheezy.img sudo dd if=/dev/zero bs=1M count=1024 >> 2015-05-05-raspbian-wheezy.img 

イメージ全体をデバイスloop0にフックし、2番目のセクション(セクター122880から始まり、各セクターはそれぞれ512バイト)をloop1にフックします。

 sudo losetup -f --show 2015-05-05-raspbian-wheezy.img sudo losetup -f --show -o $((122880*512)) 2015-05-05-raspbian-wheezy.img 

これにより、デバイス/ dev / loop0がイメージ全体に接続され、/ dev / loop1が拡張するパーティションに接続されます。

partedを開始し、device / dev / loop0の2番目のセクションを削除して、新しいサイズで作成します。

 sudo parted /dev/loop0 

 GNU Parted 2.3
 / dev / loop0によって使用されます
 GNU Partedへようこそ!  「ヘルプ」と入力して、コマンドのリストを表示します

 (parted) print 

モデル:ループバックデバイス(ループ)
ディスク/ dev / loop0:4351MB
セクターサイズ(論理/物理):512B / 512B
パーティションテーブル:msdos
 
番号開始終了サイズタイプファイルシステムフラグ
  1 4194kB 62.9MB 58.7MB一次脂肪16 lba
  2 62.9MB 3277MB 3214MBプライマリext4 

 (parted) rm 2 (parted) mkpart primary 62.9 4351 (parted) print 

モデル:ループバックデバイス(ループ)
ディスク/ dev / loop0:4351MB
セクターサイズ(論理/物理):512B / 512B
パーティションテーブル:msdos
 
番号開始終了サイズタイプファイルシステムフラグ
  1 4194kB 62.9MB 58.7MB一次脂肪16 lba
  2 62.9MB 4351MB 4288MBプライマリext4

 (parted) quit 

次に、新しいパーティションを確認してサイズを変更します。

 sudo e2fsck -f /dev/loop1 

 e2fsck 1.42.9(2014年2月4日)
パス1:iノード、ブロック、サイズの確認
パス2:ディレクトリ構造の確認
パス3:接続ディレクトリの確認
パス4:参照カウントの確認
パス5:グループ概要情報の確認
 / dev / loop1:86233/196224ファイル(0.1%不連続)、630146/784640ブロック 

 sudo resize2fs /dev/loop1 

 resize2fs 1.42.9(4-Feb-2014)
 / dev / loop1のファイルシステムのサイズを1046784(4k)ブロックに変更します。
 / dev / loop1のファイルシステムは現在1046784ブロック長です。


次に、新しいパーティションのサイズが1 Gb増加したことを確認します。

 sudo parted /dev/loop0 

 GNU Parted 2.3
 / dev / loop0によって使用されます
 GNU Partedへようこそ! コマンドのリストを表示するには、「help」と入力します。 

 (parted) print 

モデル:ループバックデバイス(ループ)
ディスク/ dev / loop0:4351MB
セクターサイズ(論理/物理):512B / 512B
パーティションテーブル:msdos
 
番号開始終了サイズタイプファイルシステムフラグ
  1 4194kB 62.9MB 58.7MB一次脂肪16 lba
  2 62.9MB 4351MB 4288MBプライマリext4 

 (parted) quit 

ループデバイスをクリアしましょう。

 losetup -d /dev/loop0 /dev/loop1 

イメージをマウントします。

 sudo mkdir ~/rpi_mnt sudo mount ~/rpi_image/2015-05-05-raspbian-wheezy.img -o loop,offset=$((122880*512)),rw ~/rpi_mnt 

(オプション)マウント/ブート:

 sudo mount ~/rpi_image/2015-05-05-raspbian-wheezy.img -o loop,offset=$((8192*512)),rw ~/rpi_mnt/boot 

(オプション):

 cd ~/rpi_mnt sudo mount --bind /dev dev/ sudo mount --bind /sys sys/ sudo mount --bind /proc proc/ sudo mount --bind /dev/pts dev/pts 

すべてが正しく機能するように(ネットワークなど)、ルートディレクトリを変更する前に、ファイル〜/ rpi_mnt / etc / ld.so.preloadのすべての行をコメント化する必要があります。

 sudo vi ~/rpi_mnt/etc/ld.so.preload 

編集するには、iを押し、各行の前に#を入力し、ESCを押します:wq ENTER

ルートディレクトリ(CHROOT)の変更。

まず、ルートファイルシステムを変更したらすぐにbinfmt-supportがコードを実行することを確認する必要があります。 これを行うには、ファイルをイメージのルートディレクトリにコピーします。

 sudo cp /usr/bin/qemu-arm-static ~/rpi_mnt/usr/bin 

ルートを変更します。

 cd ~/rpi_mnt sudo chroot . bin/bash 

ルートディレクトリの変更を確認します。

 uname -a 

 Linux simm-UX32VD 3.19.0-33-generic#38〜14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015 armv7l GNU / Linux


これで、モニターやキーボードを個々のボードに接続することなく、プログラムを追加および削除し、システムを構成して、結果のイメージを多くのRaspberry Piデバイスにコピーできます。

Raspberry Pi構成メニューに入る:

 sudo raspi-config 

デスクトップ環境の削除:

 apt-get remove --dry-run --auto-remove --purge libx11-.* 

リストに不要なパッケージがないことを確認し、「-dry-run」なしで再実行します。

システム更新。 新しいバージョン(たとえば、jessie、stretchなど)にアップグレードするには、/ bootをマウントする必要があります(/etc/apt/sources.list.d内のすべてのファイルをチェックして更新する必要があります)。 更新する前に、必要な構成ファイルを保存します。

 sed -i 's/wheezy/jessie/g' /etc/apt/sources.list apt-get update apt-get dist-upgrade -o Dpkg::Options::="--force-confold" 

SDカードに画像を書き込むには、次のことを行う必要があります。

1. CHROOTを終了します(exitと入力)
2. /etc/ld.so.preloadファイルの行のコメントを解除します。

 sudo vi ~/rpi_mnt/etc/ld.so.preload 

以前に追加された#文字をxで削除し、ESCを押す:wq ENTER

3.すべてのセクションをアンマウントします。

 sudo umount ~/rpi_mnt/sys sudo umount ~/rpi_mnt/proc sudo umount ~/rpi_mnt/dev/pts sudo umount ~/rpi_mnt/boot sudo umount ~/rpi_mnt/dev cd .. sudo umount ~/rpi_mnt 

SDカードを挿入し、パスを見て画像を記録します。

 sudo fdisk -l sudo dd if=~/rpi_image/2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0 


PDFで記事をダウンロード-http://prom-electric.ru/media/raspi_img_edit.pdf

Source: https://habr.com/ru/post/J272523/


All Articles