FC2ブログ


読めば必ず糧になるを目標に頑張っていきたいと思います 理学・工学・情報学・IT・サイバー・通信・放送・ジャパンカルチャー・コミュニケーション・現代社会などなど

-->
疑問質問はTwitter(@hi_tec01)でも受け付けています https://twitter.com/hi_tec01
雑談等もしますし、どなたでもフォローしていただいて構いません。楽しく会話しましょう!
先月の閲覧TOP3は以下の記事となっております
1位:無料でステレオミキサーを入れよう!!(仮想ステレオミキサー)
2位:OBSでニコ生「高画質」「低負荷」放送する方法 Open Broadcaster Software
3位:OBSで高画質配信!生放送!導入と設定方法 Open Broadcaster Software


このエリアでは主な人気記事をまとめたものを置いています

詳細は続きよりご覧ください





     主な記事の続きを読む

スポンサードリンク
対象はFireOS 5.6.1.0
(たぶん5.6.4.0以下なら大丈夫?)

Fireの恒久Root
http://digital-life.seesaa.net/article/467310868.html

XDAからmtk-suをダウンロードしてくると、WIndowsDefenderに怒られる。WIndowsDefender止めるしかない。

mtl-su実行時はSELinuxがenforcingになってるせいか、/system/配下にファイルコピーできず。
なんどかやり直すしかないのかも
shell@giza:/data/local/tmp $ ./mtk-su
UID: 0 cap: 3fffffffff selinux: enforcing


一回exitしてやり直したらこうなった。
255|shell@giza:/data/local/tmp $ ./mtk-su
UID: 0 cap: 3fffffffff selinux: permissive

Google PlayからSuperSUをインストールできなくなっているので、
apkを適当なサイトで落としてくる。

インストールの前に、Playプロテクトを外しておく

ggれば解決できるけど、罠が多かったなという所感です。

おまけ:

OTAアップデートを止める
たぶん、mtk-suで一時rootをとっただけの状態でも大丈夫だと思う(試しては無い)
https://demikko-no-bibouroku.hatenablog.com/entry/2018/02/09/170145

スポンサードリンク
今回の目的は、Androidに使っているSDカードを新しいものにしたのでタイムスタンプを保持したままサルベージすること。
一番簡単な解決方法は、ダイソーでカードリーダライタを二つ買ってきてcpコマンドかscpコマンドでコピーすることなのだが、
あいにく持ち合わせが一つだけだったのでいろいろ考えた。

考察した工夫を列挙しておく。

■cp
Linuxコマンドなので、Windowsには使えない。
あと、マウントする必要がある。LinuxホストでAndroidのストレージをマウントするか、その逆か。

マウントするの面倒だが、サーバを立てるのはさらに面倒。
・FTP
・SSH(scpやsftpが使える)
  ・Windows10だとわりと容易に立てられる
  ・Androidにも建てられるが、SDカードの領域に入れなかったので注意。
  ・AndroidのコマンドラインからSSH叩くためにはroot化必要かも?Xperiaならsshやscpは最初からはいっている。
・WebDAV
・NFS
・SMB
  ・Androidで立てるとなるとかなり面倒。デフォルトの445が強制的に閉じられているから。
  挑戦する場合は下記に留意すること。
    ・解除にはrootが必要。
    ・Windowsのエクスプローラからは445にしかアクセスできない。

ちなみにAndroidでCLIベースの操作となると、少々めんどくさいが
・キーボードを接続する
・SSHサーバをAndroidで立ててリモート操作する
・adb shellで操作する
くらいだろうか。面倒だが、どれかはやらざるを得ない。


