stylesheet

ラベル windows の投稿を表示しています。 すべての投稿を表示
ラベル windows の投稿を表示しています。 すべての投稿を表示

2024-06-27

WSL2の未使用領域を開放してディスクスペースを節約

WSL2の未使用領域を開放する手順をメモ。事前にいらないファイルを削除しておくと尚良し。

TL;DR

# wsl2-optimize-vhd.ps1
wsl --shutdown
$files = gci -Path $HOME/AppData/Local/Packages/*.vhdx -Recurse
foreach ($file in $files) {
    optimize-vhd -Path $file.FullName -Mode full
}

準備

vhdxファイルのパスを調べる。
$HOME/AppData/Local/Packages以下、ディストリビューションごとのディレクトリ、LocalState内にファイルが存在。

PS> gci -path $HOME/AppData/Local/Packages/*.vhdx -Recurse

作業の前に、WSLを停止。

PS> wsl --shutdown

optimize-vhd コマンドで縮小

optimize-vhdコマンドを利用できる場合は、以下のコマンドでOK。

PS> optimize-vhd -Path <path-to-vhdx> -Mode full

diskpart プログラムで縮小

diskpartプログラムを使う場合は以下。

PS> diskpart

DISKPART> select vdisk file=<path-to-vhdx>
DISKPART> attach vdisk readonly
DISKPART> compact vdisk
DISKPART> detach vdisk
DISKPART> exit

sparseモードを有効にしておく

『WSLの仮想ハードディスク(VHD)は、使用するにつれてサイズが大きくなりますが、この機能(sparseVhd)を有効にすると、自動的にサイズも小さくなります!』とのこと。

PS> wsl --manage <distro> --set-sparse true

2022-09-10

Windows PowerShell で Emacs (bash-like) キーバインドを有効にする

PowerShellでもEmacsキーバインドが使えるらしい。 すぐにSSHしてしまうので利用頻度が低いとは言え、微妙にストレスを感じていたのでありがたい。

EmacsキーバインドはPSReadLineモジュールの機能として提供されているようだ。 以下、Windows11 21H2 + PowerShell 7.2.6 での設定方法を記録しておく。

2022-04-21

TPM1.2のThinkpad t440pへWindows11をインストール

非推奨ながらもTPM2.0のチェックを回避してインストールする方法が公式で紹介されていたので、Windows11をインストールしてみた。

レジストリ編集

レジストリでフラグを建てておくとTPMとCPUチェックをバイパスできるようになる。
HKLM\SYSTEM\Setup\MoSetup\AllowUpgradesWithUnsupportedTPMOrCPUへ1をセットする。

sudo New-ItemProperty -LiteralPath 'HKLM:SYSTEM\Setup\MoSetup' -Name 'AllowUpgradesWithUnsupportedTPMOrCPU' -PropertyType 'DWord' -value 1

インストールメディアの作成

Windows11をMicrosoftのサイトよりダウンロードする。
今回は、「Windows 11 のインストール メディアを作成する」の手順に従ってUSBインストールメディアを作成した。

インストール開始

メディアの作成に完了したら、インストールメディア内のsetup.exeを実行してインストールプロセスを開始する。

警告が表示される以外は通常のインストールプロセスと変わるところはない。
特にトラブルに遭遇することなくインストールが完了した。

参照:Ways to install Windows 11

その後の経過は...

インストールしてから数か月たっているが、特に問題に遭遇していない。現時点で(OSビルド22000.613)まで更新されているので、Windows Updateでの更新も滞りなく提供されているようだ。
個人的な予想では、Windows10のサポートが終了する2025年10月14日あたりまではいけるんじゃないかと思っている。

2022-04-20

WSL2でデュアルブートのLinuxパーディションをマウントしてWindowsからアクセス

Windows11ビルド22000のWSL2から外部ストレージのマウントが可能となった。
これは物理ディスク上のext4パーティションも含まれるので、この機能でLinuxパーティションをマウントしてやるとWSL2経由ながらもWindowsからLinuxパーティションを読み書きできるようになる。

パーティションのマウントは以下のコマンドで行う。

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

以下、必要なオプションの調べ方について解説を行う。

DiskPath

Windowsが認識するディスクのパス。\\.\PHYSICALDRIVE*の形式。
一覧を表示するには以下のコマンドを実行する。

Get-CimInstance -query "select * from Win32_DiskDrive"

DeviceID           Caption                     Partitions Size          Model
--------           -------                     ---------- ----          -----
\\.\PHYSICALDRIVE0 SAMSUNG MZ7TE256HMHP-000L7  4          256052966400  SAMSUNG MZ7TE256HMHP-000L7
\\.\PHYSICALDRIVE1 TCSUNBOW N4 240GB           2          256052966400  TCSUNBOW N4 240GB
\\.\PHYSICALDRIVE2 I-O DATA HDCZ-UT USB Device 1          3000590369280 I-O DATA HDCZ-UT USB Device

今回のケースでは、TCSUNBOW N4 240GBの\\.\PHYSICALDRIVE1となる。

PartitionNumber

こちらはLinux側が認識するパーティション番号。
不明な場合は一旦ディスクをアタッチしてWSL内で調べる。--bareはマウントせずにアタッチのみ行うオプション。

sudo wsl --mount \\.\PHYSICALDRIVE1 --bare

一旦マウントすればWSL内でディスク情報を参照できる。

lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   256G  0 disk
sdb      8:16   0 339.8M  1 disk
sdc      8:32   0   256G  0 disk /
sdd      8:48   0 238.5G  0 disk
├─sdd1   8:49   0   512M  0 part
└─sdd2   8:50   0   238G  0 part

ターゲットは/dev/sdd2と認識されているので、パーティション番号は2だと判明。

FileSystem

ファイルシステムもWSL内で調べることができる。通常はext4なので省略可能。

sudo blkid

/dev/sda: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" TYPE="ext4"
/dev/sdb: TYPE="ext4"
/dev/sdc: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" TYPE="ext4"
/dev/sdd1: UUID="8601-AE73" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f99957fe-c58c-4a67-ad7c-441cc3ca77ff"
/dev/sdd2: UUID="9a702a75-3c18-4355-8b87-6ac083f01d17" TYPE="ext4" PARTUUID="106b41ac-a008-41d9-8325-28d60ddc5302"

ターゲットデバイスの/dev/sdd2のファイルシステムはext4だ。

パーティションをマウント

必要なオプションが特定できた。
ファイルシステムは既定のext4なので省略して、次のコマンドでマウントする。

wsl --mount \\.\PHYSICALDRIVE1 --partition 2

ディスク \\.\PHYSICALDRIVE1 は、名前 'PHYSICALDRIVE1p2' で正常にマウントされました。マウントポイントは、自動マウント設定が指すパス (既定: /mnt/wsl) の下にあります。
ディスクをアンマウントしてデタッチするには、'wsl --unmount \\.\PHYSICALDRIVE1' を実行します。

WSL内では/mnt/wsl/PHYSICALDRIVE1p2から、Windowsからは\\wsl.localhost\Ubuntu-20.04\mnt\wsl\PHYSICALDRIVE1p2からアクセスできる。

パーティションをアンマウント

wslをシャットダウンすれば、アンマウントされるので、あまり明示的に行うことはないだろうが、アンマウントは次のコマンドで行える。

wsl --unmount \\.\PHYSICALDRIVE1

参照:Linux ディスクを WSL 2 にマウントする

2020-09-23

AutoHotKeyで変換/無変換キーを有効利用

中古で安く手に入れたThinkpadの一体型パコパコパッドが、アレなもんで...。余ってる変換/無変換キーを活用するAutoHotKeyスクリプトを書いてみた。
このスクリプトを起動しておくと、変換/無変換キー/かなキーでそれぞれ右/左/中クリックを行うことができる。
また、同じキーで日本語入力のON/OFFを行うモードもつけているので、そちらの気がある方も便利に使えるのではと思う。

だだし、このスクリプトはUSキーマップ環境で日本語キーボードを使っている変態さん向けのプログラムだ。
完全な日本語環境では、いろいろとキーバインドが衝突して、動作に支障をきたす可能性があるので注意されたし。

2020-01-07

新年あけたらWindowsで障害

新年早々Windowsで障害発生。
どのタイミングで壊れたかは不明だが、再起動後におかしいことに気付く。

以下、トラブルシューティングのメモ。

障害の特定

タスクバーのアプリアイコンが正しく表示されていないのを発見
クリックしてもアプリが起動せずエラーメッセージが表示される。障害発生を認識し、調査開始。

試しにGoogle Chromeを起動
一見、正しく起動したように見えるが、Googleアカウントからログアウトした状態で起動した。

Firefoxを起動
プロファイルが見つからないと言われ、起動できない。ディスクの障害を疑う。

Firefoxのプロファイルを探してエクスプローラで%appdata%フォルダを開く
Roamingフォルダにアクセスできず。Roamingフォルダが壊れた断定。

CHKDSKで修復

完全検査オプション付きでCHKDSKを実行して修復できるか試す。

$ chkdsk c: /r
ファイル システムの種類は NTFS です。
現在のドライブはロックできません。

ボリュームが別のプロセスで使用されているため、CHKDSK を
実行できません。次回のシステム再起動時に、このボリュームの
チェックをスケジュールしますか (Y/N)? y

次回のシステム再起動時に、このボリュームはチェックされます。

再起動後のスキャンが26%で止まって動かない。
強制再起動で仕切り直し。

今度は読み取り専用でチェックのみを実行。

$ chkdsk.exe c:
ファイル システムの種類は NTFS です。

警告: /F パラメーターが指定されていません
CHKDSK を読み取り専用モードで実行します。

ステージ 1: 基本のファイル システム構造を検査しています ...


  717312 個のファイル レコードが処理されました。

ファイルの検査を完了しました。


  39765 個の大きなファイル レコードが処理されました。


  0 個の問題のあるファイル レコードが処理されました。

ステージ 2: ファイル名リンケージを検査しています ...


  321 個の再解析レコードが処理されました。
ファイル 1463 のインデックス $I30 で、エラーが検出されました。
ファイル 1463 のインデックス $I30 で、エラーが検出されました。


  950234 個のインデックス エントリが処理されました。

インデックスの検査を完了しました。

エラーを検出しました。読み取り専用モードでは CHKDSK を続行できません。

エラーの検出に成功したので、今度はエラー修復オプション付きで実行。

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

ボリュームが別のプロセスで使用されているため、CHKDSK を
実行できません。次回のシステム再起動時に、このボリュームの
チェックをスケジュールしますか (Y/N)? y

次回のシステム再起動時に、このボリュームはチェックされます。

今度は無事に修復が完了。

復旧を確認

エクスプローラで%appdata%フォルダを開く -> OK。データは無事のよう。
Firefoxを起動 → OK
Google Chromeを起動 → OK

運良くファイル消失は発生しなかった模様。
念の為、再度、完全検査オプション付きでCHKDSKを実行して完了とする。

$ chkdsk c: /r

今回障害が発生したディスクはSamsungのSSD MZ7TE256HMHP。
S.M.A.R.T.によるとDrive Remaining Lifeは92%となっていた。今後もまだまだ障害が起こりそうではある。

2018-05-19

IP直打ちやhosts編集が面倒になったのでmDNSを設定しまくる

BonjourだとかzeroconfだとかmDNSの話。
閉じたネットワークで`ホスト名.local`でサーバーマシンにアクセスできれば満足。Service Discoveryとかはスルーの方向性で。

Linux (Debian系)

最初から入っているディストリも多いが、ホスト名を設定してavahi-daemonとlibnss-mdnsを入れるだけ。

avahi-daemonがresponderでlibnss-mdnsのほうがクライアントとして動作する。 ラズパイやオレンジパイも同じ。

$ sudo -e /etc/hostname
$ sudo apt install avahi-daemon libnss-mdns

Windows10

ネイティブサポートされているようだがファイアーウォールで止められている。UDPポート5353を開放すると使えるようになる。

面倒であれば、Bonjourをインストールするとファイアウォールが自動で構成されるので手っ取り早い。

ホスト名はコンピュータ名を使う。

MacOS, iOS

最初から使用可能。設定のローカルホスト名とか名前とかそこらへんでホスト名を決める。

esp8266

Arduinoスケッチの場合は、ESP8266mDNSライブラリをインクルードしてMDNS.beginをコールするだけ。

この類のマイコンでmdnsはかなり有用。

#include <ESP8266mDNS.h>
MDNS.begin("superhost");

Android

SDKでAPIは提供されているが、アプリ側で対応が必要。そして現状、chromeでは使えない。

スマホは公共ネットワークに接続することも多いだろうから、セキュリティ的に使えなくて正解かもしれない。

2018-03-27

Windowsは文字キーを押している間、タッチパッドやボタンでクリックできない

久々にWindowsを使用していると、「文字キーを押している間はタッチパッドやボタンでクリックできない」現象に遭遇したのでメモ。

この現象、Microsoft Supportによると不具合でも何でもなくて期待された振る舞いとのこと。

文字入力中にタッチパッドに手が触れてクリック暴発、カーソルが飛んであらぬところに文字入力。
そんな悲しい事故を防ぐために、キー入力中はOS側でクリックを一時的に無効にしてくれるという親切機能。

Accidental Activation Prevention (AAP)という御大層な名前がついており、Windows8.1で強制導入された。

邪魔なので無効にする

Windows10の場合、設定 > デバイス > タッチパッド から「タッチパッドの感度」を「最大の感度」にすると無事クリックできるようになる。

詳しくはMicrosoft Supportで

Microsoftが忘れ去ってしまったもの、この機能によって完全に失われてしまったもの

そう。
射撃しつつ前進だ。

2015-08-01

Linuxとのデュアルブート環境にwindows10をインストールしたらgrub rescueになっちゃった件

Linuxとのデュアルブート環境にWindows10をアップデートインストールしたら再起動に失敗してgrub rescueになっちゃいました。

導入環境
  • Windows 7
  • Manjaro Linux

MBRが上書きされちゃったようです。

以下、復旧手順。

2010-02-15

Office Outlook 2007 でセキュリティの警告ダイアログを表示されないようにするには?

セキュリティ警告ダイアログ

Outlookオブジェクトモデルを経由してOutlookに保存されているスケジュールやメールデータにアクセスした場合、アクセスの許可を確認するダイアログが表示される場合がある。
アクセスを許可する場合でも、1回の操作につき最大でも10分間に限り、バックグランドで定期的に動作させるようなプログラムの場合はとても煩わしい。

セキュリティ警告ダイアログを表示されないようにする方法を調べた。

2008-12-03

共有フォルダのサムネイルを無効にする

レジストリ HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisableThumbnailsOnNetworkFolders=1 Windowsスマートチューニング

2008-11-13

MegaRAIDでタイムアウトエラーが発生し、起動に時間がかかる

ターミネータ付のケーブルに変えてたの忘れてた。カード上のターミネータを無効にして解決。

パラレル ポート ドライバ サービスは開始できませんでした

システムログでのエラー。BIOSでパラレルポートを殺すと出た。 MSのサポート技術情報 レジストリへ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Start = 4 をセットして解決。

2008-08-22

コントロールパネルが一瞬だけ表示され、すぐに閉じられる

「Software Licensing」サービスを起動する。開始していた場合は、一度停止してから開始する。

2008-08-08

ウザい adobe のまとめ

adobe contributeのofficeプラグインを無効にする

http://support.adobe.co.jp/faq/faq/qadoc.sv?231797+002

adobeアップデートの自動確認を無効にする

http://support.adobe.co.jp/faq/faq/qadoc.sv?232371+002+3#anc_a

bonjourのmdnsresponderサービスを削除する

c:\Program Files\Bonour\mDNSResponder.exe -remove