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をインストールすることができます。

画像

PinePhone 人柱エディション(Braveheart Edition)を使うにあたり初期情報集め

PinePhoneが届いたようなので、使うための情報をつらつらと・・・

2020/02/06追記:届いていろいろやってますが、なんというか気軽に紹介記事を作れるような状態ではないので、togetterでまとめた「PinePhone Braveheart Editionを手に入れた」を参照してください。

情報源

PinePhoneの基本情報:PINE64 wikiの「PinePhone
今回出荷のPinePhone BraveHeart Editionのハードウェア情報: PINE64 wikiの「PinePhone v1.1 – Braveheart

PinePhoneで使えるOSについての情報:PINE64 wikiの「PinePhone Software Release

重要情報

Braveheart Editionは、バッテリー組み込み済みで出荷しているが、絶縁のためプラスチックシートが入っている。使用する際には取り除くこと。

また、携帯モデム部(EG25-G)とWiFi/Bluetooth部(RTL8723CS)は、バッテリー接続状態でないと使えないとのこと。(It’s also important to note that the EG25 modem and RTL8723CS wifi/bluetooth do not work without the battery plugged in, even if you are supplying enough power to the Pinephone with USB-C)

USB Type-Cで電源供給しているのにネットワークにつながらない、というような場合、バッテリーがきちんと接続されているかを確認すること。

当初、Braveheart Editionの内蔵ストレージ(eMMC)にはOSが入ってない、という話でしたが、動作テスト用に postmarketOS の特別版が入っているとのこと。ただし、いろいろと機能がかけているようなのでテスト利用にとどめること。

PinePhoneのOSは内蔵ストレージeMMCとmicroSDのどちらにもインストールできる。標準設定ではmicroSD側を優先してOSを起動する。

使えるOSについて

PINE64 wikiの「PinePhone Software Release」を参照し、img.gzとなっているイメージをダウンロードして、microSDに書き込む。

現状、SailfishOSはmicroSDにパーテーション分けが必要なようで、Linux環境向けのブート用microSD作成スクリプトの提供となっている。

webOSベースのLunaOSの場合は、bmaptoolコマンドを使いブート用microSDを作ることを推奨している。 使わなくても普通にdd相当で書き込みはできた(Windows上でrufusを使った)

rsyncによるディレクトリ同期を行う際、並列実行により高速化する手法

rsyncを高速化するために、分散して実行することにした。

全部を1つのスクリプトとしてもいいのだが、デバグがしやすいように分割して作業を行えるようにしている。

また、下記の記述はLinuxの/usrをコピーすることを想定している。環境に応じて書き換えること。

まず、/usr/xxx以下にあるファイルまでをコピーするために以下を実行する。

# rsync --archive -v --exclude="*/*/" /usr/ /mnt/vol/voltest

このexcludeオプションをつけている場合、「/usr/xxx/yyy」のファイルとシンボリックリンクはコピーされる。しかし「/usr/xxx/zzz/」のディレクトリはコピーされない。

次に、「/usr/xxx/zzz/」のディレクトリ一覧を取得する。

# find /usr -mindepth 2 -maxdepth 2 -type d -print

このディレクトリ一覧を下記のperlスクリプトに食わせる。(下記スクリプトは” find /usr -mindepth 2 -maxdepth 2 -type d -print > list.txt”で取得したlist.txtを使う想定)

#!/usr/bin/perl

use threads;
use Thread::Queue;

my $LOGDIR="/root/test";
my $MAXSESSION=5;

my $sourcepathbase="/usr";
my $destpathbase="/mnt/vol/voltest";

my $stream = Thread::Queue->new;

open(FILE,"list.txt");
while(my $tmp=<FILE>){
        $stream->enqueue("$tmp");

}
close(FILE);

