search
LoginSignup
56

More than 1 year has passed since last update.

posted at

updated at

Organization

Raspberry Pi 4でUbuntuデスクトップを動かして遊ぶ

はじめに

Raspberry Piはこれまでにも少し触ったことがありましたが,Raspberry Pi 4になってRAMが4GBになり,さらに秋ころにUbuntuデスクトップが正式対応されたと聞いたので,単純に動かして遊んでみたときのメモです.

やってみたこと

基本はRaspberry Pi 4上でUbuntuデスクトップ(GNOME 3)を動かしてみただけです.あとはリモート操作できるようにや,ちょっとしたプログラミング環境を作ってみました.

  • Ubuntu Desktop 20.10をインストールして動かす
  • ChromiumをインストールしてYouTubeを見てみる
  • リモート接続環境のセットアップ(SSH,VNC)
  • Visual Studio Codeをインストールして動かす
  • PythonでHello world
  • GoでHello world(Windowsでクロスコンパイルしてラズパイで動かす)

準備したもの

  • Raspberry Pi 4 4GB(スターターキット)
  • タッチディスプレイ 7インチ
  • キーボード・マウス
  • スピーカー

Raspberry Pi 4はRAM4GBのものを使いました.本体の他にケース・ヒートシンク・ファン・電源アダプタ・MicroSDカード・MicroHDMI-to-HDMIケーブルがセットになっているスターターキットを買うと楽でいいかもしれません.ラズパイ本体には電源ボタンがないのでON/OFFスイッチの付いた電源アダプタがあると便利です.microSDカードは64GBのものを使用しました.
またせっかくデスクトップ環境を動かすのでディスプレイも用意しました.ラズパイ向けで7インチくらいのタッチ対応のディスプレイがいろいろとあるので,安いものを選んで購入しました.小さい画面にほんとにGNOMEの画面が表示されるのはそれだけでも楽しいです.
その他,USB接続のキーボード・マウスを用意します.今回は雰囲気を出すためにRaspberry Piオフィシャルのキーボード・マウスを購入しました.おなじみの赤/白のカラーリングでかわいくてよいです.
あとYouTubeを見てみたかったので,イヤホンジャック接続の小型スピーカーを用意しました.

今回は普通のRaspberry Pi 4を使いましたが,キーボード一体型になっているRaspberry Pi 400もあります.

OSイメージの作成

以前はOSイメージをddやEtcherを使ってSDカードに書き込んだり,NOOBSを使ってSDカードを準備していましたが,今はRaspberry Pi Imagerというソフトウェアが公式で用意されています.
今回は通常のRaspberry Pi OS(Raspbian)でなくUbuntuデスクトップを使用するのですが,UbuntuもRaspberry Pi Imagerを使ってSDカードに書き込むことができます.WindowsでRaspberry Pi Imagerを使ってOSイメージのSDカードを作成しました.
https://www.raspberrypi.org/software/
image.png
Operationg Systemで書き込むOSを設定します.Other general purpose OSからUbuntu Desktop 20.10 (RPi 4/400)を選択します.またここでEraseを選択するとSDカードのフォーマットを行うこともできます.
image.png
次にSD Cardで書き込むmicroSDカードを選択します.(お間違いのないように!)
image.png
最後にWRITEボタンを押すとSDカードへの書き込みが開始されます.しばらく待ちましょう.
書き込みが終わるとOSイメージのSDカード作成は完了です.

Ubuntu Desktop 20.10のセットアップ

microSDカードをRaspberry Pi 4本体に挿し,その他にキーボード・マウス,ディプレイを接続して電源を入れると,初期設定がはじまります.ディスプレイはmicro-HDMIポートが2つありますが,USB Type-C側のHDMI0に繋げるとよさそうです.
手順にそって言語設定・キーボード設定・Wi-Fi設定・地域の設定・ユーザ設定を行うと初期設定が完了します.
ログインすると,おなじみのGNOME 3のデスクトップが表示されます!サングラスがラズパイ仕様になっているようですね.
image.png
まずはターミナルを立ち上げてパッケージの更新をしておきます.

