講談社「コミックDAYS」Web版サービス開始

講談社のコミックDAYSのWeb版が今日からサービス開始!

ざっくりと

  • ヤングマガジン,モーニング,アフタヌーン,イブニング,Kiss,BE・LOVEの6誌が対象の定期購読サービス
  • 雑誌発売日の0時から読める(関東以外だとかなり嬉しい)
  • 購読期間は2ヶ月分2号分(最新号と前号が読める.週刊誌は2週分,月刊誌は2ヶ月分)
  • 月額720円
  • 月当たり200ポイントもらえてコミック(単話単位で購入可能)の購入に使える
  • 単話で購入した後差額でコミックが購入できる
  • アプリは3/1リリース予定
  • iOS/Android/Webどれでも購読可能

ということでとりあえず無料期間は試してみるつもり.

ちなみにモーニングにはDモーニングというサービスが以前からある.Dモーニングは月額500円(税込み)でモーニング(一部作者のものは読めなかったりDモーニング限定などがあって紙版と少し違う)が毎週発売日の0時から読めてこれも安いと思っていたのだけどさらに安い.ちなみにDモーニングだと契約期間中のバックナンバーは全ていつでも読めるし,(iOS/Android)デバイスにダウンロードしてオフラインで読むことも出来るのが便利.

類似サービスのマガジン☆WALKERはコミック誌以外にいろいろな雑誌(出版社複数)も読めて月額500円(税別).バックナンバーは2ヶ月分でそれ以前は読めない.(iOS/Android)デバイスにダウンロードしてオフラインで読むことも出来る.単純に雑誌の数はここが一番多いので読むものがあるなら一番オトク.

NextcloudのWeb Installer

最近13が出たNextcloudですが,先日自宅サーバのownCloudもNextcloudに移行しました.
その時気づいたのですが,インストールページにWeb Installerというものが増えていました.

20180214_22:02:05-30568

いつもはArchiveをダウンロードしてverifyして展開してセットアップという流れでしたが,これだとWeb Installer ScriptをダウンロードしてWebPublicに置いてアクセスすると以下のようなSetup Wizardがはじまり,Nextcloud本体をダウンロードして展開してくれます.

$ wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
$ sudo -u www-data mv setup-nextcloud.php /var/www/

https://example.com/setup-nextcloud.php

20180131_08:01:38-11248

次の画面で導入ディレクトリを指定すると後はいつものセットアップウィザードが走ります.

20180131_08:01:54-11374

shellの使えないサーバなんかでは便利そうです.

ちなみにこのときownCloudから以下のような感じでデータ移行したのですが,数ユーザ,データ量50GB程度でしたが復号化暗号化ですごい時間かかりました.

  • ユーザの確認
    occ user:list
  • ownCloudで暗号化解除
    occ encryption:decrypt-all
  • rsync とかで owncloud/data/${USER}/files を nextcloud/data/${USER}/files にコピー
  • Nextcloudでファイルスキャン
    occ files:scan -p /${USER}/files ${USER}
  • Nextcloudで暗号化
    occ encryption:encrypt-all

この辺を見るとデータはそのまま移行できたようです…….

追記)

やっぱり簡単に移行できそう.

Btrfsでdfで空き容量があるように見えるのに容量が無いと言われてreadonlyにされてしまう

最近Btrfsで利用中にroにされてしまうという症状が起きます.
こんな感じで怒られてroになる.
dfは87%とかで未だ空きはあるように見える.
/に使ってるとこでremount,rwも効かず再起動しないと戻せず辛い.

[ 2196.878532] BTRFS: error (device dm-1) in btrfs_truncate_inode_items:4647: errno=-28 No space left
[ 2196.878537] BTRFS info (device dm-1): forced readonly
[ 2196.881248] BTRFS error (device dm-1): pending csums is 1241088

FAQだったようでここを参照しながら

別のsystemで確認してbtrfs fi balance start -dusage=5を叩いてみました.

$ sudo btrfs fi show
Label: none uuid: e54de82f-1fdb-4f9a-b529-0952b0ea3454
        Total devices 1 FS bytes used 465.89GiB
        devid 1 size 542.28GiB used 542.28GiB path /dev/mapper/x220--vg-root

