2020-07-08

format コマンドでデータ消去

家族が使っているノート PC の HDD を SSD に換装したので、HDD を廃棄するためにデータを消去する手順を確認した。
いまどきの HDD と Windows であれば、Windows 標準の format コマンドだけで十分なデータ消去ができるようだ。
ただし、不良セクターの代替処理がおこなわれている場合やハードウェア障害によりエラーが発生している場合には関連するセクターのデータ消去はできない恐れがある。

format コマンドによる上書き処理

/P スイッチを使ってゼロ埋めと追加の上書きを指示する。
PS C:\WINDOWS\system32> format /?
(略)
  /P:count        Zero every sector on the volume.  After that, the volume
                  will be overwritten "count" times using a different
                  random number each time.  If "count" is zero, no additional
                  overwrites are made after zeroing every sector.  This switch
                  is ignored when /Q is specified.
(略)
以下、私による訳 
ボリュームの各セクターをゼロ埋めする。その後、毎回異なる乱数を使用して指定回数上書きする。0回を指定すると、ゼロ埋め後に追加の上書きはおこなわれない。このスイッチは /Q (クイック フォーマット)時には無視される。

要求される上書き回数

データの完全消去 - Wikipedia によると 1回で良い。以下引用
アメリカ国立標準技術研究所NIST)が2006年に発表したSpecial Publication 800-887ページでは、次のように述べられている。『2001年以降の(15GBytes以上の)集積度の高いATAハードディスクにおいては、データの完全消去はディスク全域に1回のみ上書きすれば事足りる』[4][7]。 また、Center for Magnetic Recording Researchは、次のように述べている『データの完全消去はディスクに対する1回の上書きのことである。アメリカ国家安全保障局も推奨要綱にて、同相信号除去比(CMRR)試験をした結果、複数回の上書きは何ら安全性の向上に優位な差をもたらさず、1回の上書きで十分であることを認めている』[8]。 

実際の作業コマンド ライン

実際には処分する HDD をまっさらにしてから単一のボリューム(パーティション) を作成し、そのボリュームに対して format コマンドを実行した。
PS C:\WINDOWS\system32> diskpart

Microsoft DiskPart version 10.0.19041.1

Copyright (C) Microsoft Corporation.
On computer: CXAXUKLUTH

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          476 GB  5120 KB        *
  Disk 1    Online          298 GB  7168 KB        *

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> clean

DiskPart succeeded in cleaning the disk.

DISKPART> create partition primary

DiskPart succeeded in creating the specified partition.

DISKPART> assign LETTER=x

DiskPart successfully assigned the drive letter or mount point.

DISKPART> exit

Leaving DiskPart...
PS C:\WINDOWS\system32> format x: /P:1
The type of the file system is RAW.
The new file system is NTFS.

WARNING, ALL DATA ON NON-REMOVABLE DISK
DRIVE X: WILL BE LOST!
Proceed with Format (Y/N)? y
Formatting 298.1 GB
Volume label (32 characters, ENTER for none)?
Creating file system structures.
Format complete.
     298.1 GB total disk space.
     298.0 GB are available.

2020-06-17

FeedBurner の Twitter 連携が終了していた

…ので IFTTT からツイートするようにしました。

debconf を readline で使う人は libterm-readline-gnu-perl を

私は debconf は Readline で使う人種です。このとき libterm-readline-gnu-perl をインストールしておくと、選択肢の既定値(現在の値)が入力済みで表示されるので便利です。locale の選択なんかは ちょっとげんなりするかもしれない…。


debconf(7) Frontends readline より(強調は私)
The most traditional frontend, this looks quite similar to how Debian configuration always has been: a series of questions, printed out at the console using plain text, and prompts done using the readline library. It even supports tab completion. The libterm-readline-gnu-perl package is strongly recommended if you chose to use this frontend; the default readline module does not support prompting with default values.  At the minimum, you'll need the perl-modules package installed to use this frontend.

This  frontend  has  some  special hotkeys. Pageup (or ctrl-u) will go back to the previous question (if that is supported by the package that is using debconf), and pagedown (or ctrl-v) will skip forward to the next question.

This is the best frontend for remote admin work over a slow connection, or for those who are comfortable with unix.

2020-06-15

Windows Terminal のタブに表示する WSL ディストロのアイコンを設定する


