etsuxのブログ

自分がハマったことなどを記録しています。

APFSボリュームからMac OS拡張のパーティションを切り出す

APFSボリュームのパーティション作成でMac OS拡張を選択すると以下のようなエラーが発生し、パーティション作成に失敗する。

  • 内部エラーが起きました。指定された操作の1つに必要なディスクが見つかりませんでした。これは一時的な問題である可能性があります。操作をやり直してください。
  • APFSデータ構造のサイズを縮小中
    APFSコンテナのサイズ変更エラーコードは49168です
    APFSコンテナ構造のサイズ変更中に問題が起きました。:(-69606)

f:id:etsux:20200105204643p:plain

f:id:etsux:20200105204803p:plain

 

APFSボリュームでは、パーティションをAPFSで作成する必要があるようなので、後でMacOS拡張に変更する。

  1. ディスクユーティリティを起動する。
  2. APFSボリューム(システムディスクも可)を選択する。
  3. パーティション作成ボタンを押す。
  4. 「ボリュームをコンテナに追加しますか?またはデバイスパーティションを作成しますか?」でパーティション作成ボタンを押す。
  5. 円グラフの下の+ボタンを押す。
  6. フォーマットにAPFSを選択。名前とサイズは任意。
    f:id:etsux:20200105205130p:plain
  7. パーティションを作成しますか?」でパーティション作成ボタンを押す。作成が終わったら完了ボタンで閉じる。
  8. 左上の[表示]>[すべてのデバイスを表示]を選択し、「コンテナdisk*」の下に追加したパーティションが表示されることを確認。
    f:id:etsux:20200105211442p:plain
  9. パーティション名ではなく「コンテナdisk*」を選択して、消去ボタンを押す。するとフォーマットにMac OS拡張を選択できるようになる。
    f:id:etsux:20200105211744p:plain
  10. 消去ボタンを押して無事Mac OS拡張への変更が完了。
    f:id:etsux:20200105211852p:plain
  11. ただし、作成したはずのパーティションが表示されていないか、「APFS物理ストアdisk...」の表示になり「マウントされていません」と表示される。
    f:id:etsux:20200105212050p:plain
  12. [表示]>[ボリュームのみを表示]に戻す(画面描画をリフレッシュする)ことで、パーティションが表示されるようになる。
    f:id:etsux:20200105213848p:plain

 ※VMware Player上で操作した夢のため、ご参考程度にお願いします。

 

CPU負荷が高くなるとPCが落ちる(最大のプロセッサ状態を変更して対処)

STYLE-IL11-i7S-HNVでCPU使用率が高くなる(冷却ファンが高速回転になる)と、「チュィィィーン」という音とともにPCが落ちる。CPUID HWMonitor(HWMONITOR | Softwares | CPUID)で温度を見ると70℃くらいになっているので、熱のリミッタで電源を落としているんだろう(たぶん)。

WSLのUbuntuで「repo sync」をすると100%落ちる。

 

以下の手順でCPU使用率を抑えることでPCが落ちなくなった。

  1. コントロールパネルを開く。(Windowsのスタートメニューから[Windows システム ツール]>[コントロールパネル]を選択。こんなところにあったのね。)
  2. [ハードウェアとサウンド]から[電源オプション]の下にある[電源プランの編集]をクリック。
  3. [詳細な電源設定の変更]をクリック。
  4. [電源オプション]画面で[プロセッサの電源管理]の[最大プロセッサの状態]を展開。
  5. 設定を「80%」に変更。
    ※99%でもいいという情報もあったが、自分の環境ではだめだった。90%でもいいと思うが、80%なら確実。

 

WSL (Windows Subsystem for Linux)でファイルが削除できなくなったとき(chkdskで修復)

WSL利用中にPCがダウンしたりして、ファイルシステムの管理情報が破損する場合がある。

ディレクトリごと削除しようとしても、削除できないファイルがあってrmコマンドが失敗する。

$ rm -rf test
rm: cannot remove 'test/xxx': Directory not empty
$ ls -alR test
ls: reading directory 'test/xxx': Invalid argument

WSLのファイルシステムはlxfsで、WindowsファイルシステムLinux上で見えるようにエミュレートしているもの。

$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs lxfs 976760828 513985328 462775500 53% /

Windows側のNTFSファイルシステムの管理情報が破損しているだけなので、Linux側ではなくWindows側での修復を行う。

Windows側の修復はchkdskコマンドで、WSLに割り当てているドライブを対象にチェックする。

