【VSCode】できるだけマウス操作をなくす(更新中)

VSCodeでできるだけマウス操作をなくす方法を模索

ホームポジションでの操作を前提にしたVIMっぽく使えるようにする「vscodevim.vimプラグインをインストールする。

次に操作方法

ノーマルモード

1.移動操作
hjkl  カーソルの移動
zz   現在行をエディタの真ん中に持ってくる
dd  1行削除 
u   アンドゥ 

2.文字列検索 
/[検索文字列]  nで次の項保 Nで前の候補

3.ファイル操作
ファイルを開く :e [ファイル名]
  ⇨またはvscodeのクイックオープン機能を使う。Ctrl+pで開いたことがあるファイルを選択できる。

4.モード切り替え
インサートモード i , oで次の行の頭から
ヴィジュアルモード v


■インサートモード
ノーマルモードへ移行 esc または Ctrl+c


■ヴィジュアルモード

vscodeの便利なショートカット
Ctrl + tabでタブの切替

【debian10】cosmo communicatorにdebianをインストールする

cosmo communicatorを中古でゲットしました。

利用目的はスマホというよりは、小型のLinuxマシンとして使いたいのですぐにLinuxインストールを試してみた。
やり方は以下の公式サイト情報を参考にした。
https://support.planetcom.co.uk/index.php/Linux_for_Cosmo


debianイメージ (Gemian)をインストールする前の準備
・本体ファームウェアをv23にする
・サブディスプレイのファームウェアを1.1.1.15にアップデートする
  ⇒注意! 買ったときのサブディスプレイファームウェアがver1.1.1.12で直接1.1.15にアップデートしたらサブディスプレイと通信できなくなりました。
   公式のも注意書きがありましたがver1.1.1.15にアップデートするには一旦ver1.1.1.14にアップデートする必要があります。

   Codi ver1.1.1.14にアップデートするには以下のページの下部からCosmo_resource-stem_resource_1_1_1_14.binとCosmo_firmware-stem_ospi2_1_1_1_14.binをダウンロードする。
   https://support.planetcom.co.uk/index.php/Latest_Cosmo_Firmware
   先にCosmo_resource-stem_resource_1_1_1_14.binを書き込んでから、Cosmo_firmware-stem_ospi2_1_1_1_14.binを書き込む。
    ⇒注意!サブディスプレイのファームウェアアップデートは手順通りにやっても失敗します。10回やって1回くらい成功します。
   ⇨2ちゃん等の掲示板を見ると50回ファームウェア書き込みやってようやく成功した人もいるので、めげずに何度も繰り返す根気が必要みたいです。

<codi ver 1.1.14 直リンク>
resource
http://support.planetcom.co.uk/download/CodiLatest/Cosmo_resource-stem_resource_1_1_1_14.bin

ospi
http://support.planetcom.co.uk/download/CodiLatest/Cosmo_firmware-stem_ospi2_1_1_1_14.bin

<codi ver1.1.1.15>
http://support.planetcom.co.uk/download/Cosmo_firmware-stem_ospi2_mouse15.bin

■インストールイメージをSDカードにコピーする
 ⇒注意! MicroSDは16Gbyte以下のものを使用してください。そうでないとマウントできずインストールイメージをロードできません。

■インストールしたパッケージ
・fonts-noto-cjk
・locales
・task-japanese-kde-desktop
・lilyterm

VScodeマイクロソフトから.debファイルをダウンロードしてインストールした。


■インストール後の不具合とか
1.右クリックのエミュレーションができない
   ⇨これはLinux GUI元来の問題らしい。右クリックをエミュレートするプログラムを使って解決。以下からダウンロードした。
GitHub - PeterCxy/evdev-right-click-emulation: Implement Long-Press-to-Right-Click on Touchscreen Linux Devices with Xorg or Wayland

   
2.USB-TypeCが使えない(Linuxカーネルが4.4系、USB-TypeCを使うにはLinuxカーネル4.19にアップデートする必要がある)
   ⇒このため、外部ディスプレイはおろか、外付けのUSBマウスやUSBキーボードが使えません。
    ⇒キーボード左側のUSBTypeCでキーボード、マウスは使えました。外部ディスプレイは相変わらず使えず。
     USBtypeCにキーボード、マウスを接続している状態で充電不可能。USBtypeCにキーボード、マウスを接続した状態で本体を起動するとブートローダ画面までは進みますがが、その後Gemianを選択してブートしようとすると本体リセットします。
    ⇒USB-TypeCを使うにはLinuxカーネル4.19にアップデートする必要がありますが、Cosmo communicator用にカーネルビルドする必要があります。
     カーネルのビルドオプションが分からない為、安易に手が出せません。