$ sudo mount -o ro /dev/mapper/x220--vg-root /mnt
$ sudo btrfs fi df /mnt
Data, single: total=538.27GiB, used=462.41GiB
System, single: total=4.00MiB, used=80.00KiB
Metadata, single: total=4.01GiB, used=3.48GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
$ sudo btrfs fi balance start -dusage=5 /mnt
ERROR: error during balancing '/mnt': Read-only file system
There may be more info in syslog - try dmesg | tail
$ sudo mount -o remount,rw /mnt
$ sudo btrfs fi balance start -dusage=5 /mnt
Done, had to relocate 0 out of 546 chunks

しかしあまり変わらず暫く利用しているとまたエラーに.しかし今度はdisk fullと怒られるけどroにはならなかったです.以下のページによると,

This means the bigger the -dusage value, the more work balance will have to do (i.e. taking fuller and fuller blocks and trying to free them up by putting their data elsewhere). Also, if your FS is 55% full, using -dusage=55 is ok, but there isn’t a 1 to 1 correlation and you’ll likely be ok with a smaller dusage number, so start small and ramp up as needed.

ということで-dusage=90にしてみると結構空いた感じです.
上の方では別systemで起動して実行しましたが,オンラインでも大丈夫でした.但し処理中はかなり重くなります.そして処理に200分程かかりました.

$ sudo btrfs fi balance start -dusage=90 /
Done, had to relocate 186 out of 530 chunks
$ sudo btrfs fi show
Label: none  uuid: e54de82f-1fdb-4f9a-b529-0952b0ea3454
        Total devices 1 FS bytes used 446.08GiB
        devid    1 size 542.28GiB used 449.27GiB path /dev/mapper/x220--vg-root

この後数GBのデータを書いてみたり溜まっていたapt upgradeとかしてみましたが今のところ大丈夫そうです.
ちなみにこのfsがあるSSD(INTEL SSDSA2CW600G3)も長く使っているのでそっちも心配だったのですが,smartctl-t longしたり-aの以下のあたり見る感じでは未だ行けそう?

9 Power_On_Hours 0x0032 100 100 000 Old_age Always – 36565
228 Workload_Minutes 0x0032 100 100 000 Old_age Always – 2193912
232 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always – 0
233 Media_Wearout_Indicator 0x0032 095 095 000 Old_age Always – 0

#適当なとこでsecure eraseしておきたい…….

WebmailソフトのRainLoopのOpenPGP鍵の保存場所

RainLoopというWebmailソフトウェアがあってこれはOpenPGPに標準で対応しているらしいし,NextcloudのPluginとして簡単に導入できるようということで試しに入れてみました.

以下のようにOpenPGPの設定画面で鍵をインポートしたり生成できます.

20180207_00:02:05-19556

既存の鍵を取り込む時は

公開鍵はgpg -a --export 9C3EC5272FFDAF803289ADE4398C09CC572E532C|xclip
秘密鍵はgpg -a --export-secret-keys B8B520B39C7E035CB18B01FF3B54CAAED9A959F4|xclip

のような感じでエクスポートしたものを以下のテキストボックスに貼り付けてインポートできます.
一度に沢山の公開鍵を読もうとしたら失敗しました.

20180207_00:02:15-19652

以下のように保存されて,メール作成時に暗号化や署名が可能になります.でもオプション扱いのようでいつも暗号化や署名をしたい人は毎回暗号化や署名を指定しないといけないのでちょっとめんどうだし指定し忘れて送信してしまいそうです.

20180207_00:02:35-19876

ちなみにこの鍵はサーバに保存されるのかと思っていたのですが,ブラウザを変えると鍵がでてきません.
確認するとブラウザのcookieに保存されるようです.

秘密鍵をいつものブラウジングに使うブラウザに保存するのはちょっと怖いですね.
プロファイルを分けるなどしたほうが良さそうです.

Vivaldi 1.14にしたらARM64環境で動かなくなる

Vivaldi 1.14がリリースされました.

Note機能のMarkdown対応とか便利かもと以前の手順で導入しました.

