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はこれをまとめてやっている感じ)