3.Ctrl + '+'みたいなCtrl+FNキーの組合せでキーを押す系が使えない
4.F1キー, F5キーとかファンクションキーが使えない
   ⇒このあたりはVScodeを使っていると不便に感じます。
5.本体ブートローダがデフォルトでAndroidを起動する
   ⇒毎回debianを選択して起動しないといけないのでめんどくさいです。
6.キーボードバックライトの明るさ調整がキーを使って調整できません。
7.reboot, poweroffにものすごい時間かかる。5分くらい?さすがに時間かかり過ぎなのでなにか問題がありそう。
8.KDEログイン後必ず音量がMAXになっている。
9.Cosmo-LinuxからBluetoothは使えません。


その他、後日訂正追記します。

【debian10】aptコマンドメモ

1.ソースリストの更新
apt update

2.パッケージのインストール
apt install <パッケージ名>

3.パッケージの削除
apt remove <パッケージ名>
設定ファイル含めすべて削除する場合は
apt remove --purge <パッケージ名>

4.依存関係で不要になったパッケージの削除
apt autoremove

5.インストール済みのパッケージを探す
apt list --installed |grep <パッケージ名>

【debian10】Could not open /dev/vmmon と表示されてVMイメージがロードできない

以下のサイトにある、EFIセキュリティキーを全部消したらエラーが表示されなくなった。
セキュアキーとVMMONの署名キーが違うことが原因?
https://wasurenaiyounikaitoko.blogspot.com/2018/11/vmware.html

■追記
EFIセキュリティキー削除はセキュアブート無効と同じことでした。
結局、カーネルログに以下が表示されてセキュアブートできていない。
secureboot: Secure boot could not be determined (mode 0)

以下、VMWAREのナレッジベースに解決方法が載っていました。
VMware Knowledge Base

※上記方法の個人的メモ
mokutilはsudoで実行する
各種モジュールを署名した後にOSをリブート
リブート後にUEFIがenroll passwordを要求するので、「$mokutil --import MOK.der」で登録したパスワードを入力して完了


■さらに追記
1.カーネルのアップデートした場合、VMMONのアップデートが必要になるのでkernel-headerが必要になる。
kernel-headerのインストールはdebianの場合次のコマンドで取得できる

sudo apt install linux-headers-5.10.0-10-amd64

5.10.0-10-amd64の部分は環境による。適切なバージョンのkernel-headerのパッケージを探すには以下のコマンドを実行する

apt search linux-headers-$(uname -r)

vmwareを起動すると、kernel-headerのパスを聞かれるので/usr/src/以下の対応するkernel-headerのパスを入力する
OKを押すとvmmonとvmnetのビルドが始まる
この場合、パスは"/usr/src/linux-headers-5.10.0-10-amd64/include"となる

2.この段階ではvmmonとvmnetの署名がないので署名する

署名するには以下のコマンドを実行する

sudo /usr/src/linux-headers-5.10.0-10-amd64/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/5.10.0-10-amd64/misc/vmmon.ko

sudo /usr/src/linux-headers-5.10.0-10-amd64/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/5.10.0-10-amd64/misc/vmnet.ko

3.OSをrebootしてvmwareが起動することを確認する

journalctl 特定のエラーレベルのログを抽出したい場合

journalctlコマンドの-pオプションについてググってもあまりヒットしなかったのでmanの出力をメモ


Filter output by message priorities or priority ranges. Takes either a single
numeric or textual log level (i.e. between 0/"emerg" and 7/"debug"), or a range
of numeric/text log levels in the form FROM..TO. The log levels are the usual
syslog log levels as documented in syslog(3), i.e. "emerg" (0), "alert" (1),
"crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7). If
a single log level is specified, all messages with this log level or a lower
(hence more important) log level are shown. If a range is specified, all
messages within the range are shown, including both the start and the end value
of the range. This will add "PRIORITY=" matches for the specified priorities.