良さそうなアイコンをダウンロードする。
PS C:\Users\yu-ji> wget https://www.iconfinder.com/icons/2682/download/png/64 `
>> -OutFile $ENV:LOCALAPPDATA\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\LocalState\icon-Debian.png
PS C:\Users\yu-ji> wget https://www.iconfinder.com/icons/3166/download/png/64 `
>> -OutFile $ENV:LOCALAPPDATA\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\LocalState\icon-Ubuntu.png
各プロファイルにアイコン ファイルを設定する。
    "profiles":
    {
        "list":
        [
            // 略
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
                "icon": "ms-appdata:///Local/icon-Ubuntu.png"
            },
            {
                "guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
                "hidden": false,
                "name": "Debian",
                "source": "Windows.Terminal.Wsl",
                "icon": "ms-appdata:///Local/icon-Debian.png"
            },
            // 略
        ]
    },

WSL のデフォルト Linux ディストリビューションを変更する

WSL に複数の Linux ディストリビューションを導入しているときに、bash や wsl コマンドで実行されるデフォルトのディストリビューションを変更する。
# Linux ディストリビューションのリストを表示
PS C:\Users\yu-ji> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
  Debian    Running         2

# bash コマンドで実行されるのは Ubuntu
PS C:\Users\yu-ji> bash -c "cat /etc/os-release | grep VERSION="
VERSION="20.04 LTS (Focal Fossa)"

# デフォルトを Debian へ変更
PS C:\Users\yu-ji> wsl --set-default Debian
PS C:\Users\yu-ji> wsl --list --verbose
  NAME      STATE           VERSION
* Debian    Running         2
  Ubuntu    Stopped         2

# bash コマンドで実行されるのは Debian
PS C:\Users\yu-ji> bash -c "cat /etc/os-release | grep VERSION="
VERSION="10 (buster)"

# bash, wsl はどこ?
PS C:\Users\yu-ji> Get-Command bash, wsl

CommandType     Name        Version    Source
-----------     ----        -------    ------
Application     bash.exe    10.0.19... C:\Windows\System32\...
Application     wsl.exe     10.0.19... C:\Windows\System32\...

参考

以前は wslconfig.exe でやっていた

WSL の Debian 再インストール時にエラー Code: 0x80073D05

WSL の Debian を再インストールしようとしたら Code: 0x80073D05 のエラーとなって失敗する。
アンインストールしてもフォルダーが残っていて、これが原因で失敗するらしい。
削除することで無事再インストールできた。

再インストール時のエラー

Code: 0x80073D05

残っていたフォルダー

PS C:\Users\yu-ji> gci -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* | sort
gci : Access to the path 'C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\SystemApp
Data\Helium\Cache' is denied.
At line:1 char:1
+ gci -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* | ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Users\yu-ji\...ta\Helium\Cache:String) [Get-ChildItem], Unauthoriz
   edAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand



    Directory: C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2020/06/04      4:08                SystemAppData


    Directory: C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\SystemAppData


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2018/03/10     12:07                Helium


    Directory: C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\SystemAppData\Helium


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2018/03/10     12:07                Cache
-a----        2018/03/10     12:07           8192 User.dat
-a----        2018/03/10     12:07           8192 UserClasses.dat


    Directory: C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2018/03/10     12:07                TempState

残っていたフォルダーを消す

PS C:\Users\yu-ji> ri -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* -Force
ri : Access to the path 'C:\Users\yu-ji\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\SystemAppD
ata\Helium\Cache' is denied.
At line:1 char:1
+ ri -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* -F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Users\yu-ji\...x_76v4gfsz19hv4:String) [Remove-Item], Unauthorized
   AccessException
    + FullyQualifiedErrorId : RemoveItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.RemoveItemCommand
Helium の中が消せないので Explorer から手動で権限を取得して削除して…
PS C:\Users\yu-ji> ri -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* -Force
PS C:\Users\yu-ji> gci -Recurse -Path $ENV:APPDATA\..\Local\Packages\TheDebianProject* | sort
PS C:\Users\yu-ji>

再インストールする

This product is installed.
できたっぽい。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: yu-ji
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
yu-ji@Cxaxukluth:~$ uname -a
Linux Cxaxukluth 4.19.104-microsoft-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 GNU/Linux
できた。
PS C:\Users\yu-ji> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
  Debian    Running         2

2020-06-13

open WSL$ home directory in file explorer

WSL のホーム ディレクトリをファイル エクスプローラーで開く
PS C:\Users\yu-ji> wsl sh -c "cd && explorer.exe ."
Ubuntu の場合、以下のフォルダーが開かれる
\\wsl$\Ubuntu\home\yu-ji