RaspberryPi仮想マシンでDockerコンテナイメージを作って時短したい3回目（失敗かも）

#やりたいこと
+ RaspberryPiのBuildやDockerを高速なマシンでやりたい

#仮想マシンでQEMUを動かす

こちらのページを参考にさせていただきます
[Raspberry Pi のセルフビルド環境を QEMU で作る](https://qiita.com/autch/items/c8c9cdc7b8e5821e81a4)

#手順 qemuインストール
Azureで仮想マシンを作ります。UbuntuServer-18.04-LTSでデフォルトで作成しました。
CPUの構成もデフォルトで、これに成功したらもっと早い構成を作ります。

>sudo apt-get update
>sudo apt-get upgrade
>sudo apt install qemu
>sudo apt install unzip

北陸先端大学のミラーサーバーから最新のイメージをダウンロードさせていただきます。
本家のサーバーはダウンロードに１時間くらいかかるので、ミラーサーバーは大変助かります。
>wget http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/raspbian_lite-2019-04-09/2019-04-08-raspbian-stretch-lite.zip

解凍します
>unzip 2019-04-08-raspbian-stretch-lite.zip

https://github.com/dhruvvyas90/qemu-rpi-kernel よりQEMU用カーネルとDevice Treeファイルをダウンロード。

>wget https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.14.79-stretch
>wget https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/versatile-pb.dtb

最新版のはず。
何をやっているのか全くわかっていません。QEMUのマニュアルを熟読するべき（自戒）

ダウンロードしたものを、¥QEMUにコピーして、imageファイルを見ると

```php:file
2019-04-08-raspbian-stretch-lite.img: DOS/MBR boot sector; 
partition 1 : ID=0xc, start-CHS (0x0,130,3), end-CHS (0x5,249,31), startsector 8192, 87851 sectors; 
partition 2 : ID=0x83, start-CHS (0x6,30,25), end-CHS (0xdb,68,41), startsector 98304, 3424256 sectors

sudo losetup -frP 2019-04-08-raspbian-stretch-lite.img
```

確認すると、デバイスファイルができているようです。

```:fdisk
$ sudo fdisk -l /dev/loop0
Disk /dev/loop0: 1.7 GiB, 1803550720 bytes, 3522560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc1dc39e5

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1       8192   96042   87851 42.9M  c W95 FAT32 (LBA)
/dev/loop0p2      98304 3522559 3424256  1.6G 83 Linux
```

適当にマウントしてtarballに固め、unmount して losetup -dをします。

```
sudo mount -o ro /dev/loop0p2 /mnt
sudo tar cvjf ~/raspbian-stretch-lite.tar.bz2 -C /mnt .
sudo umount /mnt
```
確認して削除

```
$losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                               DIO LOG-SEC
/dev/loop0         0      0         0  1 /home/kuma/qemu-pi/2019-04-08-raspbian-stretch-lite.img   0     512
sudo losetup -d /dev/loop0
```

先達に従い、粛々とコマンドを打ち込んで実行します。

```
$ mkdir -p ~/arm/raspbian
$ cd ~/arm/raspbian
$ sudo tar xjf ~/raspbian-stretch-lite.tar.bz2

$ sudo apt-get install qemu-user-static

$ sudo update-binfmts --display | grep arm
qemu-arm (enabled):
 interpreter = /usr/bin/qemu-arm-static
qemu-armeb (enabled):
 interpreter = /usr/bin/qemu-armeb-static

$ cd
$ sudo cp /usr/bin/qemu-arm-static arm/raspbian/usr/bin/
```

色々マウントする

```
sudo mount -t sysfs sysfs arm/raspbian/sys
sudo mount -t proc proc arm/raspbian/proc
sudo mount -t devtmpfs udev arm/raspbian/dev
sudo mount -t devpts devpts arm/raspbian/dev/pts
```

起動してみます。

```
sudo chroot arm/raspbian /bin/bash
root@myBuilder:/# su - pi
pi@myBuilder:~ $ uname -a
Linux myBuilder 4.18.0-1024-azure #25~18.04.1-Ubuntu SMP Fri Jun 28 23:27:46 UTC 2019 armv7l GNU/Linux
pi@myBuilder:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.8 (stretch)
Release:        9.8
Codename:       stretch
```
おお、これでなんとか動く環境が揃いました。
exitを何度かすると、通常のubuntuに戻り、

>sudo chroot arm/raspbian /bin/bash
>su - pi

で、Raspbianに切り替わります。

せっかくできたのでスナップショットを撮り、バックアップを自動化しておきます。

#Dockerインストール

```
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi
```

systemctl コマンドなどが、全く効かない。
Dockerも異常を出して止まってしまう。


```
この辺りで解決すると聞いて
$ sudo apt-get install -y resolvconf
$ sudo systemctl restart networking.service 
$ sudo cat /etc/resolv.conf 
```