ArchLinuxでAndroidビルド

久々にAndroidビルドの需要が自分の中で高まった。何年も前にP-01D向けCyanogenmodのビルドにチャレンジした事はあるが、その時のソースコードは人の作ったものだったので、今回は自分でやってみたい。自分で試行錯誤したい。 大抵Ubuntu向け記事ばかりだが(そもそも公式の文書がUbuntu向け)急にUbuntuホストを用意するのも面倒。手元のArchLinuxでそのままやりたい。というわけで、一先ずソース修正の類は何もせず、Pixel用でビルドしてみる。 それっぽいパッケージ群のインストール。必要なもののみかどうかは自信無い。

$ yay -S base-devel
$ yay -S git gperf zip curl zlib lib32-glibc ccache mesa libxslt unzip jdk8-openjdk rsync
$ yay -S multilib-devel # lib32-ncurses5-compat-libsに必要
$ yay -S lib32-ncurses5-compat-libs # 実際必要かどうかは不明
$ yay -S ncurses5-compat-libs
$ yay -S python2

repoコマンドのインストール、pythonリンク作成、git初期設定。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ ln -s /usr/bin/python2 ~/bin/python
$ ln -s /usr/bin/python2-config ~/bin/python-config
$ git config --global user.email "hoge@fuga.com"
$ git config --global user.name "hoge"

Androidソースコードの入手。バージョンは8.0.0の最新にしてみる。

$ mkdir ~/git/aosp/android-8.0.0_r36
$ cd ~/git/aosp/android-8.0.0_r36
$ repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r36 # すぐ終わる
$ repo sync # めっちゃかかる

ビルド。

$ source build/envsetup.sh
$ lunch # 好きなデバイスを選択。今回はsailfish向けにしていた
$ make -j2

エラー出るので修正。pythonが無いよって言うけど、まさかパス決め打ちじゃないよね…?

/bin/bash: prebuilts/clang/host/linux-x86/clang-3859424/bin/clang++: /usr/bin/python: bad interpreter: No such file or directory
$ cd /usr/bin
$ sudo ln -s /usr/bin/python2 python
$ sudo ln -s /usr/bin/python2-config python-config

Jack serverと通信できないみたいなエラーが出るのでぐぐって対応。

Communiction error with Jack server (52). Try 'jack-diagnose'
$ ./prebuilts/sdk/tools/jack-admin stop-server
Stopping background server
No Jack server running. Try 'jack-admin start-server'
$ ./prebuilts/sdk/tools/jack-admin start-server

メモリがいっぱいになる件。

Out of memory error (version 1.3-rc6 'Douarn' (4418000 22a11d4b264ae70e366aed3025ef47362d1522bb
by android-jack-team@google.com)).
Java heap space.   
Try increasing heap size with java option '-Xmx<size>'.
$ ./prebuilts/sdk/tools/jack-admin stop-server
Stopping background server
$ ./prebuilts/sdk/tools/jack-admin cleanup-server
$ export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
$ ./prebuilts/sdk/tools/jack-admin start-server

あとはビルドが終わるまでひたすら待ち。Pixelデバイスが手元に無いので動作確認すら取れない。どうしよう…買うか…?

aurヘルパーyayの導入

長らくyaourtを使っていたが、どうもディスコンのようなので。

$ mkdir ~/yay &amp;&amp; cd ~/yay
$ git clone https://aur.archliunx.org/yay.git
$ cd yay
$ makepkg -si

基本的にはこれで終了。もし既にaurヘルパーがいるなら、それを使うとらくちん。

$ yaourt -S yay
$ yay -Rs yaourt

新規環境でいじるときとか、base-develを入れ忘れていると「Cannot find the strip binary required for object file stripping.」とか怒られるのでお気をつけて。

LinuxでGoogle Keepのデスクトップクライアント

あると便利かな〜と思って検索していたら発見したので使ってみる。 https://github.com/andrepolischuk/keep Releaseにあるバイナリを使ってもいいんだけど、折角なので(?)cloneして使ってみる。

$ git clone https://github.com/andrepolischuk/keep.git
$ ./keep
$ npm install
$ npm start