依存関係が増えていたのでこんな感じで.

$ sudo dpkg -i ./vivaldi-stable_1.14.1077.41-1_armhf.deb
$ sudo apt install -f
$ apt show vivaldi-stable
Package: vivaldi-stable:armhf
Version: 1.14.1077.41-1
Status: install ok installed
Priority: optional
Section: web
Maintainer: Vivaldi Package Composer <packager@vivaldi.com>
Installed-Size: 136 MB
Provides: www-browser
Pre-Depends: dpkg (>= 1.14.0)
Depends: ca-certificates, fonts-liberation, gconf-service, libappindicator1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.2.14), libexpat1 (>= 2.0.1), libfontconfig1 (>= 2.11), libgcc1 (>= 1:3.5), libgconf-2-4 (>= 3.2.5), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, wget, xdg-utils (>= 1.0.2)
Recommends: adobe-flashplugin, chromium-codecs-ffmpeg-extra
Homepage: https://vivaldi.com
Download-Size: 不明
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: A new browser for our friends
 Vivaldi browser is made with power users in mind by people who love the Web.

N: 追加レコードが 2 件あります。表示するには '-a' スイッチを付けてください。

早速起動しましたが動きません.

$ vivaldi
ERROR: ld.so: object '/usr/lib/chromium-browser/libffmpeg.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
/usr/bin/vivaldi: error while loading shared libraries: libffmpeg.so: cannot open shared object file: No such file or directory

Vivaldiはarmhfですが,aarch64の/usr/lib/chromium-browser/libffmpeg.soを読み込もうとしてコケているようです.
libffmpeg.soはVivaldiにもいるよう?

$ dpkg-query -S libffmpeg.so
chromium-codecs-ffmpeg-extra: /usr/lib/chromium-browser/libffmpeg.so
vivaldi-stable:armhf: /opt/vivaldi/lib/libffmpeg.so
$ ls -l /usr/lib/chromium-browser/libffmpeg.so /opt/vivaldi/lib/libffmpeg.so
-rw-r--r-- 1 root root 1098444  1月 30 17:37 /opt/vivaldi/lib/libffmpeg.so
-rw-r--r-- 1 root root 2428128  1月 27 19:51 /usr/lib/chromium-browser/libffmpeg.so
$ file /opt/vivaldi/lib/libffmpeg.so
/opt/vivaldi/lib/libffmpeg.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=a0c7e5c04798cdb9469a869e0b87dfe80fa85f30, stripped

LD_LIBRARY_PATHに指定してみましたがダメでした.

$ LD_LIBRARY_PATH=/opt/vivaldi/lib:$LD_LIBRARY_PATH vivaldi

chromium-codecs-ffmpeg-extra:armhfを入れればいいのではと思ったけど排他でaarch64版が消されるのでやめました.

$ sudo apt install chromium-codecs-ffmpeg-extra:armhf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libido-0.1-0
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
以下のパッケージが新たにインストールされます:
  chromium-codecs-ffmpeg-extra:armhf
アップグレード: 0 個、新規インストール: 1 個、 削除: 3 個、保留: 0 個。
891 kB のアーカイブを取得する必要があります。
この操作後に 192 MB のディスク容量が解放されます。
続行しますか? [Y/n] 

/opt/vivaldi/vivaldiの中を見るとファイルの存在チェックをしているのだけど,/usr/lib/$DEBARCH/oxide-qt/libffmpeg.soとかも見ている.
これのarmhf版(oxideqt-codecs-extra:armhf)を入れてLD_LIBRARY_PATHに指定したら警告が出るけど起動した.(Youtubeを試すと動画を再生しようとするとエラーとなった.1.13の頃はYoutubeが見られていたのは何を使っていたのだろう?)

$ sudo apt install oxideqt-codecs-extra:armhf
$ LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/oxide-qt:$LD_LIBRARY_PATH vivaldi

No suitable library for HTML5 MP4 (H.264/AAC) video and MP3 audio was
found, therefore only open codecs will play.

For assistance on how to enable proprietary media, visit:

