Ubuntu MATEのイメージ編集し、Raspberry Piで使いやすくしました。
このエントリはその編集内容のメモです。
https://memoteki.net/archives/1308
背景
Ubuntu WikiでRaspberry Pi 3用のイメージファイルが公開されていますが、そのままではapt upgrade
コマンドで起動しなくなってしまったりと扱いにくい状態なのでUbuntu MATEのイメージファイルを編集しました。
その手順をメモ&イメージファイルを公開しておきます。
なお、Ubuntu Wikiで配布されているイメージファイルは/boot/config.txt
を編集することで問題なくアップデートできるそうです。
詳細はこちら。
手順
- 公式サイトからUbuntu MATEのイメージファイルをダウンロード
- Raspberry Piで初期設定
- イメージファイルをバックアップ
- バックアップしたイメージファイルの編集
- 編集したイメージファイルの圧縮
以上の手順でイメージファイルの作成をします。
作成したイメージファイルはこのエントリの最初で公開しています。
イメージファイルの準備と書き込み
Ubuntu MATEのイメージファイルをダウンロードし、microSDに書き込みます。
まずは、ダウンロードしてきます。ブラウザでUbuntu MATEのサイトから、または以下のコマンドでダウンロードします。
先ほど、「作成したイメージファイル」からダウンロードした場合はこの手順は不要です。
cd ~/Downloads wget https://ubuntu-mate.org/raspberry-pi/ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz
Ubuntu
書き込む前に、/dev/mmcblk*
として認識されているディスクがないことを確認します。
ls /dev/mmcblk*
ここで、ls: /dev/mmcblk* にアクセスできません: そのようなファイルやディレクトリはありません
と返ってくることを確認してください。
UbuntuでmicroSDに書き込む際は以下のコマンドで書き込みできます。
sudo umount /dev/mmcblk0 xzcat ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz | sudo dd of=/dev/mmcblk0 bs=1M
書き込みが終わったら、microSDの準備完了です。
OS X/macOS
OS X/macOSの場合はddコマンドのオプションが異なります。
microSDを指す前と指す後で2回以下のコマンドを実行します。
diskutil list
/dev/disk2 (external, physical)が増えており、これがmicroSDであることがわかります。
ここで違うdiskを選択すると、最悪の場合OSが起動しなくなる場合があります。
diskutil umountDisk /dev/disk2 xzcat ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz | sudo dd of=/dev/rdisk2 bs=1m
ここで、ofに/dev/disk2ではなく、/dev/rdisk2を指定します。
rdiskはdiskと違い、アンバッファモードなのでバッファモードより書き込みが数倍速いです。
時間がかかりますが、Ctrl+Tできちんと動いている確認できます。
書き込みが終わったら、EjectしてmicroSDの準備完了です。
diskutil eject /dev/disk2
Raspberry Piのセットアップ
GUIでの設定が必須ですので、Raspberry Pi 3にモニタとキーボード、マウスを接続します。
設定に関してはこちらのサイトが大変丁寧にまとまっていましたので紹介しておきます。
初期設定後、Terminalを起動します。Ctrl+Alt+Tで起動します。
まずは自動アップデートを無効にします。
sudo systemctl disable apt-daily.service sudo systemctl disable apt-daily.timer
aptのパッケージリストを更新してアップグレードしておきます。少々時間がかかります。
sudo apt update sudo apt upgrade
よく使うパッケージでまだインストールされていないものをインストールしておきます。
curlやwgetなどはすでにインストールされているようです。
※ここではaptでraspi-config
をインストールするようなコマンドを紹介していますが、実際にはsnubbegbg/install_raspi-configを使用して最新版のraspi-config
をインストールしています。DeviceTreeを無効にするとUbuntu MATEで無線LANが使用できなくなるなど様々な不具合に遭遇したためです。DeviceTreeを無効にするオプションのない20160527
のraspi-config
をインストールしています。
sudo apt install git raspi-config
デバイスドライバのビルドの際に必要なカーネルのソースをダウンロード・インストールしておきます。
sudo apt install dkms gcc-4.7 sudo apt-get install -f wget http://phil.lavin.me.uk/downloads/linux-headers-rpi/linux-headers-4.1.19-v7%2B_4.1.19-v7%2B-2_armhf.deb sudo dpkg -i linux-headers-4.1.19-v7+_4.1.19-v7+-2_armhf.deb sudo chmod -R g+r /usr/src/linux-headers-4.1.19-v7+/* sudo chmod -R o+r /usr/src/linux-headers-4.1.19-v7+/*
Raspberry Piを何かに組み込んだまま使う場合はGUIを使うことはないと思いますので、アンインストールします。
これだけで1GB以上空き容量を確保できますのでお勧めです。
アンインストールするにあたり、起動時にConsoleで起動するように設定します。
raspi-configを起動します。
sudo raspi-config
再起動するか確認されるので”Yes”を選択し、再起動します。
再起動後、使用しないパッケージをアンインストールします。
sudo apt purge network-manager brltty brasero account-plugin* adwaita-icon-theme thunderbird vlc scratch mate-* ubuntu-mate* libreoffice* sudo apt autoremove
net.ifnames=0
を/boot/cmdline.txt
に書き加えます。これを書き換えることによって有線LANがeth0として認識されるようになります。
sudo vim /boot/cmdline.txt
書き換え後は以下のようになります。
ubuntu@ubuntu:~$ cat /boot/cmdline.txt net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet splash
ここまでの作業が完了したら再起動し、再びきちんと起動することを確認しておいてください。
Ubuntuマシンでの操作に移るのでシャットダウンします。
sudo poweroff
PCでのセットアップ
シャットダウン後、microSDを取り外してUbuntuマシンに差し込みます。
先ほどとは異なり、今回はmicroSDのデータを読み込みます。
cd ~/ sudo dd if=/dev/mmcblk0 of=ubuntu.img
ディスクイメージをマウントします。
sudo kpartx -a ~/ubuntu.img sudo mount /dev/mapper/loop0p2 /mnt/
マウントしたイメージを編集します。
cd /mnt/home/ubuntu rm .sudo_as_admin_successful rm .bash_history && touch .bash_history rm .viminfo rm .lesshst cd /mnt/etc sudo rm -rf NetworkManager
ついでにログファイルもきれいに消しておきます。
sudo find /mnt/var/log/ -type f -name \* -exec cp -f /dev/null {} \;
ディスクイメージの圧縮時に圧縮率が高まるように、未使用領域をゼロ埋めします。
sudo dd if=/dev/zero of=/mnt/dummy bs=4096 sudo rm /mnt/dummy
ゼロ埋めした/mnt/dummy
を削除したらアンマウントして圧縮します。
cd ~/ sudo umount /mnt sudo kpartx -d /dev/loop0 xz -vk ubuntu.img ubuntu-mate-16.04-desktop-armhf-raspberry-pi-no-gui-20170129.img.xz
以上でイメージファイルの準備は完了です。
/etc/udev/rules.d/70-persistent-net.rules
ではなく、/lib/udev/rules.d/80-net-setup-link.rules
によってeth0が認識されているのでこのイメージを書き込んだmicroSDはどのRaspberry Piに差しても起動させることができます。
作成したイメージファイル
今回作成したイメージを以下に公開しておきます。
ユーザ名、パスワードはどちらも”ubuntu”です。必要に応じて変更してください。
ある程度の動作確認はすませてありますが、すべてについて検証できているわけではありません。
不具合が出ても対処できる環境で先にテストしてからの使用をお願いします。
ubuntu-mate-16.04-desktop-armhf-raspberry-pi-no-gui-20170129.img.xz
File size : 806MB
MD5 hash : a7854da6575fadf15e2964064989c46f
さらに、apt upgrade
後にROS Kinetc(ros-kinetic-ros-base)のインストールを行ったイメージも以下に公開しておきます。
こちらも不具合が出ても対処できる環境で先にテストしてからの使用をお願いします。
ubuntu-mate-16.04-desktop-armhf-raspberry-pi-no-gui-ros-preinstalled20170129.img.xz
File size : 913MB
MD5 hash : 85b24b5a839f4b44cf2f333f73a42cba
ライセンス表記
- Ubuntu MATE 16.04.1
- https://ubuntu-mate.org/
- GPLv3 License
- ROS Kinetic
- http://www.ros.org/
- BSD License
参考サイト
- Comment #31 : Bug #1652270 : Bugs : linux-raspi2 package : Ubuntuhttps://bugs.launchpad.net/ubuntu/+source/linux-raspi2/+bug/1652270/comments/31
- Raspberry Pi のバックアップ | えぼのブログhttp://evo.check.jp/pc/raspberrypi/backup.html
- [RaspberryPi]ディスクイメージを縮小する | BYLOMEDIAhttp://blog.bylo.jp/develop/2014/04/643/
- sstea備忘録 : Raspberry Pi のディスクイメージをバックアップするhttp://sstea.blog.jp/raspi/backup_image.html
コメント
コメント一覧 (2件)
[…] Raspberry Pi 3用Ubuntuイメージの作成方法(Server版) […]
[…] さくできるよう、未使用領域をゼロ埋めします2)ここで紹介している方法です。https://memoteki.net/archives/1101#PC jQuery("#footnote_plugin_tooltip_2").tooltip({ tip: "#footnote_plugin_tooltip_text_2", tipClass: "footnote […]