うまくいけばこれで起動できる。んで、あとは普通に使える。 さて、このままだと起動しにくいので起動スクリプトでも用意しておこう。ランチャでdmenuを利用しているので(Super+Rでdmenuを起動するようにしてあるので諸々の起動が楽)、パスが通った場所に起動スクリプトを置いておけると便利だ。

$ cat /usr/local/bin/keep-client
#!/bin/bash

cd ~/keep
npm start

わざわざ記事に書くまでもない感じの内容だった…。

ConoHaのVPSでArchLinuxを使う

そもそもの動機は単純で、PCを持ち込んではいけないというルールがある現場におり(仕事)、昼休みを無為に過ごす事しかできない…しかし、「PC」なので、あぁスマホやタブレットは持ち込み可なんですね、という話になる。事実スマホは使い放題だし(それはそれで問題があるような気もする)タブレットを弄っている人は見たことないけど、iPad弄ってたって怒られなかった さて、iPadが現場で使えるという事は確認できたが、iPadで直接開発作業を行うのは厳しい。お手軽に使えるターミナルエミュレータはパッと探した所見つからなかったし、何より自分はいまのとこNode.jsを使いたいので厳しい。という訳で、出先から適当なサーバにSSHで接続して開発をすれば良いのだ!という展開になる。 適当なサーバという事で、まぁ真っ先に自宅サーバが候補に上がるのだが、どうせならやったこと無いことしよ!と思い立って、VPSにを利用することにした。必要になったら好きにスペック上げ下げできるみたいだし、ストレージ欲しいな〜〜〜〜と思ったら適当にオブジェクトストレージ契約したりすれば良いのだ。 VPS業者の選定だけど、何も考えずサクッとArchLinuxが使える、ということでConoHaに決定。Vultrとかは自前でISOイメージうpしてそこから〜とかやれるみたいだが、やはり楽ちんである事は大切だよ。 さて〜、画面に従っててきとうに作ればもう使える状態のArchLinuxが出現するので、状態確認とか初期設定を行っていこう。今回は1GBプランを利用。ISOは20180914版。 自分でインストールする時って、パーティショニングとロケール、タイムゾーン、ブートローダあたりが最小限かな?というわけでその辺の現状をまずは見てみる。

# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0     11:0    1 1024M  0 rom

sr1     11:1    1  482K  0 rom

vda    254:0    0   50G  0 disk

├─vda1 254:1    0    2M  0 part

└─vda2 254:2    0   50G  0 part /

# mount | grep vda
/dev/vda2 on / type ext4 (rw,relatime)
# free -h

              total        used        free      shared  buff/cache   available

Mem:          988Mi        48Mi       762Mi       0.0Ki       178Mi       797Mi

Swap:         2.0Gi          0B       2.0Gi

容量関係を見ると、/に全振り。ファイルシステムはext4だそうだ。GUIも何も無いので起動直後のメモリ使用量は48MiBとマジで軽い。メモリがそんなに無いからなのか、Swapは2倍量確保している。上のプランだとまた違う容量になるのかは不明。

# cat /etc/locale.gen | grep -v ^#

en_US.UTF-8 UTF-8

# ls -l /etc/localtime

lrwxrwxrwx 1 root root 30 May 29  2015 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

# uname -a

Linux archlinux 4.18.6-arch1-1-ARCH #1 SMP PREEMPT Wed Sep 5 11:54:09 UTC 2018 x86_64 GNU/Linux

ロケールはen_US.UTF-8のみなので、ja_JP.UTF-8も有効にしておくか。取り敢えずssh鍵の設置が終わってからで…。タイムゾーンはデフォルトでAsia/Tokyoになっている。ま、VPSそのものが東京リージョンだし、これで変なとこだったら意味わからんでしょ。ついでにカーネルバージョンも確認しておいた。あんま気にしてないけど。

# ls /boot
grub  initramfs-linux-fallback.img  initramfs-linux.img  vmlinuz-linux

最後に、ブートローダはgrub(grub2)でした。 以上、取り敢えず状態確認はお終い。次は初期設定を行うぞ。一般作業ユーザを作って、以降はそこから作業しよう。んで、さっさとSSHでつなげるようにしよう。
Web上のコンソールからではしんどい
Web上のコンソールからではしんどい