https://help.vivaldi.com/article/html5-mp4-h-264aac-video-and-mp3-audio-support-under-linux/

[32501:32501:0201/063045.261665:ERROR:gl_implementation.cc(292)] Failed to load libGL.so.1: libGL.so.1: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
 :

後ろのFailed to load libGL.so.1も気になるので,libgl1-mesa-glx:armhfを入れてとりあえず解消.

$ dpkg-query -S libGL.so.1
libgl1-mesa-glx:arm64: /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:arm64: /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1.2.0
$ sudo apt install libgl1-mesa-glx:armhf

なんか1.13より動作が重くなったような気がしますがとりあえず動くようになりました.

sphinx-themes.org が便利

ということで,Sphinx Themesというテーマが一覧で見られるサイトが出来たようです.
ひと目で確認できるので便利です.

ちなみにテーマの変更方法は以下のページを参考に.(基本的にはpipで入れてconf.pyのhtml_themeに指定)

SphinxについてはSphinx-Users.jpで日本語で一通り学べます :)

Linuxでそこそこ軽量なreStructuredTextリアルタイムプレビュー付きのエディタとしてReTextというものがおすすめです.(最近はMarkdown Editorとして紹介されることが多いですが名前のとおりもともとはreSTエディタでした)

最近は軽量マークアップ言語としてMarkdownが有名になりましたが,もう少し複雑なドキュメントを書きたい場合などにSphinx(reStructuredText)はおすすめです.PythonLinux Kernelのドキュメントをはじめ様々なサイトで活用されています.

Sphinxの書籍もあります.

Byobu + GNU screen でFunction Key割り当てを無効にする

Byobuの既定値ではFunction Keyに機能が割り当てられています.

/usr/share/byobu/keybindings/f-keys.screen

自分は使わないし,別のFunction Keyを利用するアプリケーションで利用できなくなるので無効にしています.
無効にする方法をメモしておきます.

適当なテキストエディタで~/.byobu/keybindingsを開きます.viなどの編集モードのあるエディタの場合は編集モードにして,Ctrl+a !(aは設定してあるescape key)を押すと以下のラインが出てくるので頭の:を消して保存します.他にsourceの行がある場合はそれよりも下に書かないと上書きされるので注意.

:source /usr/share/byobu/keybindings/f-keys.screen.disable

環境(Ubuntu 16.04 LTS arm64)によってはこうなりました.$BYOBU_PREFIX/usrだったので実態は同じですね.

:source $BYOBU_PREFIX/share/byobu/keybindings/f-keys.screen.disable

Byobuを起動し直すと反映されているはずです.
Ctrl+a !を使わず同じテキストを書いても問題ないようでした.

Tmuxは利用してないので未検証ですが以下のあたりのファイルで同じような設定ができそうな気がします.

~/.byobu/keybindings.tmux
/usr/share/byobu/keybindings/f-keys.tmux.disable

以下の環境で確認しました.

  • Debian sid amd64
  • Debian stretch armhf/arm64
  • Ubuntu 16.04 LTS amd64/arm64
  • Ubuntu 17.10 amd64
追記)この記事はByobu GNU screenで,以下はByobu Tmux

Raspbian stretch イメージを Devuan ascii にしてみる

DevuanというDebianからのフォークディストリビューションがあります.

これは脱SystemdなLinuxディストリビューションで,Raspberry Pi等のarmhfにも対応しています.そしてDebianからDevuanに移行することが出来ます.(Debian jessie -> Devuan jessie)
DebianベースのRaspbianからも同様に移行できるというmailを見かけたので試してみます.

SD cardでやったほうが手順は少ないのですが,遅いし寿命も縮むだろうしってことでイメージサイズを拡大したRaspbianを元にchroot + QEMU User EmulatorでArm以外のhostででやってみました.

サイズを拡大したRaspbianイメージをマウント

以下の手順で用意したイメージを元にします.

raspbian-stretch-lite_latest.imgが元のイメージで,今回devuan_ascii.imgとしてコピーしたものを使います.

