最近のarmbianでOrange Pi PC2が起動しない件の対処

去年使った際にArmbian_23.02.1_Orangepipc2_jammy_current_5.15.93_xfce_desktop を使ってセットアップしたOrange Pi PC2を久々にapt update; apt upgradeしたら、起動途中で止まるようになった。

plymouth-start.service で止まっているように見えた

とりあえず別のmicro SDに最新の Armbian_community_24.8.0-trunk.139_Orangepipc2_noble_current_6.6.31_gnome_desktop を書き込んで起動してみたところ、同じ場所で止まった

plymouth ということは ロゴ表示関連?と疑って /boot/armbianEnv.txt を編集して「bootlogo=false」設定?と思ってみたら、すでに設定されていました。

試しに「bootlogo=true」に変えてみると、ロゴ自体はちゃんと表示され、そのあとの処理で止まっているようだった。

armbianフォーラム「Armbian 24.2 is broken on Orange PI PC2」を読んでみると以下のことがわかった

・kernel 6.1以降おかしい
・armbianのシステムで自動生成されつづける最新イメージファイルは Orange Pi PC2で動かない
・昔のdtbファイルを使うと新しいkernelでも起動する

ということなので、まずはmicroSDを他のLinuxでマウントして、関連しそうなdtbファイルを確認

osakanataro@ubuntuserver:/mnt$ find . -print|grep dtb|grep orange
find: ‘./root’: 許可がありません
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero2w.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-lite2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3-lts.dtb
find: ‘./var/spool/rsyslog’: 許可がありません
find: ‘./var/spool/cron/crontabs’: 許可がありません
find: ‘./var/spool/cups’: 許可がありません
find: ‘./var/lib/private’: 許可がありません
find: ‘./var/lib/ubuntu-advantage/apt-esm/var/lib/apt/lists/partial’: 許可がありません
find: ‘./var/lib/openvpn/chroot’: 許可がありません
find: ‘./var/lib/lightdm-data/lightdm’: 許可がありません
find: ‘./var/lib/apt/lists/partial’: 許可がありません
find: ‘./var/lib/update-notifier/package-data-downloads/partial’: 許可がありません
find: ‘./var/lib/udisks2’: 許可がありません
find: ‘./var/lib/chrony’: 許可がありません
find: ‘./var/lib/NetworkManager’: 許可がありません
find: ‘./var/lib/polkit-1’: 許可がありません
find: ‘./var/lib/lightdm’: 許可がありません
find: ‘./var/log/private’: 許可がありません
find: ‘./var/log/chrony’: 許可がありません
find: ‘./var/log/speech-dispatcher’: 許可がありません
find: ‘./var/cache/private’: 許可がありません
find: ‘./var/cache/apt/archives/partial’: 許可がありません
find: ‘./var/cache/ldconfig’: 許可がありません
find: ‘./var/cache/cups’: 許可がありません
find: ‘./var/cache/lightdm/dmrc’: 許可がありません
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h616-orangepi-zero2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-one-plus.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-prime.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-a64-orangepi-win.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero3.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero2w.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-lite2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3-lts.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h616-orangepi-zero2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-one-plus.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-prime.dtb
find: ‘./etc/vpnc’: 許可がありません
find: ‘./etc/ssl/private’: 許可がありません
find: ‘./etc/polkit-1/localauthority’: 許可がありません
find: ‘./etc/cups/ssl’: 許可がありません
find: ‘./lost+found’: 許可がありません
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-a64-orangepi-win.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero3.dtb
osakanataro@ubuntuserver:/mnt$ 

“sun50i-h5-orangepi-pc2.dtb”というファイルがそれっぽい。2カ所にあるが、どちらも同じ内容のようだ

osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$

Armbian_23.02.1_Orangepipc2_jammy_current_5.15.93_xfce_desktop.img を展開して、 kernel 5.15.93時代の sun50i-h5-orangepi-pc2.dtb に置き換えた

osakanataro@ubuntuserver:/mnt$ ls -l /tmp/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 osakanataro osakanataro 32052  2月 23  2023 /tmp/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ sudo mv ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb.org
osakanataro@ubuntuserver:/mnt$ sudo cp /tmp/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ sudo mv ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb.org
osakanataro@ubuntuserver:/mnt$ sudo cp /tmp/sun50i-h5-orangepi-pc2.dtb ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 root root 32052  6月 19 11:05 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 root root 32052  6月 19 11:05 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$