$ sudo apt update && sudo apt upgrade -y

日本語化の設定

起動した直後だと表記が日本語化されていません.デスクトップ上の何もないところを右クリックしてSettingsを選択します.
image.png
Region & LanguageからManage Installed Languagesを選択すると「言語サポートが完全にはインストールされていません」と出るので,そこからインストールを行います.
image.png
インストールが完了してから再起動すると表記が日本語に変わっています.

画面表示の設定

今回は7インチと小さいディスプレイを使っているので,画面を少しでも広く使うためにDockを自動的に隠す設定にします.
image.png
またディスプレイにアイコンを表示するのが好みでないので,Tweak Toolを使って非表示に設定します.

$ sudo apt install gnome-tweak-tool

image.png

ChromiumでYouTubeを見る

UbuntuにはブラウザはデフォルトでFirefoxがインストールされていますが,ここではChromiumをインストールして使ってみます.Chromiumはaptでインストールできます.

$ sudo apt install chromium-browser

ChromiumでYouTubeのサイトを開いてみました.サムネイルが表示しきるまで多少のもたつきはありますが,それほど待たされることなく表示されるかと思います.また動画をフルスクリーンで再生しても特に問題なく表示されました.十分使えるかなと感じます.これはすごい!
image.png
音声はラズパイ本体のイヤホンジャックにスピーカーを挿せば出力されました.ただし安いスピーカーでは音量が小さかったので,次の設定で音量を上げています.
image.png

リモート接続のセットアップ

ここまではディスプレイやキーボード・マウスをRaspberry Piに接続して操作していましたが,リモート接続を行えるようにしておくと開発やちょっとした操作などに便利です.

SSHの設定

下記のコマンドでOpenSSHをインストールすればOKです.インストール後SSHサーバが起動しています.

$ sudo apt install openssh-server
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-12-30 13:19:15 JST; 28min ago

これでSSHで接続することができます.

$ ssh tsutsu@192.168.1.8
tsutsu@192.168.1.8's password:
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1010-raspi aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 updates can be installed immediately.
0 of these updates are security updates.

Last login: Wed Dec 30 17:42:29 2020 from 192.168.1.7

VNCの設定

設定画面の中から共有を選択して画面共有をアクティブにします.
image.png
これでVNC接続できるようになりますが,WindowsのVNCクライアント(今回はVNC Viewerを使用)から接続するとエラーが出て接続できません.
image.png
この場合はdconf-editorで下記の設定を行い解決することができます.dconf-editorはaptでインストールできます.

$ sudo apt install dconf-editor

org/gnome/desktop/remote-access/require-encryptionをOFFにします.
image.png
またRaspberry Piにディスプレイを接続していない状態でVNC接続するには,ダミーのグラフィックドライバをインストールしておく必要があります.

$ sudo apt install xserver-xorg-video-dummy

VNC接続する画面の表示設定をファイルに保存します.

$ sudo vi /usr/share/X11/xorg.conf.d/80-dummy.conf
80-dummy.conf
Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
    VideoRam 256000
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 5.0 - 1000.0
    VertRefresh 5.0 - 200.0
    # 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
    Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "1920x1080"
    EndSubSection
EndSection

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "jp,us"
    Option "XkbModel" "jp106"
    Option "XkbVariant" ",dvorak"
    Option "XkbOptions" "grp:alt_shift_toggle"
EndSection

Modelineの設定はcvtコマンドで確認できます.

$ cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

電源投入後は一度デスクトップでログインをしないとVNCでログインができないので,自動ログインを有効にしておくと便利です.
image.png
VNC関連は下記を参考にしました.
http://rarak.jp/16022
https://kokufu.blogspot.com/2018/02/ubuntu-vino.html

Visual Studio Codeのインストール