$ cp ./raspbian-stretch-lite_latest.img ./devuan_ascii.img
$ sudo kpartx -av ./devuan_ascii.img
add map loop0p1 (253:4): 0 85045 linear 7:0 8192
add map loop0p2 (253:5): 0 8129 linear 7:0 63
$ sudo mount /dev/mapper/loop0p2 /mnt
$ sudo mount /dev/mapper/loop0p1 /mnt/boot

QEMU User Emulatorが使えるようにqemu-user-staticをcp

これでQEMU User Emulatorが透過的に利用できます.

$ sudo cp -p /usr/bin/qemu-arm-static /mnt/usr/bin/

chroot用に/devと/procをbind mountしてchroot

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo chroot /mnt /bin/bash

Raspbian stretchを最新の状態にする

# apt update
# apt upgrade -y

Devuanリポジトリの鍵をインポート

Devuanリポジトリの鍵をインポートする.そのために必要なdirmngrpkgも導入.

# apt install dirmngr
# apt-key adv --recv-keys 94532124541922FB
Executing: /tmp/apt-key-gpghome.zqL0gcSbes/gpg.1.sh --recv-keys 94532124541922FB
gpg: key 94532124541922FB: public key "Devuan Repository (Primary Devuan signing key) <repository@devuan.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

source.listをDevuanのものに書き換え

Devuanのstableはjessieですが,元のRaspbianがstretchなのでそれに対応するAsciiを指定しています.
Devuan jessieを使いたい場合は,Raspbian jessieを元にするといいと思います.

DevuanDebian
Jessie(stable)Jessie(oldstable)
Ascii(development)Stretch(stable)
Beowulf(-)Buster(testing)
Ceres(unstable)Sid(unstable)
# vi /etc/apt/sources.list
# cat /etc/apt/sources.list|grep -v ^#
deb http://mirrordirector.raspbian.org/raspbian/ stretch rpi
deb http://auto.mirror.devuan.org/merged ascii main contrib non-free
deb http://auto.mirror.devuan.org/merged ascii-updates  main contrib non-free
deb http://auto.mirror.devuan.org/merged ascii-security main contrib non-free

Devuanのパッケージにupgrade

# apt update && apt upgrade
  :
274 upgraded, 7 newly installed, 0 to remove and 3 not upgraded.
Need to get 115 MB of archives.
After this operation, 25.0 MB disk space will be freed.
Do you want to continue? [Y/n] Y
  :
# apt dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  bluez bluez-firmware cgmanager libcgmanager0 systemd-shim
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libpam-systemd mountall pi-bluetooth plymouth raspberrypi-sys-mods systemd systemd-sysv
The following NEW packages will be installed:
  eudev libeudev1 sysvinit-core
The following packages will be upgraded:
  init libudev1 udev
3 upgraded, 3 newly installed, 7 to remove and 0 not upgraded.
Need to get 1162 kB of archives.
After this operation, 9431 kB disk space will be freed.
Do you want to continue? [Y/n] Y
  :

chrootから抜けてイメージアンマウント

#念の為kpartx -dの前にfsckしておくといいかも?

# exit
$ sudo umount /mnt/proc
$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev
$ sudo umount /mnt/boot
$ sudo umount /mnt
$ sudo kpartx -d /dev/mapper/loop0p1
$ sudo kpartx -d /dev/mapper/loop0p2
$ sync

SD cardにイメージを書き込んでRaspberry Piで起動

普通にddとかEtcherとかでSD cardに書き込みます.

$ time sudo dcfldd if=./devuan_ascii.img of=/dev/sdd;sync;sync
128000 blocks (4000Mb) written.
128000+0 records in
128000+0 records out

real    7m13.207s
user    0m0.823s
sys     0m9.211s

後はRaspberry Piで起動すればOK.今回はRaspberry Pi 2 Bで試しました.

Systemdとか居ません.

RAMの利用状況はこんな感じ

$ free
              total        used        free      shared  buff/cache   available
Mem:         949584       21916      879120         188       48548      879976
Swap:        102396           0      102396

しかしneofetchとかではRaspbianのままですね.該当pkgのreinstallとかで更新できそうな気がしますが未検証.

IMG_20180123_001641

イメージ操作めんどくさいのでdebootstrapの方が楽かもしれない?