これで起動を行ったところ、問題なく起動してきました。

dtbファイルを古いまま使う方法ってあるのかな・・・

kernelをアップデート対象から外ししかない??

armbianの初期設定項目 2022/04/21版

さすがに2017年に作った「Armbianの初期設定項目」は現状にふさわしくないので改訂

(1) armbian OSの入手について

armbian公式からダウンロードするわけだが、”Armbian 22.02 Focal”とか”Armbian 22.02 Jammy XFCE” のどちらがubuntu/debianなのかわかりにくい。

Ubuntu 14.04 LTSTrusty TahrDebian 8ベース
Ubuntu 16.04 LTSXenial XerusDebian 9ベース
Ubuntu 18.04 LTSBionic BeaverDebian 10ベース
Ubuntu 20.04 LTSFocal FossaDebian 10ベース
Ubuntu 22.04 LTSJammy JellyfishDebian 11ベース?
Ubuntu 24.04 LTSNoble Numbat
Debian 8.0jessie
Debian 9.0stretch
Debian 10.0buster
Debian 11.0bullseye
Debian 12.0bookworm

「Armbian 22.02 Focal」はUbuntu 20.04LTSベースで、「Armbian 22.02 Jammy XFCE」はUbuntu 22.04LTSベースでX-WindowのXFCE環境付き、ということが分かる。

(2) SDカードへの書き込みについて

経験則的にAllwinner SoCのOrange Pi/Nano Piなどは、microSDカードの個体差?メーカ差?なのかよくわからない原因で起動しなかったり、よくデータが飛んだりします。

起動しない場合は何度かイメージを書き直してみるといけるようになったり、違うmicroSDにすると普通に起動してきたりします。

なお、私はWindows環境でのイメージ書き込みには「Rufus」を使用しています。

Ubuntuの場合は、ddコマンドで書き込みますが、「bmaptool」で書き込むこともあります。(apt install bmap-toolsでインストールできます)

$ sudo bmaptool copy --nobmap Armbian_22.02.1_Orangepione_focal_current_5.15.25_xfce_desktop.img /dev/sde
bmaptool: info: no bmap given, copy entire image to '/dev/sde'
bmaptool: info: 100% copied
bmaptool: info: synchronizing '/dev/sde'
bmaptool: info: copying time: 10m 35.9s, copying speed 7.6 MiB/sec
$

(3) 初回起動について

初回起動時にログインユーザやパスワードの設定をします。

また、microSDのサイズにあわせたパーテーションサイズ調整も実施されます。

(4) 初期設定

まず、LocaleやTimezoneに関する設定を確認

「timedatectl」と「localectl」、「echo $LANG」を実行します。

$ timedatectl
               Local time: 木 2022-04-21 20:11:30 JST
           Universal time: 木 2022-04-21 11:11:30 UTC
                 RTC time: 木 2022-04-21 11:11:06
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ echo $LANG
ja_JP.UTF-8
$

基本的には初回起動時にTimezone設定してるので、そこでそれなりの設定がされていると思います。

ユーザの言語は「ja_JP.UTF-8」、システムとしての言語は「en_US.UTF-8」というのがトラブルが起きにくいとは思っています。

変更する場合、言語設定
「sudo dpkg-reconfigure locales」
タイムゾーン設定
「sudo timedatectl set-timezone Japan」と実行するか、「sudo dpkg-reconfigure tzdata」
キーボードの言語設定(キー配列)
「sudo localectl set-x11-keymap jp」「sudo dpkg-reconfigure keyboard-configuration」

(5) OSアップデート

Armbian自体の更新+Ubuntu/Debianの更新を実施
「sudo apt update」「sudo apt upgrade」

なお、locales アップデートの際に発生する「Generating locales」のプロセスにだいぶ時間が掛かります。

また、アップデート中に下記のような質問があり回答を要求されて止まりますので注意してください。

ubuntu-advantage-tools (27.7~20.04.1) を設定しています ...

設定ファイル '/etc/logrotate.d/ubuntu-advantage-tools'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** ubuntu-advantage-tools (Y/I/N/O/D/Z) [デフォルト=N] ? y
新バージョンの設定ファイル /etc/logrotate.d/ubuntu-advantage-tools をインストールしています ...