# useradd -m -g wheel tea
# passwd tea
# pacman -S sudo
# visudo
# su tea
$ id
uid=1000(tea) gid=10(wheel) groups=10(wheel)

以降一般ユーザで作業…と言っても、あとは普通のサーバだと思えば、素直にセットアップすれば宜しい。というわけで以下略。な〜んにも難しいことや新しい事はなかった。 今後ずっとこれを使っていくかはちょっと微妙。お金が貯まったらRyzenで1台組もうと思っているので、それで代替しようかな〜と思っている。やっぱ手元にマシンがあった方が楽しいよ。

自宅ネットワークの設定

転居したのだが、転居先のインターネット回線工事が終わるより先に機材を用意して、その設定も済ましておきたい。工事が終わったら即座に利用が開始できる事を目指す。

利用機材・前提

最後にPPPoEの設定をするだけでそれとなく使えるようにする。回線工事を終えるまで固定回線は使えないが、モバイルネットワークを通してそれとなくインターネットには接続できるようにする。ネットワークの利用機材は以下の通り。
モバイルネットワーク:NETGEAR AC785
ルータ:Ubiquiti Networks EdgeRouter X
Wi-Fi AP:TP-LINK deco M5
それから、先に最終的なネットワークを示す。ネットワークアドレスについては下図参照。
最終的なネットワーク
最終的なネットワーク
インターネットへの接続はメインのlaptop、これを経由してEdgeRouter XをWANに接続する。あとはLAN側てきとうに作って、Wi-FiはTP-LINK deco M5をブリッジモードで動作させて使う。

手順とか

EdgeRouter Xの初期設定

WAN側はぶっちゃけどうでも良いのでDHCPで。LAN側は192.168.0.0/24でDHCPをセットアップしておく。
この段階でLAN側は一応出来上がっているので、sub-laptopとTVが通信できるようになっている。ただ、decoの初期セットアップにインターネット接続が必要らしく、このままでは有線系しか使えない。laptopをルータとしてセットアップして、どうにかインターネットへの経路を確保する。

laptopをルータ化する

laptop(ArchLinux)をルータとして振る舞わせ、EdgeRouter XとAC785の間に立ってインターネットへと接続させる。ひとまずlaptopは素直にAC785に接続しておく。

DHCPサーバのセットアップ

てきとうにセットアップする。

$ sdo pacman -S dhcp
$ cat /etc/dhcpd.conf
option dmain-name-servers 192.168.1.1;

subnet 192.168.11.0 netmask 255.255.255.0 {
  default-lease-time 600;
  max-lease-time 7200;
  option routers 192.168.11.1;
  range 192.168.11.2 192.168.11.250;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
}
$ cat /etc/systmd/systm/dhcpd4@.service
[Unit]
Description=IPv4 DHCP srver on $I
Wants=network.target
After=network.target

[Service]
Type=forking
PIDFile=/run/dhcpd4.pid
ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid $I
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target
$ sudo systmctl start dhcpd4@hogefuga.service

IPフォワードとiptables


$ cat /proc/sys/net/ipv4/ip_forward
0
$ sudo sh -c 'echo 1 >/proc/sys/net/ipv4/ip_forward'
$ sudo iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE
$ sudo iptbles -t nat -L
〜略

疎通確認とか

まぁ、てきとうに。deco M5のセットアップが継続できるようになっているので、セットアップを完了させ、その後スマホアプリからブリッジモードに変更する。

その他

以上で作業終了である。中古PCをルータとして振る舞うようセットアップするっていうのを過去やったことがあって、それがそのまま活きた。あとEdgeRouter Xは取り敢えずクソ詰まらん普通の設定になっているけど、インターネット回線工事が終了して落ち着いたら色々弄ってみる予定。今はダッシュボード眺めてるだけでも楽しい。

