Ubuntu 16.04LTSをインストール anchor.png

Raspberry Pi2B,3BがARMv7ベースになったので,ubuntuを動作させられるようだ。
Raspberry PiのUbuntuはオフィシャルからはリリースされていないが、アンオフィシャルなものは出ているので、Pi3Bにインストールしてみた。

Page Top

使用するイメージについて anchor.png

https://wiki.ubuntu.com/ARM/RaspberryPi でリリースされている。
ubuntuは16.04だが,GUIが入っていないserverになる。→ 18.04になっている。

以下は,16.04をインストールしたときのメモ。

Raspberry Pi2: ubuntu-16.04.3-preinstalled-server-armhf+raspi2.img.xz
Raspberry Pi3: ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz

Page Top

インストール anchor.png

通常のRaspberry Pi用OSのイメージをMicroSDカードに書き込むのは,Raspbianのときと同じ。~

Windowsマシンで,.xzファイルのままなら Etcher 使用して,解凍した.imgファイルなら Win32DiskImager を使用して,容量が8GB以上のMicro SDカードに書きこむ。

このとき,使用するMicroSDカードの相性に注意する。

64GB,128GBなどの大きな容量のMicroSDカードを使用する場合には, Etcher で書き込む必要がある。 Win32DiskImager で書き込んだ場合は,ブート出来ない。
これは,64GB,128GBのMicroSDカードは大抵exFATでフォーマットされて販売されている。Raspberry Piでは,最初のパーテーションがFAT/FAT32でないとブートローダーがロードできないので,結果,ブート出来ないのが理由。
MicroSDカードをFAT32でフォーマットし直せば使えるのではあるが, SD card Formatter 5.0 では64GB以上だとFAT32でフォーマット出来なくなってしまっている。
なので,古い[Upload]を使ってフォーマット(論理サイズ調整をONにして)すれば,FAT32でフォーマット出来ます。
あとは,通常通りイメージファイルを書き込めば,64GB,128GBのMicroSDカードでも使用出来る。

Page Top

有線LANで接続 anchor.png

無線LANは最初からは使えないようなので有線LANを使う。
MicroSDカードをPi3に挿して,有線LANを既存のNetwork(DHCP環境)に接続する。

ubuntuは,デフォルトでSSHログイン出来るようになっているようだ。
Pi3の電源をOnしてしばらくたったら,別のWindowsマシン等からPuTTYなどのSSHクライアントを使ってログインする。

この時,接続したネットワークのDHCPサーバーにより,Raspberry Piの有線LAN(Ethernet)コネクタにアサインされたIP Addressを知らないと接続できない。IP Addressではなく,ubuntu@ubuntu.localを使用してもリモートログイン出来る。

IP Addressを知る場合は,

  • Windowsマシンでは以下のようにすれば見つけられる
    for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.1.%i
    終了までしばらく時間がかかる。実行が終わったら,
    arp -a | find "b8-27"
    とかすると,Raspberry Piに設定されたIP Addressがわかる。
  • Linuxマシンの場合
    # arp-scan -l --interface eth0
    とかすればわかる。

ログインする時の初期アカウントは,

ユーザー名:ubuntu
パスワード:ubuntu

になっている。

上記でログインすると,パスワードを変更するように促される。好きなパスワードに変更する。
もう一度ログインし直す。

rootのパスワードを変更する。

$ sudo passwd root
Page Top

ブート関連の修正 anchor.png

Raspberry Pi用の配布されているubuntu 16.04LTSはシステムのブートにU-Bootを使用している。しかし,そのままではPi3でブート出来なくなるので,その対策をする。

/usr/share/flash-kernel/bootscript/bootscr.rpi3を修正する。

setenv fdt_addr_r 0x02008000
fatload mmc 0:1 ${fdt_addr_r} bcm2710-rpi-3-b.dtb
fdt addr ${fdt_addr_r}
fdt get value bootargs /chosen bootargs
setenv kernel_addr_r 0x01000000
setenv ramdisk_addr_r 0x02100000
fatload mmc 0:1 ${kernel_addr_r} vmlinuz
fatload mmc 0:1 ${ramdisk_addr_r} initrd.img
setenv initrdsize $filesize
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${initrdsize} ${fdt_addr_r}