なお、自分はDドライブにWSLを作成しているのでd:を対象にチェックした。標準のC:\Users配下だとこういうときにも面倒なので、Dドライブにしておいてよかった。

D:\>chkdsk d: /f
ファイル システムの種類は NTFS です。
現在のドライブはロックできません。

ボリュームが別のプロセスによって使用されているため、Chkdsk
を実行できません。Chkdsk を実行するにはこのボリュームのマウントを解除する必要
があります。
そのときは、このボリュームへのすべての開かれたハンドルは無効になります。
このボリュームを強制的にマウントを解除しますか? (Y/N) y
ボリュームのマウントは解除されました。このボリュームへ開かれたすべてのハンドルは、現在無効です。
ボリューム ラベルは ボリューム です。

ステージ 1: 基本のファイル システム構造を検査しています ...
ファイル 38B74 の壊れた属性一覧を切り捨てます。
ファイル 38B74 内の壊れた属性一覧エントリのうち、
タイプ コードが 80 であるエントリを削除しました。
壊れた属性レコード (0x80、"") を
ファイル レコード セグメント 0x29539 から削除します。
:
壊れた属性レコード (0x80、"") を
ファイル レコード セグメント 0x3C3BC から削除します。
  380672 個のファイル レコードが処理されました。
ファイルの検査を完了しました。
孤立ファイル レコード セグメント 29539 を削除します。
:
孤立ファイル レコード セグメント 3C3CC を削除します。
  1095 個の大きなファイル レコードが処理されました。
孤立ファイル レコード セグメント 3C3D0 を削除します。
  0 個の問題のあるファイル レコードが処理されました。

ステージ 2: ファイル名リンケージを検査しています ...
  4938 個の再解析レコードが処理されました。
  433110 個のインデックス エントリが処理されました。
インデックスの検査を完了しました。
  0 個のインデックスなしファイルがスキャンされました。
  0 個のインデックスのないファイルが lost and found に回復されました。
  4938 個の再解析レコードが処理されました。

ステージ 3: セキュリティ記述子を検査しています ...
セキュリティ記述子の検査を完了しました。
データ属性をファイル 38B74 に挿入します。
  26221 個のデータ ファイルが処理されました。
CHKDSK は Usn ジャーナルを確認しています...
Usn ジャーナルの確認を完了しました。
CHKDSK はマスター ファイル テーブル (MFT) ビットマップに割り当て済みとして
マークされている空き領域を検出しました。
CHKDSK はボリューム ビットマップに割り当て済みとしてマークされている空き領域を検出しました。

Windows でファイル システムが修正されました。
これ以上の操作は必要ありません。

 976760831 KB : 全ディスク領域
 513413896 KB : 145279 個のファイル
     40672 KB : 26221 個のインデックス
         0 KB : 不良セクター
    476743 KB : システムで使用中
     65536 KB : ログ ファイルが使用
 462829520 KB : 使用可能領域

      4096 バイト : アロケーション ユニット サイズ
 244190207 個     : 全アロケーション ユニット
 115707380 個     : 利用可能アロケーション ユニット

 

LG V20 PRO L-01Jのアプリを削除(adbをバッチ化)

LGのV20 PRO L-01J(もちろん中古)を購入。

まずはアプリ一覧から不要なアプリをアンインストール or 無効化。

次にadbでアンインストールするために開発者オプションを有効化。

  1. [設定]>[端末情報]>[ソフトウェア情報]>[ビルド番号]を5回タップ。
  2. [設定]>[ドコモのサービス/クラウド]>[USBデバッグ切替]でチェックをON
    ※[開発者向けオプション]>[USデバッグ]はdisableで操作できない!
  3. PCにUSB接続してデバッグ

アンインストール対象のパッケージ名を調べるために「Aplin ポスト無効化マネージャー」をインストール。

 

通常アンインストールできなくてもadbコマンドでアンインストールできる。アンインストールする前にapkを抽出しておけば後で再インストールできる。簡単にできるようにバッチファイル化。

  1. 「package?」のプロンプトで削除対象のパッケージの部分文字列を入力
  2. adb shell pm list packagesから部分一致するパッケージ名をfindstrで抽出
  3. 「uninstall?」のプロンプトで「Y」を入力した場合は、
    adb shell pm pathでapkのパスを取得
    adb pullで取り出し
    adb shell pm uninstallでアンインストール

 