いやそれなら公式イメージのほうがいいか

Raspbianイメージを任意の広さに拡大する

Raspbian はSD cardに書き込んでRaspberry Piで起動するとraspi-configから簡単にパーティションサイズを拡大できます.しかし,パッケージのアップデートや導入に時間がかかるのでSD cardに書き込む前にこの辺りの処理は済ませておきたいです. chrootとQEMU User Emulatorを使えば出来るのですが,今度はDisk fullに……. ということでraspbianイメージを広げてみます.
※速度の速いストレージだと必要ない処理かもしれませんが,カスタマイズしたイメージを用意するとかにも使えます.
※ここではRaspbian Lite stretch 2017-11-29のイメージを元にしていますが,最終パーティションを広げるのであれば他の各種イメージでもほぼそのまま,途中のパーティションサイズを変更するのも応用でいけます.

今回は広げると行ってもオリジナルのファイルはそのままに,4GBほどのサイズのイメージを作ってそちらにデータをコピーしてそのイメージのサイズを広げることにします.

今回の環境は Debian sid amd64 環境です.Linux環境であればほぼ同じ手順で行けると思います.

4GBイメージを作成

4GBほどの容量のイメージを作成します.もっと大きい容量がいい人はcountを増やしましょう.
<追記>4GBにしてはちょっと大きかったかも.手持ちにカードの容量より少し小さいサイズにすると良いです.</追記>

$ dd if=/dev/zero of=./4gb.img bs=1M count=4000
$ ls -l ./4gb.img
-rw-r--r-- 1 mk mk 4194304000 Jan 19 21:28 ./4gb.img

losetupでデバイスマッピングをする

/dev/loop0に割り当てられた.

$ sudo losetup -f --show ./4gb.img
/dev/loop0

Raspbianイメージの用意とデバイスマッピング

/dev/loop1に割り当てられた.

$ unzip 2017-11-29-raspbian-stretch-lite.zip
$ sudo losetup -f --show ./2017-11-29-raspbian-stretch-lite.img 
/dev/loop1

Raspbianイメージを4GBのイメージにコピー

loop1(Raspbian)のイメージをloop0(4GB)にコピーしている.

$ sudo dd if=/dev/loop1 of=/dev/loop0 bs=1M
1772+0 records in
1772+0 records out
1858076672 bytes (1.9 GB, 1.7 GiB) copied, 161.929 s, 11.5 MB/s

Raspbianイメージを片付ける

$ sudo losetup -d /dev/loop1
$ rm ./2017-11-29-raspbian-stretch-lite.img

コピーしたイメージをfdiskで確認

Raspbianのパーティション情報が見えます.

$ sudo fdisk -l /dev/loop0 
Disk /dev/loop0: 3.9 GiB, 4194304000 bytes, 8192000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x37665771

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1       8192   93236   85045 41.5M  c W95 FAT32 (LBA)
/dev/loop0p2      94208 3629055 3534848  1.7G 83 Linux

fdiskでパーテションサイズを変更する

ここはわかりづらいですが,以下のような操作をしています.

  • d コマンドで 2つ目のパーテションを削除
  • n コマンドで 2つ目のパーテションを最大容量で作り直し
    • この時 First sector を削除前のものと合わせること
  • p コマンドで確認
  • w コマンドで書き込み
    • w コマンドで書き込むまではファイルシステムは変更されないので間違ってもやり直しできます.
$ sudo fdisk /dev/loop0

Welcome to fdisk (util-linux 2.30.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-8191999, default 2048): 94208
Last sector, +sectors or +size{K,M,G,T,P} (94208-8191999, default 8191999): 8191999

Created a new partition 2 of type 'Linux' and of size 3.9 GiB.  
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

Command (m for help): p

Disk /dev/loop0: 3.9 GiB, 4194304000 bytes, 8192000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x37665771

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1       8192   93236   85045 41.5M  c W95 FAT32 (LBA)
/dev/loop0p2      94208 8191999 8097792  3.9G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 無効な引数です                                                                         

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

fdiskに慣れていない場合はgparted等でGUIで操作したほうが直感的で解りやすいかもしれません(未検証) -> gksudo gparted /dev/loop0
20180121_07:01:45-6347