それから、サブのlaptopをdeco M5にぶら下げて使おうと思ったらやたらめったら通信が遅くて困った。最初はdeco M5がクソ遅いんじゃないかと疑っていたけど、iperfを色んなところでやってみたら見えてきた。サブlaptop〜laptopでは30Mbpsくらいしか出ないが、TV〜laptopは250Mbpsくらい出る。Androidスマホからiperfするとやっぱり250Mbpsくらい出るので、サブlaptopの無線デバイスが死んでいるんだと思う。(laptopのNICはUSB接続でちゃんとしたものじゃないので、その辺のおかげでギガビットとも言いづらい速度になっているのだろうと思う)。 LANケーブルこまごま買い足すのクソめんどくさいので、いっそこういうの買っちゃったほうが楽なのでは?と思いながら、いつもこまごま買い足してしまっている自分がいる… はやくインターネット回線工事来ないかな〜

Kumanの3.5インチモニタを回転させる

これ

今回はRaspberry pi 3 model Bに挿してつかう。

付属のCDにそのまま使えるRaspbianのイメージが入っているが、これを使うのは何されるのかわからんな?という声もよく見る。しかしまぁ、どのネットワークにも接続しないで使う予定だったので、ドライバ等の自前導入はせず、付属のイメージを使うことにした。

で、用途上はモニタを90度回転させると丁度良い感じなので、回転させる。

 

類似の商品が多いのでてきとうに調べていたら、2種類の情報があって、/boot/config.txtに

・display_rotate=90

・lcd_rotate=90

とかを書くとかいうのを得た。

ただし、前者だと画面は回転するがタッチスクリーンが回らなくて操作しんどい、後者だといい感じ!みたいな論調ばっかり。この口ぶりから分かる通り、うまくいきませんでした。lcd_rotateだとそもそも画面が回転しなかった。(要は別製品の情報なのかね)

 

Kumanのこの製品はWaveshareの3.5inch RPi LCD (A), 320×480 – waveshareのコピー製品、という情報を得たので(下の方にAnti-PiracyとかThis product is protected by patentとか書いてあるけど気にしない…)、Waveshareのそれっぽいサイトを眺めることにする。

5inch HDMI LCD -Waveshare Wiki

Screen orientation settings及びTouch screen calibrationの項で全てが解決した。キャリブレーションはメニューにも選択肢が最初からあったのでそっちを使っても良いかも。

 

きちんと一次情報を当たろうねとか、自前できちんと環境構築しようねとか、思いました(いつもの事では?)

Raspberry Pi 3 Model BでBrother HL-L2300を使う

環境はRaspbian(久々のDebian系だ)

 

一先ずCUPSを入れておく

$ sudo apt-get install cups

brotherから公式に提供されているドライバはi386なのでRaspberry piでは使えない…

という訳でぐぐってみたところ、それっぽいものをgithubで発見。

pdewacht/brlaser – github

対応プリンタ一覧にHL-L2300は無いが、HL-L2300Dがある。同一モデルのロケール違いっぽいのでそのまま突っ込む。

ビルドに必要なものをインストールしてから、REAMD.mdの通りに操作

$ sudo apt-get install build-essential
$ sudo apt-get install cmake libcups2-dev libcupsimage2-dev
$ git clone https://github.com/pdewacht/brlaser.git && cd brlaser
$ cmake .
$ make
$ sudo make install
$ sudo service cups restart

プリンターを接続し、CUPSのWebインターフェイスからプリンターを追加。

brlaserをインストールすると、モデル一覧にBrother HL-L2300D, using brlaser v4が出現するので、ここから追加すればおk

 

このままlprコマンドから印刷しようとすると怒られる。

$ lpr -o fit-to-page ./test.pdf
lpr: エラー - 利用可能なデフォルトの宛先がありません。

登録してやれば良い。一覧をlpstatで表示して、これをlpoptionsで指定する。

$ lpstat -p
プリンター Brother_HL-L2300_series は待機中です。2018年03月02日 00時55分09秒 以来有効です
$ lpoptions -d Brother_HL-L2300_series
copies=1 device-uri=usb://Brother/HL-L2300………(以下略)

あとはlprコマンドで普通に印刷できる。

GPD WINとArchLinuxInstallBattle

今更な話な上に大した内容でもなかった感。(この記事、実は何ヶ月も前に書いてあったんだけど、どういう訳か下書きのまま放置されてたんだよね、それを今回公開しただけという…)

 

本体ストレージをいじらずにいきたいので、小型のUSBメモリを用意して、そこにインストールする事にする。

BIOSでなくUEFIな環境にインストールする事を念頭に作業を進めれば特に問題は無い。

 