sub SyncExecute{
        while(my $str = $stream->dequeue){
                # 改行削除
                $str =~ s/\n//ig;
                $str =~ s/\r//ig;
                # ログ出力用ファイル名
                my $filename=$str;
                $filename =~ s/\//-/ig;
                $filename =~ s/\.//ig;
                $filename =~ s/-$//ig;
                $filename =~ s/#//ig;
                $filename =~ s/^-//ig;
                $filename =~ s/ //ig;
                my $logfile="$LOGDIR/test-$filename.log";
                # rsync元と先の処理
                my $tmp,$st,$ed;
                my $sourcepath,$destpath;
                $tmp=substr($str,0,1);
                if($tmp eq "/"){
                        $sourcepath=$sourcepathbase.$str."/";
                        $destpath=$destpathbase.$str;
                }else{
                        $sourcepath=$sourcepathbase."/".$str."/";
                        $destpath=$destpathbase."/".$str;
                }
                `date >> $logfile`;
                print "rsync -v --archive $sourcepath $destpath >> $logfile 2>&1 \n";
                `rsync -v --archive $sourcepath $destpath >> $logfile 2>&1 `;
                `date >> $logfile`;
                #`sleep 5`;
        }
}


my @kids;
foreach(1..$MAXSESSION){
        my $kid = threads->new(\&SyncExecute,$stream);
        push(@kids,$kid);
        $stream->enqueue(undef);
}


print "wait\n";

foreach(@kids){
        my ($return) =$_ -> join;
}

このスクリプトは、rsyncの同時実行数5で、並列にrsyncを実行していくものになっている。

実行したサーバの負荷状況に応じて「my $MAXSESSION=5;」で設定している 同時実行数 を調整する。あまり大きくしすぎるとサーバからの応答が遅くなりすぎるのでほどほどに・・・


2020/03/10追記

上記で実行するrsyncコマンドはハードリンクの処理を行わないものとなっている。

このため、ハードリンクされているファイルがある場合、コピー先のファイルが1つではなく複数別個のものとしてコピーされる。

ハードリンクをそのままコピーしたい場合は「–hard-links」オプションを追加する必要があるのだが、ハードリンク処理の効力範囲は同一プロセス内で処理すること、という条件があるため、今回のような分割処理して高速化する、という場合には不適切となっている。

このため、ハードリンクファイルがある場合は、初回同期は分割処理で行い、2回目はディレクトリ全体を–hard-linksオプションをつけて1プロセスで処理してハードリンク処理を行わせる、という手法をとる必要がある。

なお、ハードリンク処理が完了したあと、分割処理の対象となった場合、すでにファイルが存在しているので再コピーされる、ということは発生しない。

GL.iNet GL-MV1000でDynamic DNSが動かない

GL.iNet GL-MV1000のlcuiの方でdyn.comのDynamic DNSを設定したのだが、再起動時に自動実行してくれない。

設定画面としては下記の様になっている。

Enabledにチェックが入っているので、自動起動してもよさそうなのだがしていない。

とりあえず起動の仕組みをさぐるため、ルータにrootでログイン。

とりあえず「/etc/init.d」にはどんなファイルがあるのか確認してみると「ddns」というソレっぽいファイルが。

root@GL-MV1000:~# ls /etc/init.d
boot              firewall          gl_s2s            initswitch        openvpn           sysctl            usbmode
bootcount         firewall_gl       gl_tertf          led               qosswitch         sysfixtime        vpn-service
clear_flag        gl_fixdomain      gl_udp_server     lighttpd          relayd            sysntpd           wireguard
cron              gl_init           glcrond           log               rpcd              system            wireguard_server
ddns              gl_monitor        glfw              modem-init        samba             ucitrack
dnsmasq           gl_mqtt           glqos             mwan3             smstools3         uhttpd
done              gl_mv1000         gpio_switch       network           startvpn          umount
dropbear          gl_route_policy   haveged           odhcpd            stubby            urandom_seed
root@GL-MV1000:~#

/etc/rc.dには「S95ddns」と「K10ddns」(どちらも/etc/init.d/ddnsへのシンボリックリンク)

root@GL-MV1000:~# ls /etc/rc.d
K10ddns              S00sysfixtime        S19dnsmasq           S50glfw              S95ddns              S99lighttpd
K10gpio_switch       S10boot              S19dropbear          S50stubby            S95done              S99startvpn
K50dropbear          S10gl_mv1000         S19firewall          S60samba             S96led               S99urandom_seed
K51stubby            S10system            S19mwan3             S70modem-init        S98sysntpd           S99wireguard
K85odhcpd            S11sysctl            S20network           S80gl_tertf          S99bootcount         S99wireguard_server
K89log               S12log               S20usbmode           S80relayd            S99gl_monitor
K90network           S12rpcd              S21initswitch        S80ucitrack          S99gl_mqtt
K90sysfixtime        S13haveged           S35odhcpd            S90vpn-service       S99gl_route_policy
K98boot              S15gl_fixdomain      S50cron              S94gpio_switch       S99gl_s2s
K99umount            S18firewall_gl       S50glcrond           S94smstools3         S99gl_udp_server
root@GL-MV1000:~#