Visual Studio CodeにはARM版も公開されているので,Raspberry Pi上でインストールして動かしてみます.
インストールは下記ページからARM 64の.debファイルをダウンロードしてインストールします.
https://code.visualstudio.com/download
image.png

$ sudo apt install libxss1
$ sudo dpkg -i code_1.52.1-1608136325_arm64.deb

問題なく起動して使えそうです.Visual Studio Codeはリモート機能もありますが,このようにRaspberry Pi上で直接動かすこともできます.これもすごい!
image.png

PythonでHello world!

Raspberry Pi上で簡単なプログラミングを動かしてみます.
UbuntuにはPython3の環境がもともとインストールされているようでしたが,ここではpyenvを使って最新バージョンのPythonをインストールして動かしてみます.

$ sudo apt install -y libsqlite3-dev libreadline-dev libgdbm-dev zlib1g-dev libbz2-dev sqlite3 tk-dev zip libssl-dev libffi-dev git
$ git clone https://github.com/yyuu/pyenv.git $HOME/.pyenv
$ export PYENV_ROOT=$HOME/.pyenv
$ export PATH=$PYENV_ROOT/bin:$PATH
$ eval "$(pyenv init -)"
$ pyenv install 3.9.1
$ pyenv global 3.9.1
$ python
Python 3.9.1 (default, Dec 30 2020, 15:30:40)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello, world!')
Hello, world!

pyenvでのPythonも問題なく動かせました.これで任意のバージョンのPythonを使っていくこともできそうです.

GoでHello world!

今度はGoを使ってHello worldを動かしてみます.ただし今度は,Windows上でクロスコンパイルしたものをRaspberry Piで動かすのを試してみます.
今回使用したGoのバージョンはこちらです.

$ go version
go version go1.15.5 windows/amd64

お試しのHello worldのソースコードはこちら.

main.go
package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}

クロスコンパイルは次のページを参考に環境変数を設定してビルドします.
https://golang.org/doc/install/source#environment

$ set GOOS=linux
$ set GOARCH=arm64
$ set GOARM=7
$ go build -o hello main.go

ビルドして生成したhelloファイルをscpでRaspberry Piに転送し,Raspberry Pi上で実行します.実行するときには実行権限をつけてあげます.

$ chmod a+x hello
$ ./hello
Hello, world!

しっかりと実行することができました.Goはクロスコンパイルが手軽に行えるのとシングルバイナリで動かすことができるので便利です.

おまけでRustでHello world!

Rustでもクロスコンパイルを試してみたので,簡単にメモです.今回はcrossというコマンドを使った方法です.

$ cargo init .
$ cargo run  # cargo initでHello world!のコードが生成されるので,今回はそれをそのまま利用
   Compiling hellors v0.1.0 (/tmp/hellors)
    Finished dev [unoptimized + debuginfo] target(s) in 0.33s
     Running `target/debug/hellors`
Hello, world!
$ cargo install cross
$ rustup target list  # 対象の環境を一覧
aarch64-apple-ios
aarch64-fuchsia
aarch64-linux-android
aarch64-pc-windows-msvc
aarch64-unknown-linux-gnu
:
$ cross build --release --target aarch64-unknown-linux-gnu

こちらも生成した実行バイナリをscpで転送して,Raspberry Pi上でしっかりと実行できました.

$ chmod a+x hellors  # 実行権限がなければ追加
$ ./hellors
Hello, world!

おわりに

目標どおりにRaspberry Pi 4にUbuntuデスクトップをセットアップして,普通のパソコンのような感覚でYouTubeを視聴することができました.手のひらサイズのラズパイでここまでしっかりと動くのは驚きですし,これだけでも触っていて楽しいです.
またリモート接続も簡単にセットアップできるので,部屋の隅のほうでラズパイ本体だけを電源つけっぱなしにするような運用でも,操作を手軽に行うことができそうです.
また開発環境としても,Visual Studio Codeが動いてしまうのにもびっくりです.今回はPythonとGoを試してみましたが,他にもいろいろ動かしてみたいですね.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
56