以下、引っかかったところとかをピックアップ。

 

・Live環境の起動時にUSB error -110を吐いて死ぬ

最初の見た目の状況としてはUSBメモリのラベル名が正しく設定されてない時に近かったが、USBメモリを見失って起動できなくなっているという状況の方が正しかった。

よくよく見てみるとUSB error -110を吐いて死んでるっぽかった。

usb – device descriptor read/64, error -110 – Stack Overflow

によると、要は電力が足りてないらしい。

USB3.0ポートにUSB3.0メモリを刺してるんだから動いて当然っしょと思っていたけど、何らかの理由で、電力供給が不安定になっていたみたい。しょうがないのでUSB2.0の延長ケーブルを通して接続してみたら、問題無く認識するようになった。

延長ケーブルを使うのは持ち歩きに邪魔なので、USB2.0メモリを使う事にした。

 

・画面向きがおかしいやつ

ArchWikiの通りに。

インストール後の環境にも適用するために、てきとうに設定しておく。今回はブートローダにgrubを使ったので、/etc/default/grubのGRUB_CMDLINE_LINUXにi915.fastboot=1 fbcon=rotate:1を追加しておく。

設定の適用はgrub-mkconfig -o /boot/grub/grub.cfgみたいな感じで。

 

・インストールしてからwifi-menuがdialogとかwpa_supplicantを要求するのでwifi-menuが使えない

これはGPD WINつーかただ自分がアホなだけ

Live環境からてきとうに入れておきましょう

 

GPD WINはおもちゃとして面白いと思うんだけど、外でホイホイっと使うには、入力系統がしんどくてあんまり気が乗らないんですよね。そういう意味ではGPD Pocketの方が優秀なんだけど、両方なんて買うお金は無いし、GPD WINの頃にGPD Pocketなんて知らなかったし…という

AndroidStudioいじってたらjava.lang.IllegalStateException aapt2 is missingとか言われた

環境はArchLinux

Android Studio本体はパッケージ管理でインストールしたんだけど、それが必要とするコンポーネント(つーかAndroid SDK)はパッケージ管理だったりAndroid StudioのSDK Managerだったりあやふやな状態でした。Android – ArchWikiにある通り、

Android Studio をインストールして IDE を使って SDK を管理する場合、以下のパッケージをインストールする必要はありません。

以下のパッケージってのは、android-platform, android-sdk, android-sdk-platform-tools, android-sdk-build-toolsの事。

大抵の手順指南サイトではSDK Managerを利用して管理するので、それに倣うなら、環境構築の時にパッケージ管理で上記パッケージたちをインストールするべきではなかったのだ(ArchWikiはちゃんと読みましょう)。

まぁそれはともかく、結局パッケージ管理で導入しちゃって、更新が競合したっぽくて、環境が壊れてしまった。それが原因で、開発したアプリケーションを実行するときに、Execution failedとかなんとか。java.lang.IllegalStateException aapt2 is missing的なエラーが出たのだと思われる。

aapt2が無いよ、と言っているんだけど本当に無いのかfindで検索すると、/opt/android-sdk/build-tools/27.0.0以下とかに見つかる。

Android Studio側のメッセージを見ると、26.0.2以下を探している雰囲気がしたので、それを入れなおしてみる。

具体的には、

SDK Manager→SDK Toolsのタブ→Show Package Detailsにチェックを入れる→Android SDK Build-Toolsの26.0.2が見つかるので、これのチェックを外してApply(一旦削除)→チェックを付けてApply(インストール)

みたいな感じでなんとかなった。一旦削除する意味があるかは微妙だけど、結局うまくいったのでまぁいいや。

 

なんかノリでAndroidアプリを作ってみてるんだけど(勿論Javaは何一つ勉強してないです)、なんかAndroidStudioの動作が大変鈍重だし(比較対象はQt Creator)、UIはちっちゃくて見えないし、中々厳しい世界だなと思いました。まる。

NASからうっかり消してしまったデータを復元する

保存していた録画データを操作ミスで消してしまった。あまりにもつらい。

まとめ。

・extundelete:exFATに対応していない

・testdisk:目的ファイルは復元されたっぽいがデータが完全に壊れている