■scp
これは、SSHサーバとのファイル転送に用いるものコマンドだが、結構柔軟に扱える。
通常はローカルからリモートへの転送か、リモートからローカルへの転送として用いられる。
が、別にローカルからローカルでも使えるし、リモートかあdbらリモートへの転送でも問題ない。
どれも書き方は一緒で、
scp -p コピー元 コピー先
マウントする必要もないので楽ちんだが、前述したようにAndroid側にSSHサーバを立てる方法は面倒なので避けたい。
ただし、2019年からscpは推奨からはずされたため、デフォルト状態でscpが使えないかもしれません。
代わりに推奨されているのは、rxyncとsftpです。
sftpはタイムスタンプ保持のオプションがなく論外(WinSCPとかFileZIilaなら大丈夫かも)
rsyncにはタイムスタンプ保持のオプション -t がありますが、XperiaにもWindowsにもプリインストールされていないので使えません、汎用Linuxには入っているでしょうから、WSLの活躍の出番はここかもしれません。
この辺は追って調査したいと思います。

■SDカードリーダライタ
Android本体ではなく、SDカードでいいのであれば話は簡単だ。
ダイソーでSDカードリーダライタを買ってくればいい。
SDカード同士でもタイムスタンプ保持したままコピーできる。(もちろんリーダライタは二つに)
Windows10ならscpコマンドをつかえばいいし、Linuxならcpコマンドをつかえばよい。

■USB接続
メディアファイル転送用昨日を用いて、USB経由でファイルを転送できる。
ただ、これではWindowsのエクスプローラ上でしか操作できるなくなる。
タイムスタンプを保持させるのは難しいだろう。

■WinSCP
Windows用のファイル転送クライアント。FTP、SCP、SFTP、WebDAVに対応する。
SPC接続やSSH接続でローカル・リモート間のコピーであれば「たぶん」保持される「気がする」
AndroidにSSHサーバをたてて挑戦してみたいと思っているが、SDカードにアクセスできなかったので今回は断念。
AndroidにFTPを立てた場合は、リモートからローカルへはタイムスタンプが保持されたものの、
ローカルからリモートへは保持されなかったので注意してほしい。もしかしたらほかのプロトコルでもそうなのかも。
WinSCPでFTPを扱う場合、ファイル数が多すぎるとWinSCP側が全容を把握しきれず勝手にタイムアウトしてしまう(デフォルト15秒)
環境に合わせてにはなるが、長めに調整しておいたほうが良いと思う。私は100秒に設定した。

■adb pull/adb push
adbコマンドをつかったファイル転送方法。
どうやら、これらはタイムスタンプが保持される。
転送速度が若干遅い。
いつの間にか転送がとまっていることがあるので注意。
→これはWindows10のターミナル(PowerShellもコマンドプロンプトも)がアホなのが原因で、
 動作中に何かの拍子に誤ってターミナルをクリックをしてしまうと、
 次にEnterを押すまで動きが止まった状態となる。ナンデヤネン。
 であるからして、動かしたら即最小化しよう。
 設定変更で対応できるが、そうすると今度はマウスでなぞって選択する機能ごと無効にしてしまう。
 これはこれで不便なので避けたい。

大量に転送する場合は、誤操作しなくても止まるときがある。
自分の環境だと、15GBくらい転送したところで止まった。
単純にadbが死んでいるのだと思う。
100GBほど転送したかったので、この方法は断念した。

ディレクトリのコピーができないのも難点だが、一応回避策はある。
あらかじめ、コピー先に同名のディレクトリを作っておいて、コピー元側のパスにピリオドを付け加えるとよい。
例えばCCCというディレクトリをコピーしたい場合は、
adb shell mkdir /storage/XXX/CCC
adb push D:\AAA/BBB/CCC/. /storage/XXX/CCC/
とすれば、再帰的にコピーしてくれる。CCC配下にあるディレクトリも問題なくコピーされる。
ちなみに、何のファイルもない空のディレクトリはコピーされないが、使ってないから空なのだし大した問題ではないと思う。

■スマホにSDを二枚刺し
挑戦はしてないが、できると思う。
追加のスロットは、ダイソーでカードリーダライタとTypeAーTypeC変換コネクタを買ってくれば200円(税抜き)で作れる。
(ドライバの関係もあるので、どのリーダライタを買うかは下調べしたほうが良いと思うが)
これがクリアできればあとはcpコマンドでいけそう。