(6) SBC firmwareのアップデート

一部のSBCにはfirmware アップデートがarmbianレポジトリ経由で提供されているようです。

「sudo armbian-config」で起動して「System」を選択

「Firmware」を選択

「はい」を選択

アップデートが終わるのを待ちます

再起動を選んで再起動します。

(ただ、これ、アップデートなくても再起動要求してるような気がします・・・)

(7) X-Windowの日本語文字化け解消

「sudo apt install fonts-takao-gothic」で一部残る文字化けが消えると思います。

(8) X-Windowでの音声出力先変更

Orange Piの場合、本体上に3.5φステレオ端子が存在していると標準の音声出力先もそちらに設定されていることが多いです。

この場合は、X-Windowの右上に出ているスピーカーアイコンをクリックし、[Default Sink]にある2つの「Built-in Audio Stereo 100%」を他方に切り替えてみてください。

なお、3.5φステレオ端子がない場合は1つしか表示されていないと思います。

(9) GPIO コネクタにPWM付けるファンを使うための設定

ラズパイ用のやつの絵を流用しますが・・・(出典:スイッチサイエンスのRaspberry Pi 4 用ケースファン)

これで3本で繋いだ場合の話です。

armbian-configのHardwareでpwmを有効にする感じでいけるようです

GloDroidがninjaのエラーでビルドできない

PinePhoneやOrange Pi OneなどのAllwinner SoCで動くAOSPベースのandroidであるGloDroidというのがある。

これはGoogle Play StoreなどのGoogle関連(GMS)が入っていないので使いづらい。OpenGappsでも入れられないかなぁ?とパッケージをみてみたけど、こちらはTWRP用にカスタマイズされていてよく分からない・・・

GloDroidのgithubを見るとprebuilt_appsなんてレポジトリがありfdroidとkodiのインストールについての定義がある。ここらを応用すれば何かできないかなぁ、と思ってGloDroidを自分でビルドしてみることにした。

最初Ubuntu 18.04環境で作ってみたけど、うまくいかないのでGoogleのドキュメント上では推奨されているUbuntu 14.04環境作ってみたりしたけど、うまくいかなかった。

エラーの状況

Ubuntu 18.04でもUbuntu 14.04でもほぼ同じで下記のようなエラーが出力されます。

============================================
[100% 451/451] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
10:47:31 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.build/make/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
osakanataro@ubuntuserver:~/GloDroid$

out/soong.log の最後は下記のようなエラーです。

2020/06/12 10:47:31.168342 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1

Ubuntu 14.04の場合

Javaのバージョンが古いので新しいOpenJDKを使える様にする。

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt install openjdk-13-jdk

Googleのドキュメント(Establishing a Build Environment)記載のパッケージをインストール。

$ sudo apt install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

また、上記のNoteに記載されている「python-networkx」と「libnss-sss:i386」も必要で、これが無いことでninjaのエラーがでていました。

$ sudo apt install python-networkx libnss-sss:i386

Repoのインストールを「Downloading the Source」記載の手順で行います。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
 gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
$ curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo

repo内部ではgitコマンドを使用するためgitの初期設定も行います。

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

次にGloDroidで要求されているパッケージをインストール。(記述にはrepoが含まれてますがパッケージじゃないので抜く)

$ sudo apt install swig  python-dev python3-dev libssl-dev flex bison device-tree-compiler

で・・・この後、試行錯誤した結果、さらに以下のパッケージも必要でした。

$ sudo apt install python-pip gettext gdisk

Ubuntu 18.04の場合

Ubuntu 14.04の場合とだいたい一緒でした。

いまコンパイルして実証中です・・・(まだ結果が出ていない

2020/06/13 22:39 うーん・・・エラーだ

[100% 8/8] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
22:37:24 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.
#### failed to build some targets (02:38:03 (hh:mm:ss)) ####

out/soong.log の最後のあたりはこんな感じ

2020/06/13 19:59:25.251629 build/soong/ui/build/dumpvars.go:109: PRODUCT_SOONG_NAMESPACES
2020/06/13 19:59:25.252084 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x build/blueprint/bootstrap.bash -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -t]
2020/06/13 19:59:25.326955 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x out/soong/.bootstrap/bin/soong_env -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- out/soong/.soong.environment]
2020/06/13 19:59:25.761444 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.minibootstrap/build.ninja]
2020/06/13 19:59:27.066701 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.bootstrap/build.ninja]
2020/06/13 22:37:24.168572 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1

