はじめに
Raspberry Pi 3 Model B PlusにUbuntu18.04をインストールした時のまとめです.
結果
Ubuntu16.04などではubuntu-desktopをインストールするとうまく動作しなかったのですが、Ubuntu18.04ではUbuntu serverをインストールしてからデスクトップをインストールすると問題なく動作しました.
ファームウエアを書き換える必要がありますが、eth0とwlan0は問題なく使用することができました.
しかし変換したHDMIなどを使用するとディスプレイ出力ができませんでした.
使用環境
- Raspberry Pi 3 Model B Plus + SDcard(16GB)
- Raspberry Pi 3 Model B
- MacBook (Mojave 10.14)
参考先
手順
1.ダウンロード
- Raspberry pi 向けのubuntu18.04イメージをダウンロードする.
wget http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-18.04.1-preinstalled-server-armhf+raspi2.img.xz
2.書き込み
書き込む前にSDcardのフォーマットを行う.
-
GUIを使う場合
Etcherを使うとやりやすいです.
ダウンロードしたイメージをそのまま使えます. -
CUIで行う場合
df
コマンドで確認するとSDcardが確認できると思います.(環境によって変わる) *表示したディスクはフォーマットされていません.
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk2s1 60544960 27862400 32682560 47% 435350 510665 46% /Volumes/UNKNOWN
フォーマット後にSDcardをアンマウント.
sudo umount disk2s1
イメージを解凍する.
unxz ubuntu-18.04.1-preinstalled-server-armhf+raspi2.img.xz
イメージを書き込む.
注意: ofに設定するものを間違えると大変なことになるので慎重に行ってください.
sudo dd bs=4m if=ubuntu-18.04.1-preinstalled-server-armhf+raspi2.img of=/dev/rdisk2
Ubuntuなどで行う場合は、bs=4m
をbs=4M
にしてください
3.system-bootの書き換え
イメージを書き込むとsystem-bootと言う名前でSDcardがマウントされると思います.
このままではRaspberry Piでブートすると問題が発生するので、ファームウエアを書き換える必要があります.
まずファームウエアをダウンロードします.
git clone https://github.com/raspberrypi/firmware.git
次にsystem-boot内にあるconfig.txtを編集します.
kernel=uboot.bin
device_tree_address=0x02000000
となっている部分を
kernel=vmlinuz
initramfs initrd.img followkernel
#kernel=uboot.bin
#device_tree_address=0x02000000
に書き換える
先ほどダウンロードしたfirmwareの中にあるbootディレクトリ以下を全てsystem-bootに入れる.
cp -r firmware/boot/* /Volume/system-boot/
これでsystem-bootの書き換えは終わりになります.
4.Raspberry Pi 3 Model Bで起動する
なぜRaspberry Pi 3 Model B PlusではなくRaspberry Pi 3 Model Bでブートするのかというと、先ほどの書き換えだけでは、DHCPがIPを振ってくれないため、起動した際にログインまでたどり着きません.
なのでRaspberry Pi 3 Model Bで一度起動し、サービスを無効にする必要があります.
もしRaspberry Pi 3 Model Bが手元にない場合は、UbuntuなどでSDcardをマウントするとcloudimg-rootfs
というパーティションが見えるようになるので以下で行う内容を手動で行えば問題ありません.
Raspberry Pi 3 Model Bで先ほどのSDcardを挿して起動します.
注意: 有線LANとキーボードとモニターを接続.
起動後のデフォルトusernameとpasswordはubuntuです. パスワードの変更を求められるので変更してください.
ログイン後、以下のコマンドを実行.
systemctl disable systemd-networkd-wait-online.service
systemctl mask systemd-networkd-wait-online.service
以上でRaspberry Pi 3 Mode B内での作業は終了です.
5.Raspberry Pi 3 Model B Plusで起動する
ログイン後、eth0にIPを振る.
sudo dhclient eth0
Raspberry Pi 3 Model B Plusのモデル名を調べる.
cat /proc/device-tree/model
モデル名を追記します 以下は今回の場合.
Machine: BCM2710
Machine: Raspberry Pi 3 Model B Plus Rev 1.3
DTB-Id: bcm2710-rpi-3-b-plus.dtb
U-Boot-Script-Name: bootscr.rpi3
Required-Packages: u-boot-tools
Boot-DTB-Path: /boot/firmware/bcm2710-rpi-3-b-plus.dtb
Boot-Kernel-Path: /boot/firmware/vmlinuz
Boot-Initrd-Path: /boot/firmware/initrd.img
Boot-Script-Path: /boot/firmware/boot.scr
GPUのファームウエアを置き換える.
wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20180417-1_armhf.deb
dpkg-deb -x raspberrypi-bootloader_1.20180417-1_armhf.deb /tmp/pi-bootloader
sudo apt remove linux-firmware-raspi2
sudo cp /tmp/pi-bootloader/boot/* /boot/firmware/
Wifiのファームウエアを置き換える.
wget https://github.com/RPI-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.bin
wget https://github.com/RPI-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.clm_blob
wget https://github.com/RPI-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.txt
sudo cp *sdio* /lib/firmware/brcm
デスクトップをインストールします.
sudo apt update
sudo apt install ubuntu-desktop
以上でデスクトップのインストールは終了です.
#オプション
1.ネットワーク有線LANに自動でIPが振られるようにする
上記の状態では、起動毎にsudo dhclient eth0
を実行しなければIPが振られないため自動に振られるようにする.
/etc/network/interfaces
に以下の内容を追記します.
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
そしてifupdown
をインストールする.
sudo apt install ifupdown
これで再起動した際にも自動でeth0にIPが振られるようになったと思います.
もし静的IPを振る場合は、/etc/network/interface
にstatic ipを追加しresolvconf
をインストールしてください.