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でフォーマット出来なくなってしまっている。
なので,古いfileBuffaloのDiskFormatter2なんかを使ってフォーマット(論理サイズ調整を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

新しくコメントをつける

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

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1917, today: 1, yesterday: 0
最終更新: 2020-12-26 (土) 15:08:05 (JST) (1215d) by yuji