USBメモリ起動のKaliLinuxに永続的な書き込み領域を作る

# USB起動の Kali Linux に永続的な書き込み領域を作る。

* USBメモリから起動したKali Linuxに永続的な保存領域を作る。  
アップデートやパッケージの追加、変更した設定の保存、調査経過・結果の保存とか出来て便利  
（アップデート後起動しなくなった事もあるけど、、、）
* 日本語入力設定
* TIMEZONE変更のメモ（変更しない事にしました）

## Kali Linuxの入手

[Kali Linux Downloads](https://www.kali.org/downloads/)  から入手

* 今回は Kali Linux 64-Bit(Live) 2020.1b を利用
* USB起動のUSBメモリ作成はMacで行いました  
  windowsの場合、ISOイメージのUSBメモリへの書き込み部分を[Rufus](https://rufus.ie/)や[Linux Live USB CREATOR](https://www.linuxliveusb.com/en/download)などでの操作に置き換えてください

注意点

* 最近のPCで、USBメモリからKaliLinuxを起動する際はセキュアブートを無効化する必要があります


参考） 
日本入力環境を整えるまで最低限必要そうなキー対応表

|入力したいキー|操作するキー|
|:--|:--|
|_|shift + =|
|=|^|
|"|shift + :|


## Kali Linux ISOイメージをUSBメモリに書き込む

* 今回は、昔Ubuntuを入れて放置していたUSBメモリを使って Kali Linux の起動USBメモリを作りました。
* /dev/disk4として認識されているのが対象のUSBメモリです。
* Kali LinuxのISOイメージは事前に入手しておいてください。

```shell
kichise@imac ~ % diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk2         121.0 GB   disk0s2

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                 Apple_APFS Container disk2         2.0 TB     disk1s2

/dev/disk2 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +2.1 TB     disk2
                                 Physical Stores disk0s2, disk1s2
   1:                APFS Volume Macintosh HD - Data     147.0 GB   disk2s1
   2:                APFS Volume Preboot                 83.3 MB    disk2s2
   3:                APFS Volume Recovery                528.1 MB   disk2s3
   4:                APFS Volume VM                      2.1 GB     disk2s4
   5:                APFS Volume Macintosh HD            11.1 GB    disk2s5

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *480.1 GB   disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:       Microsoft Basic Data ボリューム              479.9 GB   disk3s2

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *63.9 GB    disk4
   1:             Windows_FAT_32 UBUNTU 17_1             63.9 GB    disk4s1

kichise@imac ~ % 
kichise@imac ~ % diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
kichise@imac ~ % 
kichise@imac ~ % sudo dd bs=4m if=/Users/kichise/ISO/kali-linux-2020.1b-live-amd64.iso of=/dev/rdisk4
Password:
686+1 records in
686+1 records out
2881105920 bytes transferred in 80.742329 secs (35682720 bytes/sec)
kichise@imac ~ % 
```

## Kali Linux LIVE USBメモリに保存領域を作成する

* USBメモリからKali Linuxを起動して操作してください。
* 保存領域はUSBメモリの空き容量全体利用します。
* 保存領域の暗号化は行っていません。

### パーティション構成の確認

* WindowsがインストールされているパソコンでKali Linuxを起動した場合の例です。
* 容量やDisk model、パーティション構成から起動したUSBメモリのデバイス名を特定してください。  
今回は /dev/sdb が該当します。

```shell
kali@kali:~$ sudo bash
root@kali:/home/kali# fdisk -l
Disk /dev/sda: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Micron_1100_MTFD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21FEB3FE-999E-4B40-954F-7A3B728755CF

Device         Start        End   Sectors   Size Type
/dev/sda1       2048    2099199   2097152     1G EFI System
/dev/sda2    2099200    2361343    262144   128M Microsoft reserved
/dev/sda3    2361344  993923071 991561728 472.8G Microsoft basic data
/dev/sda4  993923072 1000214527   6291456     3G Windows recovery environme


Disk /dev/sdb: 59.49 GiB, 63864307712 bytes, 124734976 sectors
Disk model: Flash Drive     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2259da88

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5625087 5625024  2.7G 17 Hidden HPFS/NTFS
/dev/sdb2       5625088 5626559    1472  736K  1 FAT12


Disk /dev/loop0: 2.4 GiB, 2565337088 bytes, 5010424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
```

### partitionの作成

公式にはpartedを使う方法が書いてありましたが、私には難しく感じたのでfdiskで操作しました。
空き容量全体を使ったから、partition作成時にオプションは全てdefaultを受け入れました。

```shell
root@kali:/home/kali# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.34).                                        
Changes will remain in memory only, until you decide to write them.        
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 59.49 GiB, 63864307712 bytes, 124734976 sectors
Disk model: Flash Drive     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2259da88

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5625087 5625024  2.7G 17 Hidden HPFS/NTFS
/dev/sdb2       5625088 5626559    1472  736K  1 FAT12

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 
First sector (5626560-124734975, default 5627904): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (5627904-124734975, default 124734975): 

Created a new partition 3 of type 'Linux' and of size 56.8 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.

root@kali:/home/kali# 
```

### フォーマット　＆　ラベル付

persistence　と言うラベルをつけたファイルシステムを作成します。
公式の手順ではファイルシステム作成とラベル付を別々に実行する手順になっていましたが、
ファイルシステム作成時にLabelを指定しているので以下の手順にしました。

* ファイルシステム作成
* Label確認(persistenceである事を確認)

```shell
root@kali:/home/kali# mkfs.ext3 -L persistence /dev/sdb3
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 14888384 4k blocks and 3727360 inodes
Filesystem UUID: 56fabebf-14fa-476c-be98-39a718351bd2
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   

root@kali:/home/kali# e2label /dev/sdb3
persistence
root@kali:/home/kali# 
```

### persistence設定ファイル作成

```shell
root@kali:/home/kali# mkdir -p /mnt/my_usb
root@kali:/home/kali# mount /dev/sdb3 /mnt/my_usb/
root@kali:/home/kali# echo "/ union" > /mnt/my_usb/persistence.conf
root@kali:/home/kali# umount /mnt/my_usb/
root@kali:/home/kali# 
```

## 再起動

保存領域を利用する場合、USBから起動する際の**"Kali Linux Boot Menu"**から
**"Live system(persistence,check kali.org/prst)"**を選択してください。

## 日本語入力対応

保存領域作成後、Kali Linuxを起動し直してから実施してください。

### ibus-anthy インストール

```shell
kali@kali:~$ sudo apt install ibus-anthy
```

### IBus Input Method設定

GUIでの設定です。メニュー階層を表してるつもり。。。

```text
Settings -> IBus Preferences
 Input Method
  Add Japanese Anthy

追加した　Japanese Anthy　を選択して、Preferencesをクリック
Setup-IBus-Anthy
 Typing Method
   Keyboard Layout
    jp に変更
```

Input method のアイコンを右クリックして　restart を実行
日本語入力と直接入力の切り替えは　半角／全角　で行います。

以下の設定も行いましたが、必要ないかも知れない。

```text
Keyboard
 Add Japanese(OADG 109A)
 move up Japanese Layout to first
```

## TIMEZONEの設定

TIMEZONEがUTCになっているので Asia/Tokyo に変更してみました。
でも、RTC in local TZ を yes に設定すると怒られます。しかも、思った通りに動きません。

* インストール直後からUTC設定で動作しているサーバもあるから設定はいじらずTIMEZONEがずれてる事を認識して利用した方が良いかも。

```shell
root@kali:/home/kali# timedatectl set-timezone Asia/Tokyo
root@kali:/home/kali# timedatectl set-local-rtc 1
root@kali:/home/kali# timedatectl 
               Local time: Thu 2020-03-26 22:57:38 JST
           Universal time: Thu 2020-03-26 13:57:38 UTC
                 RTC time: Thu 2020-03-26 22:57:38
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
root@kali:/home/kali#

kali@kali:~$ sudo timedatectl set-local-rtc 0
kali@kali:~$ sudo hwclock --hctosys --local
kali@kali:~$ timedatectl 
               Local time: Thu 2020-03-26 14:32:31 JST
           Universal time: Thu 2020-03-26 05:32:31 UTC
                 RTC time: Thu 2020-03-26 14:32:31
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
kali@kali:~$ 
```

## 参考
永続的な書き込み領域を作る際の参照URL:
[書き込み可能領域を作る(kali.org:Adding Persistence to a Kali Linux "Live" USB Drive)](https://www.kali.org/docs/usb/kali-linux-live-usb-persistence/)