■結論
いろんな障害があるが、環境に合った組み合わせでがんばりましょう。
今回は、コピー元をAndroidスマホ刺してFTPサーバを立ち上げ、コピー先をPCのリーダライタに刺してWinSCPでコピーしました、
感想としては、リーダライタをもう一つ買ってさえいればこんなに苦労しなかったんだなというところでしょうか

最後に今回試したツール類を紹介しておきます。
Windows10 OpenSSHサーバ
Windwos10 OpenSSHクライアント
Android-Tools(adbを叩くためのもの)
WinSCP
Android用FTPサーバ:ファイルマネージャ (もともとファイルマネージャアプリですが、FTPサーバ機能も付いています。)
Android用SSHサーバ:U;timate Server Pro(Proとつくだけあって、ほとんどのサーバと機能がそろってますが、初心者には使いづらいと思います。使いこなせれば便利さは抜群)

スポンサードリンク
ぱっとみは変わりません。
どちらもCドライブは/mnt/cに勝手にマウントされています。

違いをざっくりいうと、
WSLはLinuxのシステムコールをWindowsのシステムコールにいちいち変換しながら動作する。
WSL2は全てハイパーバイザで仮想化されて動作する。
です。

イメージ的には、WSLは仮想マシンよりもCygwinに近いみたいですね。
WSL2はもう完全に仮想マシンです。ただ、難しい設定なしでファイルシステムにアクセスできたりインターネットにつながったりと、Hyper-vより扱いは簡単です。

WSLはWindows上でLinuxのシェルを動かすことでLinuxのコマンドラインでの操作性をとり入れたかったように見えます。
DOSプロンプト→コマンドプロンプト→PowrShell→Bashという変遷となるでしょうか。

しかし、Linuxのシステムコールをすべて変換するのは困難だったのか、WSL2へ舵をきりました。
WSL2はただただ仮想マシンの上でLinuxが動くので、そのほかの仮想マシンと何ら変わりはありません。
ただ、最初からWindowsのファイルシステムが勝手にマウントされています。
ですので、インストールしたらすぐWindows上にあるファイルをgrepで検索したりできるわけです。
(こうなると、もうPowerShellイラネ となりますね。)

参考になるかわかりませんが、コマンド実行結果の違いを挙げてみます。
・freeコマンド
 WSL→Windowsの物理メモリや仮想メモリ量が表示される。
 WSL2→仮想マシンに割り当てられたメモリ量がLinuxの物理メモリとして表示される。

・ipコマンド
 WSL→Windowsが持っているIPアドレスが表示される。(ほかにも内部通信用なのかたくさんIPを持っている。詳細は不明。)
 WSL2→独自のIPを持っている。(NAPTされてインターネットへつながる。)

結論
grepやbashが使いたいだけなら、どっちでもいいですね。
WindowsをLinuxのCLIで動かしたいならWSL、Linuxを純粋なLinuxとして扱いたいならWSL2といったところでしょうか。
WSLについてはどの程度システムコールを変換してくれるかはマイクロソフトのやる気次第です。WSL2がメインになってくるとメンテナンスされなくなっていくのかもしれません。


スポンサードリンク
基本的には普通にCentOSにOpenStack(stain)を入れるのと同じ。
だけど、yumでインストールするバージョンが新しくなってしまって必要なバージョンがあわなくなる事象が。
これはtrainだけではなくて、stainでも同じことが起きます。
現状だと、leathermanが1.10がインストールされてしまいます。ダウングレードするか、一度removeして1.3にしないといけません。
※Error出力にはleashterman_curlの1.3がないといわれる
packstackをyumでインストールする前に、yum install leatherman-1.3.0-9el7.x86_64をしておけばよかったのかも。

あと、cinderがポート8776をリッスンしないので、/etc/cinder/cinder.confを編集した。

stainの場合はpackstackのバージョンは14、trainの場合は15。
メモリ4GBだと、reboot直後にやらないとメモリが足りなくて失敗するかも。

スポンサードリンク