・photorec:死ぬほど時間がかかるが復元される、ただし目的のファイルがどれかは不明(最終的に目的データは復元できなかった)

 

 

以下、雑多な記録。

 

extundeleteが良さげだったけど、exFATに対応していないようなので別の手を探すと、testdiskが見つかる。どうだろ?

取り敢えずインストールして実行してみる。十字キーとEnterキーで操作できる。

$ sudo pacman -S testdisk
$ sudo testdisk

起動するとまずログを保存するか聞かれるので、取り敢えずCreateを選んでおく。

次にディスク選択画面に入るので、目的のディスクを選ぶ。

Select a media (use Arrow keys, then press Enter):
>Disk /dev/sda - 128 GB / 119 GiB - PLEXTOR PX-128M5S
Disk /dev/sdb - 4000 GB / 3725 GiB - MARVELL Raid VD
Disk /dev/sdc - 2000 GB / 1863 GiB - WDC WD20EZRX-00D8PB0

NASとして使っているのは/dev/sdbなのでこれを選択。するとPartition TableのTypeを選ぶ段になるが、正解がどれだかよーわからん…

Please select the partition table type, press Enter when done.
[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Humax ] Humax partition table
[Mac ] Apple partition map
>[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection

Noneが自動選択されていたので、そのまま進んでみると、なんかコマンドメニューみたいなのが表示されるので、

[ Analyse ] Analyse current partition structure and search for lost partitions
>[ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options ] Modify options
 [ Quit ] Return to disk selection

Analyseする。

Analyseが終わると、Quick Searchが選べるようになるので、取り敢えずそれを選ぶ→Structure:Okの表記が出る

パーティションが正しく発見されたっぽい

Disk /dev/sdb - 4000 GB / 3725 GiB - CHS 486382 255 63
 Partition Start End Size in sectors
 >P exFAT 0 0 1 486382 59 13 7813730560

ので、Pを押してファイルリストに入って、そのまま目的のファイルを探す。

見つけたら画面の指示に従ってコピーすると復元されるはずだ…………

 

しかし、復元された動画データは、完全に壊れていた…(再生できなかった)

 

もうひとつ、testdiskと一緒に入ってきたPhotoRecというものがある。どうも、testdiskはファイルではなくディスクの破損を修復するのがメインの目的で、ファイルについてはPhotoRecを使えという事みたい。ArchWikiには「ファイルシステムは無視して素のデータを探し当てるので、再フォーマットされたり完全に破壊されたファイルシステムやパーティションテーブルでも動作」とのことで、強い(こなみ)

それから、どうやらこのソフト、復元できるファイルを手当たり次第に復元しまくるらしい。また、このソフトが知っているファイル形式に限って復元可能である…とは言え、File Formats Recovered By PhotoRec – CGSecurityによれば大抵のファイルは問題なく復元可能である。中にはNintendo DSのゲームイメージであるnds形式なんかもあるし、結構強そう。

しかし、4TBのボリュームを選択しているからか、FilesystemAnalysisで異常に時間がかかった。ファイルが存在しない領域のみにしぼって復元するはずだが、結局5~10時間くらいかかっていたっぽい。

その後はドカドカ復元されていくので、保存先容量がいっぱいいっぱいにならないように順次チェック。

というのも、復元されたものはファイル名が無いので一つ一つ再生してみて確認しないといけないのだ。結構めんどい。

再生可能ファイルと再生不可能ファイルがそれぞれあったが、多分普通にデータが壊れている。空き容量に対して復元されたデータ量が3倍くらいあったので、一部分しか復元できなかったんだろう(ファイルサイズはそれらしいサイズだったので、重複したゴミデータでも含みまくっているのだろうか、と)

傾向としては、ファイルサイズが500MB程度までのもの(小さすぎるものは除外)だと再生可能な事が多かったように感じる。GBのオーダーまでいくと大抵の場合再生できなかった。断片化とかしてるともうダメなんだろうか?ファイルシステムとか全然勉強してないのでよーわからん。

 

取り敢えず、ファイルの復元手段を得たのは良いが、目的のファイルは復元できなかった。testdiskの時点で復元したものが再生不可だったので、そもそも復元不可だったのかもしれない。残念。