@echo off
setlocal enabledelayedexpansion
if not exist apk mkdir apk
set LOGFILE=apk\uninstall.log
set /p STR=package? 
for /F %%I in ('call adb shell pm list packages ^| findstr %STR%') do (
    set LINE=%%I
    set PKG=!LINE:package:=!
    echo !PKG!
    set /p YN=uninstall? 
    if "!YN!"=="Y" call :PKG_UNINSTALL !PKG!
)
goto :eof

:PKG_UNINSTALL
set PKG=%1
for /F %%I in ('call adb shell pm path !PKG!') do (
    set LINE=%%I
    set APK=!LINE:package:=!
    echo !APK!
    call adb pull !APK! apk
    echo %date% %time% !PKG! !APK! >> %LOGFILE%
    call adb shell pm uninstall -k --user 0 !PKG!
)
exit /b

 

 

 

HTMLを変更せずにJSのみでtableを4ペインに分割する

行数/列数が多い表を4ペインに分割するためのJavaScirptファイルを実装してGithubで公開。

元のHTMLのtableタグ周りを変更せずに、M行N列で固定してして右下のペインをスクロールできるように実装。

最初jQueryプラグインで実装していたものを、jQueryに頼るまでもない実装なので、JavaScriptのみで書き直した。

 

GitHub - etsuhisa/table4panes: Split the table into 4 panes with only JavaScript without changing the HTML.

 

f:id:etsux:20191124113830p:plain

 

GALAXY S III α SC-03E Android 7.1「MTPホストを停止しました」

Android 7.1にしてからしばらくは普通に使えていたが、「MTPホストを停止しました」と表示されるようになった。

怪しそうなのは、アプリの更新かな?

もう一度OSを入れなおして、自動更新をオフにして使ってみようと思う。

 

Windows 10のVMware PlayerでmacOS Catalinaの夢

Windows 10のVMware PlayerでmacOS Catalinaをインストールする。

SnowLeopard→ElCapitan→Mojave→Catalinaとアップグレードしていくのもよいが、直接Catalinaをインストールするよりvmdkのサイズが大きくなる。(30GBちょい)

Catalinaを直接インストールすると24Gちょい。

 

まずはISOイメージを作成する。

macOS CatalinaのISOイメージを作成する - etsuxのブログ

(インストールイメージを保持したディスク「installer.vmdk」を用意する手順が公開されているが、ISOイメージでインストールするほうがインストール時の手番が簡単でしっくりくる。)

 

VMware PlayerでElCapitanなり、Mojaveなりをインストールしたことがあれば、やり方は同じ。

 

  1. VMware Workstation 15 Playerをダウンロードしてインストール。

    VMware Workstation Player のダウンロード | VMware

  2. unlocker211.zipをダウンロードして展開。win-install.cmdを右クリック→管理者として実行。
  3. VMware Workstation 15 Playerを起動して[新規仮想マシンの作成]をクリック。
  4. [後でOSをインストール]を選択。次へ。

    f:id:etsux:20191103124427p:plain

  5.  

    [Apple Mac OS X]を選択し(ない場合はunlockerがインストールできていない)、バージョンに[macOS 10.15]を選択して、次へ。

    f:id:etsux:20191103124610p:plain

  6.  

    仮想マシン名は任意。CatalinaでもmacOS10.15でもなんでもいい。

    f:id:etsux:20191103124932p:plain

  7.  

    ディスク最大サイズは余裕をもって100GB。[仮想ディスクを単一ファイルとして格納]を選択したほうがコピーを作りやすい。

    f:id:etsux:20191103125154p:plain

  8.  

    いったん完了して[仮想マシン設定の編集]をクリック。
  9. メモリを4096MBに変更。
  10. CD/DVDは[ISOイメージファイルを使用する]で事前に作成したISOファイルを指定する。OKを押して閉じる。

    f:id:etsux:20191103125617p:plain

  11.  

    [仮想マシンの再生]をクリックするとリンゴマークの画面になる。しばらくすると[Language]画面が表示される。[日本語]を選択して次へ。
  12. [macOSユーティリティ]では[ディスクユーティリティ]をクリックして[続ける]。ディスクユーティリティでは[VMware Virtual SATA Hard Drive Media](ディスクのサイズは107.37GB、[初期化前]と表示)を選択して[消去]をクリック。名前は任意。フォーマットは[Mac OS拡張(ジャーナリング)]、方式は[GUIDパーティションマップ](共にデフォルトのまま)で、消去。消去できたら赤×で戻る。

    f:id:etsux:20191103130458p:plain

  13. [macOSインストール]を選択して[続ける]。
  14. あとは、画面の指示にしたがってインストール。

 

はめ込みイメージ