WSLメモ


# 開発環境

主に参考にしたサイト

- [【Windows10 WSL2/Ubuntu 20.04 LTS】gcc, make などの開発ツールをインストールして使う](https://www.yokoweb.net/2020/06/03/win10-wsl2-ubuntu-20_04-gcc-make-install/)

# ターミナルの色を変えたい
どちらも利用しました

## dircolors
[WSLのWindowsのフォルダの色が見づらいのを直す](https://www.kwbtblog.com/entry/2019/04/27/023411)

```
dircolors -p > ~/.dircolors
vi ~/.dircolors

DIR 01;31 # directory 
DIR 01,46 # directory

eval $(dircolors -b ~/.dircolors)

vi ~/.bashrc
eval $(dircolors -b ~/.dircolors) ## 追加
``` 

## ColorTool: WSL Terminalの配色変更

ColorTool.exe -d solarized_dark.itermcolors
[WSLでターミナルの文字色を変える(2019/8/10版)](https://qiita.com/ligun/items/0a63660e1d8b486232d9)

# teminal

- [Windows ターミナルでの配色](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/color-schemes)
[Windows Terminalで、カラースキーマ(配色テーマ)を設定する。]
(https://blog.blue.wirednet.jp/2020/05/21/542/windows-terminal-color-scheme/)

**"colorScheme": "One Half Dark",** をprofiles::defaults にセットする

```
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl",
               "colorScheme": "One Half Dark",
                "background" : "#404040",
        },

```

[Windows TerminalにSSH接続を追加する](https://astherier.com/blog/2020/08/add-ssh-connection-profile-to-windows-terminal/)

```
        "list":
        [
          {
          },
          {     // 追加
                "name": "Ubuntu-TMS",                 // 名称（選択するときのリスト）
                "commandline": "ssh username@host",　 // 実行するコマンド
                "hidden": false,
                "tabTitle": "TABTITLE",               // タブのタイトル
                "background" : "#404040",             // 背景の色
    	  },
```


# perl @INC問題
これまで使っているPCは、たぶんperlの再構築をして@INCに"./"を入れたと思われる。
面倒だが、ソースコード中にカレント指定を入れた方が、何かと良いのではないかと判断

**use lib "./";**

```
use strict;　　　 ### 利用するモジュール（標準,CPANなど）
use warnings;
use utf8;
use Encode 'decode';
use Data::Dumper;

use lib "./";     ### ここに追記
use config;       ### カレントディレクトリにあるモジュール
use csvlib;
use csvgraph;
```



# cron

- [WSL で cron を利用する方法・Windows 起動時に自動実行する方法](https://loumo.jp/archives/24595)
- [WSL新機能: バックグラウンドタスク cronを使う方法](https://news.mynavi.jp/itsearch/article/hardware/3714)
- [cronでプログラムを定期的に自動実行させる](https://nigimitama.hatenablog.jp/entry/2019/11/10/182603)
-[cron を10分おき　2時間おきに実行する方法](https://ex1.m-yabe.com/archives/3113)

標準出力とエラー出力をリダイレクトして、バックグラウンドで実行

```
% aaa >log 2>&1  &
```

こちらにも別途 sshd, cron, rsyslog, 自動起動などをまとめてます

- [WSL：リモートデスクトップ接続とssh](https://qiita.com/plus_sum/items/35ec62ba50f53043d6f5)

# qmail

[qmailのインストール及びその設定(qmail設定ファイルの設定)](http://www.mm-labo.com/computer/linux/qmail/qmail-configure.html)

初期設定では、/var/qmail/control以下には次のようなファイルが作成されているでしょう。


- defaultdomain:toなどにドメイン名が省略された場合、補完されるドメイン名
    - zeijyaku.jp
- locals:受信するホスト名・ドメイン名(qmail-sendが利用)
    - localhost
    - zeijyaku.jp
- plusdomain:補完するドメインを設定するらしい
- rcpthosts:SPAM対策用に中継の設定をします。 (このファイルに記述されているドメイン名やホスト名が中継を許可されます。 )
    - localhost
    - zeijyaku.jp
- me:自ホストのFQDNを設定します。



# disk full
突然viを立ち上げるとエラーが出るようになった。
短い時間だけ表示されるエラーメッセージを見ると、"ディスクがいっぱいなんじゃないか!?"という内容。
そんな馬鹿なと、df をしてみると本当にfullだった。
かすかな希望で df / をしてみても単に / の行だけが表示された。

```
$ df
Filesystem      1K-blocks       Used  Available Use% Mounted on
/dev/sdc        xxxxxxxx  xxxxxxxxx   0   100% /
```

参考にしたサイト

https://qiita.com/siruku6/items/c91a40d460095013540d

https://learn.microsoft.com/ja-jp/windows/wsl/disk-space

 
## なにはともあれwslを止める
wslが動いていると、diskpartあたりでファイルが壊れる懸念もあるので、何はともあれWSLを止める

```
PS C:\WINDOWS\system32> wsl.exe --shutdown
```

## wslのディストリビューションを確認する

稼働しているディストリビューションを確認する

```
PS C:\WINDOWS\system32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  Ubuntu          Running         2
```

## 使用している仮想ファイルのパスを確認する
まずは、wslが使っている仮想ファイル（ext4.vhdx）のパスを調べる。
以下のコマンドは、 Windowサイズを横に大きくして実行すること（小さいと、改行が入り、扱いづらい）

 ```
PS C:\WINDOWS\system32> Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss


    Hive: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss


Name                           Property
----                           --------
{7aff25ec-3254-4ed2-bb56-353dd State              : 1
14433c0}                       DistributionName   : Ubuntu-20.04
                               Version            : 2
                               BasePath           : C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
                               Flags              : 15
                               DefaultUid         : 1000
                               PackageFamilyName  : CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
                               KernelCommandLine  : BOOT_IMAGE=/kernel init=/init
                               DefaultEnvironment : {HOSTTYPE=x86_64, LANG=en_US.UTF-8, PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games, TERM=xterm
                               -256color}
{ec7d6488-220a-419d-a9bc-d2397 State             : 1
1ab146c}                       DistributionName  : Ubuntu
                               Version           : 1
                               BasePath          : C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
                               PackageFamilyName : CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
                               DefaultUid        : 1000
                               Flags             : 15
TryStoreWSL

```

取得したディレクトリパスの中身を確認

```
PS C:\WINDOWS\system32> ls C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState


    ディレクトリ: C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalSta
    te


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/05/13      9:23                temp
-a----        2024/06/12     17:58   270818869248 ext4.vhdx
-a---l        2022/05/13      8:18              0 fsserver
```

次のディレクトリ名+ext4.vhdxを使って、ファイル名に間違えがないことを確認

```
S C:\WINDOWS\system32> ls C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx


    ディレクトリ: C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/06/12     18:04   270818869248 ext4.vhdx
```

## diskpartでサイズの変更
ここからが本番
指定するファイルサイズは、MB（単位）である点に注意。
指定したサイズが現状以下だと、エラーになる。
```
PS C:\WINDOWS\system32> diskpart

Microsoft DiskPart バージョン 10.0.19041.3636

Copyright (C) Microsoft Corporation.
コンピューター: MT-TMS

DISKPART> Select vdisk file="C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"

DiskPart により、仮想ディスク ファイルが選択されました。

DISKPART> detail vdisk

デバイスの種類 ID: 0 (不明)
ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明)
状態: 追加済み
仮想サイズ:  500 GB
物理サイズ:  252 GB
ファイル名: C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。


DISKPART> expand vdisk maximum=520000

  100% 完了しました

DiskPart により、仮想ディスク ファイルは正常に拡張されました。

DISKPART> exit

DiskPart を終了しています...
PS C:\WINDOWS\system32>

この段階では、WSLのファイルシステムとしては、拡張が認識されていない
```

dfで確認すると変わっていない...(Availableが増えているのは、ファイルを削除したため）

```
$ df
Filesystem      1K-blocks       Used  Available Use% Mounted on
/dev/sdc        xxxxxxxx  xxxxxxxx    4994444  98% /
```
```
PS C:\WINDOWS\system32> wsl.exe --system -d Ubuntu df -h /mnt/wslg/distro
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        251G  234G  4.8G  98% /mnt/wslg/distro
```
resize2fsで、WSLファイル拡張を設定


```
$ mount | grep ext4
/dev/sdc on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdc on /mnt/wslg/distro type ext4 (ro,relatime,discard,errors=remount-ro,data=ordered)
```
対象のデバイスが、/dev/sdcと判明
resize2fsで指定するパラメータは、diskpartのexpand vdiskで指定した数値に 'M'を付けたもの

```
$ sudo resize2fs /dev/sdc 520000M
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/sdc is mounted on /; on-line resizing required
old_desc_blocks = 32, new_desc_blocks = 64
The filesystem on /dev/sdc is now 133120000 (4k) blocks long.

$ df .
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdc       523001792 244680580 254321276  50% /
```

無事に、/ パーティションが拡張できた。