すでに/etc/rc.d/S95ddnsがあるので起動時から動作していても良さそうなのにしていない、ということはスクリプトの中で何らかの処理を行っているはず、ということで中身を確認。

root@GL-MV1000:~# cat /etc/init.d/ddns
#!/bin/sh /etc/rc.common
START=95
STOP=10
boot() {
return 0
}
reload() {
/usr/lib/ddns/dynamic_dns_updater.sh -- reload
return 0
}
restart() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
sleep 1
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
start() {
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
stop() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
return 0
}
root@GL-MV1000:~#

「start()」で「uci -q get ddns.glddns.enabled」の値を確認している。

root@GL-MV1000:~# uci -q get ddns.glddns.enabled
root@GL-MV1000:~#

現状は値が設定されていないため、起動していないようだ。

uciのパラメータを全部確認する場合は「uci -q show」で確認できるので、「uci -q show|grep dns.」を実行してみた。

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.myddns_ipv4=service
ddns.myddns_ipv4.lookup_host='yourhost.example.com'
ddns.myddns_ipv4.domain='yourhost.example.com'
ddns.myddns_ipv4.username='your_username'
ddns.myddns_ipv4.password='your_password'
ddns.myddns_ipv4.interface='wan'
ddns.myddns_ipv4.ip_source='network'
ddns.myddns_ipv4.ip_network='wan'
ddns.myddns_ipv4.service_name='dyn.com'
ddns.myddns_ipv4.enabled='0'
ddns.myddns_ipv6=service
ddns.myddns_ipv6.update_url='http://[USERNAME]:[PASSWORD]@your.provider.net/nic/update?hostname=[DOMAIN]&myip=[IP]'
ddns.myddns_ipv6.lookup_host='yourhost.example.com'
ddns.myddns_ipv6.domain='yourhost.example.com'
ddns.myddns_ipv6.username='your_username'
ddns.myddns_ipv6.password='your_password'
ddns.myddns_ipv6.use_ipv6='1'
ddns.myddns_ipv6.interface='wan6'
ddns.myddns_ipv6.ip_source='network'
ddns.myddns_ipv6.ip_network='wan6'
ddns.myddns_ipv6.enabled='0'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='********************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='********************'
ddns.osakana.username='********************'
ddns.osakana.password='********************'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

ん?

「glconfig.ddns.enabled=’0’」?

もしかして、GL.iNet Admin Panelの方にある???

[アプリケーション]-[リモートアクセス]に「ダイナミックDNS」がありました。

有効化をしてみます

これにより「uci -q show|grep dns.」に大きな変化が・・・

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.global.use_curl='1'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='*******************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='*******************'
ddns.osakana.username='*******************'
ddns.osakana.password='*******************'
ddns.glddns=service
ddns.glddns.interface='wan'
ddns.glddns.check_interval='10'
ddns.glddns.check_unit='minutes'
ddns.glddns.force_interval='60'
ddns.glddns.force_unit='minutes'
ddns.glddns.ip_url='http://checkip.dyndns.com'
ddns.glddns.ip_source='web'
ddns.glddns.password='*******************'
ddns.glddns.username='*******************'
ddns.glddns.domain='cx0f702.glddns.com'
ddns.glddns.param_enc='cx0f702'
ddns.glddns.lookup_host='cx0f702.glddns.com'
ddns.glddns.service_name='glddns.com'
ddns.glddns.update_url='http://[USERNAME]:[PASSWORD]@ddns.glddns.com/nic/update?hostname=[PARAMENC]&myip=[IP]'
ddns.glddns.enabled='1'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
glconfig.ddns.check_status='1'
glconfig.ddns.ddns_enabled='1'
glconfig.ddns.http_enabled='0'
glconfig.ddns.https_enabled='0'
glconfig.ddns.ssh_enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

そして、luciの方も無事Dynamic DNSが起動している状態となりました。

また、GL.iNetの提供するDynamic DNS(glddns)もあわせて有効になっています。