kpartxでパーティションをマッピングする

上で使ったlosetupでも出来るのですが,オフセットを自分で計算して指定する必要がある

losetupを使う場合はfdiskのpコマンドの対象パーティーションの Start * Sector sizeをlosetupの-oに指定します.今回の例だと2つ目のパーティーションは 94208 * 512 になります.(未検証)

$ losetup -f –show -o `expr 94208 \* 512` /dev/loop0

ので今回はそのあたりを自動で行ってくれるkpartxを利用します.大抵は標準では入っていないので以下のエントリを参考に導入してから実行してください.

1つ目のパーティションが /dev/mapper/loop0p1 2つ目のパーティションが /dev/mapper/loop0p2 として設定されました.

$ sudo kpartx -av /dev/loop0
add map loop0p1 (253:4): 0 85045 linear 7:0 8192
add map loop0p2 (253:5): 0 8129 linear 7:0 63

ファイルシステムの修正

ファイルシステムが壊れているのでfsckで修正します.しかし,cleanと言われてしまうので,

$ sudo fsck -n /dev/mapper/loop0p2
fsck from util-linux 2.30.2
e2fsck 1.43.8 (1-Jan-2018)
rootfs: clean, 39394/110656 files, 256435/441856 blocks

一回resize2fsを叩いて怒られてから

$ sudo resize2fs /dev/mapper/loop0p2
resize2fs 1.43.8 (1-Jan-2018)
Please run 'e2fsck -f /dev/mapper/loop0p2' first.

fsckを実行し直します.

$ sudo e2fsck -f /dev/mapper/loop0p2
e2fsck 1.43.8 (1-Jan-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootfs: 39394/110656 files (0.1% non-contiguous), 256435/441856 blocks

パーティーションリサイズ

fsckが通ったら今度こそリサイズです.これで最大サイズに変更されます.

$ sudo resize2fs /dev/mapper/loop0p2
resize2fs 1.43.8 (1-Jan-2018)
Resizing the filesystem on /dev/mapper/loop0p2 to 1012224 (4k) blocks.

mountしてみる

広くなっているのがわかります :)

$ sudo mount -o ro /dev/mapper/loop0p2 /mnt
$ df /mnt
ファイルシス        1K-ブロック   使用  使用可 使用% マウント位置                                                              
/dev/mapper/loop0p2     3954560 966004 2769736   26% /mnt

後片付け

アンマウントしてloopデバイスも解除します.

$ sudo umount /mnt
$ sudo kpartx -d /dev/mapper/loop0p?
$ sudo losetup -d /dev/loop0 

QEMU User EmulatorでArm以外でapt upgradeする

この辺はまた別のエントリで書くつもりですがこんな感じでupgradeしたりしています.

$ sudo mount /dev/mapper/loop0p2 /mnt
$ sudo mount /dev/mapper/loop0p1 /mnt/boot
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo cp -p /usr/bin/qemu-arm-static /mnt/usr/bin/
$ sudo chroot /mnt /bin/bash
# apt update && apt upgrade -y

このイメージはオリジナルのRaspbianイメージと同じようにSD cardに書き込んで利用できます.

GNU socialのQvitter pluginの背景画像を変更

imgp3854

他の連合でも大抵規定値の同じ背景だし外から来た時目立つしという感じでなんとなく変えたくなったので非ログイン状態のQvitterサイト背景画像を変更してみました.

/plugins/Qvitter/README.md から

$config['site']['qvitter']['sitebackground'] = 'img/vagnsmossen.jpg';

/plugins/Qvitter/img/画像.jpg のような感じで対象の画像を置いて,

/config.php にこんな感じで設定.

$config['site']['qvitter']['sitebackground'] = 'img/画像.jpg';

フルパスはOKだけどFlickrのurlを直に書いたらダメだった.

img/画像.jpg
/img/画像.jpg
/plugins/Qvitter/img/画像.jpg
https://farm1.staticflickr.com/58/230823787_1515cd477c_b.jpg

README.md の形式で書いておくのが無難でしょうね.