PinePhoneをSailfish OSで使う

PinePhoneをNOKIA/Intelが作ったMeeGoの末裔であるSailfish OSで使うためのまとめ。

なお、Sailfish OSはjolla社の商用OSです。フルOSS版はNemo Mobileです。

起動用microSDの作り方

Linux環境でPinePhone Software ReleaseのSailfish OSの項目にある flash-it.sh スクリプトを実行して作成する。実行するとファイルのダウンロードを開始するので、実際のmicroSD書き込みが始まるまでには若干時間がかかる。

osakanataro@ubuntuserver:~$ ./flash-it.sh 
Sailfish OS Pine64 device flasher V0.2.0
======================================

Which image do you want to flash?
1) PinePhone device
2) PineTab device
3) Dont Be Evil devkit
#? 1
Downloading images...
<ファイルのダウンロード>
Which SD card do you want to flash?
<いまマウントしているデバイス一覧表示>
Device node (/dev/sdX): /dev/sdb
Flashing image to: /dev/sdb
WARNING: All data will be erased! You have been warned!
Some commands require root permissions, you might be asked to enter your sudo password.
Creating EXT4 file system...
Unmounting /dev/sdb
[sudo] osakanataro のパスワード: 
umount: /dev/sdb: not mounted.
Unmounting /dev/sdb1
umount: /dev/sdb1: not mounted.
Unmounting /dev/sdb2
umount: /dev/sdb2: not mounted.
mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb1 contains a ext4 file system labelled 'boot'
	last mounted on /home/osakanataro/boot on Thu Jan  1 09:00:19 1970
Creating filesystem with 242688 1k blocks and 60720 inodes
Filesystem UUID: 6c3c5d0c-98bf-4149-a78a-10613da0e8ef
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185

Allocating group tables:  0/30     done                            
Writing inode tables:  0/30     done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information:  0/30     done

mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb2 contains a ext4 file system labelled 'data'
	last mounted on / on Thu Jan  1 09:00:15 1970
Creating filesystem with 7754240 4k blocks and 1941504 inodes
Filesystem UUID: b45e4f0b-a36e-4b8a-8f89-3ba4b63219a2
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables:   0/237       done                            
Writing inode tables:   0/237       done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:   0/237       done

Flashing U-boot...
Archive:  u-boot.zip
  inflating: u-boot-bootloader/devkit/boot.scr  
  inflating: u-boot-bootloader/pinephone/boot.scr  
  inflating: u-boot-bootloader/pinetab/boot.scr  
  inflating: u-boot-bootloader/u-boot/u-boot-sunxi-with-spl.bin  
81+1 レコード入力
81+1 レコード出力
663992 bytes (664 kB, 648 KiB) copied, 0.029419 s, 22.6 MB/s
Flashing rootFS...
Archive:  pinephone-rootfs.zip
  inflating: pinephone/sfe-pinephone-3.2.1.20-devel-20200202/Jolla-3.2.1.20-pinephone-armv7hl.ks  
  inflating: pinephone/sfe-pinephone-3.2.1.20-devel-20200202/Jolla-3.2.1.20-pinephone-armv7hl.packages  
  inflating: pinephone/sfe-pinephone-3.2.1.20-devel-20200202/Jolla-3.2.1.20-pinephone-armv7hl.urls  
  inflating: pinephone/sfe-pinephone-3.2.1.20-devel-20200202/sfe-pinephone-3.2.1.20-devel-20200202.tar.bz2  
pinephone/sfe-pinephone-3.2.1.20-devel-20200202/sfe-pinephone-3.2.1.20-devel-20200202.tar.bz2
Copying kernel to boot partition...
Cleaning up!
Unmounting /dev/sdb
umount: /dev/sdb: not mounted.
Unmounting /dev/sdb1
Unmounting /dev/sdb2
Flashing /dev/sdb OK!
You may now remove the SD card and insert it in your Pine64 device!
osakanataro@ubuntuserver:~$

初回起動について

まず、2020年2月12日現在、言語に日本語はない。英語でセットアップする。

