RaspberryPi

RaspberryPi 3 で Ubuntu Server をうごかす(個人用メモ)

More than 1 year has passed since last update.


はじめに

この記事は筆者が RaspberryPi 3 で公式1 の Ubuntu 16.04.3 イメージを動かすまでの手順をメモしたものです。

(大まかな手順は Wiki2 によるが、なぜか公式のイメージは RaspberryPi 2 用しかなく3 こまったりしたので)


内容


環境

Windows 上で作業していたのでイメージの導入などはそれ前提です。もちろん読み替えれば別の OS 上でも作業可能です。



  • 7-Zip


    • ファイルの展開作業に用います




  • rufus


    • イメージファイルを MicroSD カードに焼くのに使います。


    • UNetbootin とかでもよいです



RaspberryPi 上での作業は普通に Ubuntu を操作しているだけです。

なお、基本的な Linux の知識などを仮定して書いています。

あと、面倒なので Wi-Fi にはつながずに有線で作業していました。


イメージを用意する

RaspberryPi 公式のダウンロードページ には Ubuntu のイメージはないので別の場所から取得します。

(ちなみに Ubuntu 公式のダウンロードページ からたどるのもかなり困難です)

直接のリンクが Wiki の Download にありますが、日本国内のミラーから落としたほうが早いはずなのでそのようにします。

(ミラー情報 によると富山大学だけのようです)

http://ubuntutym2.u-toyama.ac.jp/ubuntu-dvd/16.04.3/release/ubuntu-16.04.3-preinstalled-server-armhf+raspi2.img.xz

上記のリンクからファイルをダウンロードして適当な場所に展開してください。(Windows だったら 7-Zip で展開しましょう)

raspi2 という文字が見えますが後の手順で対応するので問題ないです。


余談

RaspberryPi 用のイメージ配布についてハッキリとはわかっていないのですが以下の通りのようです。


イメージを MicroSD カードに焼く

dd コマンドが使える環境であれば Installation をサクッとやれば良いのですが、Windows だとそういうわけにもいきません。

ということで rufus を使ってイメージを MicroSD に焼いてください。細かい部分は省略します。

成功すると system-boot というドライブ名に書き換わるはず。


RaspberryPi 3 向けに調整する

正直この手順に従うだけなのですが、Windows でやるにあたり若干わかりずらかったのでちょっと書きます。

まず、次のように system-boot 直下の config.txt を編集します。


config.txt

- kernel=uboot.bin

- device_tree_address=0x02000000
+ kernel=vmlinuz
+ initramfs initrd.img followkernel

次に、 bcm2710-rpi-3-b.dtb/lib/firmware/4.4.0-1065-raspi2/device-tree からコピーして system-boot 直下に配置するのですが、 /lib を Windows から参照するのは難しいのでイメージから抽出することにします。

ubuntu-16.04.3-preinstalled-server-armhf+raspi2.img を 7-Zip で開くと、1.img というファイルがあります。

さらに 1.img を開くと Linux でいう / 相当のファイル群が見えるので指定のパス(/lib/firmware/...)からファイルをコピーして配置するだけです。


起動する

ここまでくれば普通に起動させることはできます。電源とディスプレイを用意して接続すれば Ubuntu のログイン画面(CUI)が表示されるはずです。

(cloud-init に時間かかっていました。もし systemd-modules-load.service loaded failed などと出ているときはこのページが参考になります)

初期の user/passwordubuntu/ubuntu です。初回ログイン時にパスワードを変更するよう促されるので一回はログインしておきましょう。


SSH する

ifconfig などで IP アドレスを調べて SSH でつないでおきましょう。こうすることでコピペが可能になります。

(私の場合はキーボードを使い慣れているもの(HHKB)を使えるほうが大きかったです)


ホスト名を変更する

$ sudo hostname お好みのホスト名

$ sudo vim /etc/hostname
$ sudo vim /etc/hosts


/etc/hosts

+ 127.0.0.1 お好みのホスト名



余談

avahi-daemon を入れておくと対応した環境からは お好みのホスト名.local でアクセスできるようになり捗る。


パッケージを更新する

まずは参照先を日本のミラーにする。

arm 向けのミラーはちょっと特殊な感じ4

$ sudo sed -i.bak -e "s%ports.ubuntu.com%jp.archive.ubuntu.com%g" /etc/apt/sources.list

それから、RaspberryPi 3 用のリポジトリを追加する。

$ sudo add-apt-repository ppa:ubuntu-raspi2/ppa-rpi3

パッケージを最新の状態にする。

$ sudo apt update

$ sudo apt upgrade

もしエラーが出たら下記の対処をする5

$ sudo dpkg-divert \

--divert /lib/firmware/brcm/brcmfmac43430-sdio-2.bin \
--package linux-firmware-raspi2 \
--rename --add /lib/firmware/brcm/brcmfmac43430-sdio.bin
$ sudo apt upgrade


おわり

ここまでやれば普通に SSH したり再起動したりしても問題ないはずです。

ちなみに安定性などは全く検証していないのでわからないです。

書き上げた後にこの記事を見て不安になっているところです :scream:


Ubuntu 16.04 LTS の非公式イメージを使っていた所、突然死することが何度もあり不安定