次にブート関連ファイルの更新を行う

# update-initramfs -u -k all

/boot/firmware/config.txt を修正する。

...
kernel=uboot.bin

# enable uart (needed for u-boot on RPi3)
enable_uart=1

# set extended DT area
# device_tree_address=0x100
# device_tree_end=0x8000
device_tree_address=0x02008000
device_tree_end=0x200ff00

# enable i2c
dtparam=i2c_arm=on
dtparam=spi=on
...
Page Top

/etc/apt/sources.listの編集 anchor.png

デフォルトのpackageリポジトリは古いため既に無効になっている。

http://ports.ubuntu.com
 ↓
http://jp.archive.ubuntu.com

に全て変更する。

Page Top

オプションPPAをリポジトリ追加する。 anchor.png

# add-apt-repository ppa:ubuntu-raspi2/ppa

として,PPAリポジトリ(Raspberry Pi用の追加package)を追加する。

オプションPPAの内容

  • libraspberrypi-bin
    VideoCoreユーティリティ(https://github.com/raspberrypi/userland
    vcgencmd, raspistill・・・
  • llibraspberrypi-bin-nonfree
    バイナリのVideoCoreユーティリティ。vcdbg,edidparser
  • xserver-xorg-video-fbturbo
    Accelerated Xドライバ。
  • hello-dkms
    RasPiでのDKMSのサンプル
Page Top

Packageの更新 anchor.png

インストールされているubuntuのpackage(PPAも含む)を更新する。

# apt-get update
# apt-get upgrade
# apt-get dist-upgrade

この時,upgrade途中で書き込みエラーとかで失敗する場合は,MicroSDカードの相性や寿命が考えられる。

Page Top

ロケールとタイムゾーンの設定 anchor.png

日本語ロケールとタイムゾーンの設定を行う。

# locale-gen ja_JP.UTF-8
# echo "LANG=ja_JP.UTF-8" | tee /etc/default/locale
# dpkg-reconfigure -f noninteractive locales
# timedatectl set-timezone Asia/Tokyo
# timedatectl status
Page Top

キーボードレイアウトの設定 anchor.png

SSH等でリモートログインして使用する場合は設定の必要ないが,モニターとキーボードを接続して使用する場合は必要になる。

# localectl set-keymap jp106
# localectl status
  System Locale: LANG=ja_JP.utf8
      VC Keymap: jp106
     X11 Layout: jp
      X11 Model: jp106
    X11 Options: terminate:ctrl_alt_bksp
Page Top

マシン名の変更 anchor.png

マシン名をpi3に変更する。

# hostnamectl set-hostname pi3

この後,ホスト名が解決できないとかメッセージが出る場合は,/etc/hostsファイルを修正する。

127.0.0.1 localhost
127.0.1.1 pi3          <-- HOSTNAMEの名前
Page Top

ユーザの追加 anchor.png

ユーザを追加する。 例:yuji

# adduser yuji

/etc/groupファイルを編集して,追加したユーザが参加するグループを片っ端から登録する。
編集し終わったら,

# grpconv

で,変更を反映させる。

Page Top

swapを使用するようにする anchor.png

Raspberry Pi用のubuntuでは,swapは有効になっていない。
swapが必要な場合は,以下の手順でswapを使えるようにする。(GUI環境にはメモリがけっこう必要)

# apt-get install dphys-swapfile

インストールが完了するとswapが使用されている。

# free

で確認できる。

Page Top

日本語マニュアルをインストール anchor.png

# apt-get install manpages-ja manpages-ja-dev
Page Top

wlanを使用できるようにする anchor.png

ブート時にエラーが出ていて,そのままではwlanが使用できない。

wlanのファームウェアを以下のようにして,ファイルを更新する。
filebrcmfmac43430-sdio.binfilebrcmfmac43430-sdio.txtを,/lib/firmware/brcmにコピーする。

# cp brcmfmac43430-sdio.bin /lib/firmware/brcm/brcmfmac43430-sdio.bin
# cp brcmfmac43430-sdio.txt /lib/firmware/brcm/brcmfmac43430-sdio.txt

wlanに必要なツールが入っていなかったらインストールする。

# apt-get install wireless-tools wpasupplicant

/etc/network/interfacesを編集する。eth0,wlan0のエントリを追加して,interfaced.dでロードするのをやめる。 /etc/network/interfaces

 :
auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wireless-power off
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#source /etc/network/interfaces.d/*.cfg             <-- コメント化

/etc/wpa_supplicant/wpa_supplicant.confを以下のように作成する。

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
country=JP
network={
        ssid="access1"
        key_mgmt=NONE                                 <-- WEPの場合
        wep_key0="xxxxxx"
        wep_tx_keyidx=0
        priority=2                                    <-- 数字が大きい方が優先される
}
network={
        ssid="access2"
        psk="xxxxxxxxxxxxxx"                          <-- WAPの場合
        priority=1
}
Page Top

いくつかのfail対策 anchor.png

/etc/modprobe.d/blacklist.confに以下を追加。

blacklist ib_iser
install ib_iser /bin/false
Page Top

i2cドライバーをロード anchor.png

/boot/firmware/config.txtには,

# enable i2c
dtparam=i2c_arm=on
dtparam=spi=on

にセットされている。(i2cやspiをon)

なぜかi2c-devモジュールが読み込めてないので,/etc/modulesに追加する。

i2c-dev

リブート後モジュールがロードされているか確認。

# lsmod
Page Top

GUI環境のセットアップ anchor.png

Raspberry Pi用のubuntuでは,GUI環境は入っていない。入れたい場合は(上記でPPAのレポジトリをわすれずに),

# apt-get install lubuntu-desktop
# apt-get install xserver-xorg-video-fbturbo
# apt-get install fonts-ipafont fonts-ipaexfont language-pack-ja fcitx-mozc
# apt-get install gnome-session-flashback language-pack-gnome-ja 

でGUI環境をインストールする。軽い? lubuntuにしてみた。サイズが1.8GBで3時間以上かかる。

/etc/X11/xorg.conf を作成する。
/etc/X11/xorg.conf

Section "Device"
    Identifier "Raspberry Pi FBDEV"
    Driver "fbturbo"
    Option "fbdev" "/dev/fb0"
    Option "SwapbuffersWait" "true"
EndSection
Page Top

VideoCoreのインストール anchor.png

vcgencmd, raspistillなどのツール。

# apt-get install libraspberrypi-bin libraspberrypi-dev

/usrにインストールされるいくつかのサードパーティのスクリプトは,/opt/vc/bin/vcgencmdにあると期待してるため,リンクを張っておく。

# ln -s /usr /opt/vc
Page Top

日本語入力mozc(fcitx)の自動起動 anchor.png

fcitx(入力メソッド)がそのままでは自動起動しないので,起動するようにする。

$ cp /usr/share/applications/fcitx.desktop  ~/.config/autostart/
Page Top

vncを使えるようにする anchor.png

GUIでリモートアクセスするために,VNCサーバーをインストールしておく。

# apt-get install tightvncserver

設定ファイルを作成するため一度vncserverを起動する。

$ vncserver

アクセス用のパスワードを設定する。

New 'X' desktop is hostname:1

のように最後の数字がデスクトップ番号になる。

停止するには,

$ vncserver -kill :1

とする。

接続用のパスワードを変更するには,

$ vncpasswd

として変更できる。

Page Top

VNCサーバーからデスクトップを起動するように設定 anchor.png

.vnc/xstartupファイルを編集する。

#!/bin/bash
xrdb $HOME/.Xresources
lxsession -s LXDE &

とかしておく。

Page Top

自動でvncserverを起動するようにする。 anchor.png

/etc/systemd/system/vncserver@.serviceファイルを作成する。
/etc/systemd/system/vncserver@.service

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
 
[Service]
Type=forking
User=[USERNAME]
PAMName=login
PIDFile=/home/[USERNAME}/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x768 :%i
ExecStop=/usr/bin/vncserver -kill :%i
 
[Install]
WantedBy=multi-user.target

Unitファイルを読み込ませる。

# systemctl daemon-reload

自動で起動するようにする。

# systemctl enable vncserver@1.service

vncserverを起動する。

# systemctl start vncserver@1

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 998, today: 1, yesterday: 3
Last-modified: 2020-12-26 (Sat) 15:08:05 (JST) (548d) by yuji