jollaアカウントの作成が求められる。

また、使い方説明のチュートリアルがあり、これが結構長い。とはいえ、Androidからだとすぐにわからない操作もあるので1回は受けておくこと。

なお、チュートリアルは、画面の 左上隅、右上隅、右下隅、左下隅の順にクリック すると飛ばすことができる。(jolla Q&A「How do I cancel tutorial? [answered]」)

LTEの使用方法

2020年2月12日現在、オフィシャルレポジトリだけではLTEが利用可能にならなかった。

PinePhone向けに積極的な開発を行っているneochapayさんが公開している開発用レポジトリ http://repo.merproject.org/obs/home:/neochapay:/mer:/build_test/sailfishos_3.2.1.20/ を追加することで利用可能になる。

追加はterminalからコマンドを実行して行う。パソコンからsshでログインして操作すると良い。sshでログインする際のユーザ名は「nemo」となる。(パスワードはSetting画面で設定する)

最初にrootユーザになるため「devel-su」コマンドを実行する。

[nemo@PinePhone ~]$ devel-su
Password: 
[root@PinePhone nemo]#

次に現在のレポジトリを確認するため「ssu lr」を実行する。

[root@PinePhone nemo]# ssu lr
Enabled repositories (global): 
 - adaptation-community        ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/pinephone/sailfish_latest_armv7hl/
 - adaptation-community-common ... http://repo.merproject.org/obs/nemo:/devel:/hw:/common/sailfish_latest_armv7hl/
 - adaptation-dontbeevil       ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/dontbeevil/sailfish_latest_armv7hl/
 - adaptation-pinephone        ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/dontbeevil:/pinephone/sailfish_latest_armv7hl/
 - apps                        ... https://releases.jolla.com/jolla-apps/3.2.1.20/armv7hl/
 - hotfixes                    ... https://releases.jolla.com/releases/3.2.1.20/hotfixes/armv7hl/
 - hw-native-common            ... http://repo.merproject.org/obs/nemo:/devel:/hw:/native-common/sailfish_latest_armv7hl/
 - jolla                       ... https://releases.jolla.com/releases/3.2.1.20/jolla/armv7hl/

Enabled repositories (user): 
 - store ... https://store-repository.jolla.com/pinephone/armv7hl/?version=3.2.1.20

Disabled repositories (global, might be overridden by user config): 

Disabled repositories (user): 
 - home ... https://download.jollamobile.com/home:/honeybadger/latest_armv7hl/
[root@PinePhone nemo]#

ここに、レポジトリを追加するため「ssu addrepo neochapay-repo http://repo.merproject.org/obs/home:/neochapay:/mer:/build_test/sailfishos_3.2.1.20/」と実行します。

[root@PinePhone nemo]# ssu addrepo neochapay-repo http://repo.merproject.org/obs/home:/neochapay:/mer:/build_test/sailfishos_3.2.1.20/
[root@PinePhone nemo]# 

追加されたことを「ssu lr」で確認します。

[root@PinePhone nemo]# ssu lr
Enabled repositories (global): 
 - adaptation-community        ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/pinephone/sailfish_latest_armv7hl/
 - adaptation-community-common ... http://repo.merproject.org/obs/nemo:/devel:/hw:/common/sailfish_latest_armv7hl/
 - adaptation-dontbeevil       ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/dontbeevil/sailfish_latest_armv7hl/
 - adaptation-pinephone        ... http://repo.merproject.org/obs/nemo:/devel:/hw:/pine:/dontbeevil:/pinephone/sailfish_latest_armv7hl/
 - apps                        ... https://releases.jolla.com/jolla-apps/3.2.1.20/armv7hl/
 - hotfixes                    ... https://releases.jolla.com/releases/3.2.1.20/hotfixes/armv7hl/
 - hw-native-common            ... http://repo.merproject.org/obs/nemo:/devel:/hw:/native-common/sailfish_latest_armv7hl/
 - jolla                       ... https://releases.jolla.com/releases/3.2.1.20/jolla/armv7hl/

Enabled repositories (user): 
 - neochapay-repo ... http://repo.merproject.org/obs/home:/neochapay:/mer:/build_test/sailfishos_3.2.1.20/
 - store          ... https://store-repository.jolla.com/pinephone/armv7hl/?version=3.2.1.20