エラーのレベルが高い順(致命的なエラー順)に

  1. emerg
  2. alert
  3. crit
  4. err
  5. warning
  6. notice
  7. info
  8. debug


例)errレベルを抽出して出力する場合
journalctl -p err

【debian10】udisksdがmdraidモジュールが読み込めないエラー

以下のメッセージが表示される。
udisksd[759]: failed to load module mdraid: libbd_mdraid.so.2: cannot open shared object file: No such file or directory

mdraidモジュールがないことが原因らしいが、そもそもmdraidって何?

mdraid
mdraid サブシステムは Linux 向けのソフトウェア RAID ソリューションとして設計され、また Linux 環境のソフトウェア RAID に適したソリューションとなります。このサブシステムでは独自のメタデータ形式を使用します。一般的にはネイティブの mdraid メタデータと呼ばれます。

<引用元:
17.3. Linux RAID サブシステム Red Hat Enterprise Linux 6 | Red Hat Customer Portal

サブシステムという言い方が少し気になるが、LinuxRAIDを使うために必要なソフトウェアなんだろう。
やはりRAIDを付かない環境では必要ないようだ。


試しにmdraidパッケージをインストールしてみる。
sudo apt install libblockdev-mdraid2

ubuntsuのバグフォーラムで以下の投稿がありました。
バグがあるのでlibblockdev-mdraid2はudisksdを使っている環境でインストールしない方が良さそう。
なのでlibblockdev-mdraid2をアンインストール。

libblockdev-mdraid2をインストールすると、RAIDを実装していないシステムではソリューションではないmdadmがプルされます。

このようなシステムでは、udisksdは「mdraid」libblockdevプラグインをロードしようとしないでください。

https://bugs.launchpad.net/ubuntu/+source/udisks2/+bug/1811724

しばらく、このメッセージは出しっぱなしかな。

【debian10】MDS CPU bug present and SMT on, data leak possible.

dmesgでカーネルログを見ると以下のメッセージが表示された。

dmesg | grep bug
[ 0.458806] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.


Intel製CPUには「Microarchitectural Data Sampling」という脆弱性があるらしい。
システムがmdsの影響を受けるか調べるには以下を実行する。
cat /sys/devices/system/cpu/vulnerabilities/mds
Mitigation: Clear CPU buffers; SMT vulnerable ←vulunerableと出力された場合、mdsの影響を受ける。
この脆弱性を回避するには、脆弱性対策オプションをカーネルパラメータに与える。

/etc/default/grubに以下の赤字を追記する
GRUB_CMDLINE_LINUX_DEFAULT="quiet mds=full,nosmt"

GRUBの設定を反映させるには以下のコマンドを実施する。
sudo update-grub2

mds=fullはmds対策を有効にする。fullと表現するには正確にはmds緩和をできるだけ実施するということらしいので、このオプションを有効にしたからと言ってmdsの脆弱性が100%回避できるわけではないらしい。そしてこの対策を有効にするとcpuのパフォーマンスが低下する。
nosmtはハイパースレッディングを無効にする。ハイパースレッディングオフにしたほうがより厳密にmdsを対策できるらしい。理由はよくわからん。ちなみに自分の環境ではmds=full,nosmtと両方有効にしないと、カーネルログの警告が消えなかった。

<参考文献:MDS攻撃への対応>
https://gihyo.jp/admin/clip/01/ubuntu-topics/201905/17


次にintel cpuのmicro codeもアップデートする。
micro codeは最新のものを使いたいので、buster-backportsをapt-sourceに追加する。
/etc/apt/sources.listに以下を追加。

deb http://ftp.jp.debian.org/debian buster-backports main contrib non-free

その後、apt updateを行い、以下のコマンドでmicro codeパッケージをインストールする。
sudo apt install -t buster-backports intel-microcode


次にMDS脆弱性チェックツールをインストールする。
apt install spectre-meltdown-checker

MDS脆弱性チェックツールを実行
sudo spectre-meltdown-checker

チェッカーツールの結果をmds=full有り無しで比較したら、SMTのオンオフしか差分がでなかったのでカーネルオプションはmds=nosmtだけで良いかも。micro codeをアップデートしたお陰かな?