Disabled repositories (global, might be overridden by user config): 

Disabled repositories (user): 
 - home ... https://download.jollamobile.com/home:/honeybadger/latest_armv7hl/
[root@PinePhone nemo]#

この後、「zypper refresh」でレポジトリ更新、「zypper list-updates」でアップデートできるファイル確認、「zypper update」でパッケージアップデートの実行を行い、最後、「reboot」コマンドで再起動します。

再起動後からはLTEが使える様になります。

アップデート手法について

通常のOSアップデートはTerminalを開いて「version –dup」コマンドを実行するとアップデートできます。

パッケージの細かいあたりまで制御したい場合はzypperコマンドを使用する必要がありますが、こちらのコマンドはdevel-suコマンドでrootユーザになってから実行する必要があります。

「zypper refresh」で情報更新して、「zypper list-updates」でアップデートされるパッケージを確認、「zypper update」でアップデート適用、です。(version –dupはこれをまとめてやっている感じ)

PinePhoneをpostmarketOSで使う

PinePhoneをpostmarketOSで使うためのまとめ

使うイメージについて

Images for the PinePhone」からimgファイルをダウンロードして、microSDに書き込むことで使える様になるが、使ったmicroSDのサイズにあわせてパーテーションを調整してくれないのが微妙なところです。

上記サイトからダウンロードする際は「-plasma.img.xz」となっているKDE Plasma Mobileベースのものを利用するのがお勧めです。

なお、「-phosh.img.xz」はGNOMEベースのLinuxフォンLibrem 5用に開発されているものを使用しています。

使うmicroSDの容量にあったパーテーション割りを希望する場合は、Linux上でpostmarketOSのOS用microSD書き込み環境を作成して書き込む必要があります。

pmbootstrapによるmicroSD作成

まず「Installing pmbootstrap」にある手順を実施します。

ベースOSを何にしろ、と特に書いてなかったので、とりあえずUbuntu 18.04LTSでインストールして構築しました。

次に、「Installation guide」の手順でカスタマイズと書き込みを行います。

注意点として「pmbootstrap init時の User interface 設定」があります。

これをデフォルトの「watson」で設定してしまうと、タッチインタフェースだけでは操作できない環境となってしまいます。 「User interface [weston]: plasma-mobile-extras」 で設定しましょう。

また、途中にパスワードについては、2020年2月10日現在、数字パスワードである必要があります。これは現時点でのロック解除画面が数字入力のみ対応であるためです。(PinePhone Software Release より)

画像

LTEの使用方法

GUIのSettingにある「Mobile Broadband」項目は正常に動作しません。

現時点では、Terminalを開いてコマンドを入力する必要があります。

$ sudo ofonoctl poweron
10秒ぐらい待つ
$ sudo ofonoctl wan --connect --append-dns

楽天モバイルの無料サポータープログラムの楽天回線SIMだとAPN設定をいれなくても使えました。

ただし、postmarketOSは標準設定でusb0に172.16.24.0/16のIPアドレスを割り当てています。このIPアドレス帯を楽天モバイルでは使っていて、特にDNSサーバが172.16.206.0/24にあったりするので、名前解決ができないという事態になりました。

このためterminalから「sudo ip link set usb0 down」を実行し、usb0を使えなくすることで対処しています。

ofonoctlコマンドの覚え書き

回線の接続状況確認「ofonoctl」

データ通信の接続状況確認「ofonoctl wan」

WiFiの使用方法

GUIのSettingにある「Wi-Fi」から接続設定はできます。

わかりにくいのですが、各SSIDを選択し、パスフレーズを入力した後に、なにやらパスワード入力を求められます。

これは、パスフレーズを保存するためのパスワードなので、適当に何かを設定します。

WiFi選択画面の下記ボタンをクリックすると、WiFiがOFFになります。

アップデートとインストール

postmarketOSのアップデートは「sudo apk update」と「sudo apk upgrade」で行います。

パッケージ検索は「sudo apk search 検索ワード」、パッケージインストールは「sudo apk add パッケージ名」でインストールできます。

うちの環境では標準のAngelfish Web Browserが全然動作してくれません。

「sudo apk add font-noto-cjk」 「sudo apk add firefox」 で日本語表示対応のFirefoxをインストールすることができます。

画像