【Tips】Kali Linux の Live Image を USB メモリで Persistence

# 概要

単なる自分用の備忘録です。参照したマニュアルは以下。

[Adding Persistence to a Kali Linux "Live" USB Drive](https://www.kali.org/docs/usb/kali-linux-live-usb-persistence/)

# 事前準備：Kali Linux を USB メモリに焼く

以下を参考に予め USB メモリに Kali Linux の Live Image を焼いておく。
Windows なら Etcher で、Linux なら dd コマンドで焼けば OK。

[Making a Kali Bootable USB Drive](https://www.kali.org/docs/usb/kali-linux-live-usb-install/)

# ディスクサイズのチェック

今回は 32GB の USB メモリで実施。実効容量は 28.93 GiB。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #fdisk -l

Disk /dev/sdb: 28.93 GiB, 31042043904 bytes, 60628992 sectors
Disk model: USB Flash Disk  
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: 0xfb0b3988

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5898239 5898176  2.8G 17 Hidden HPFS/NTFS
/dev/sdb2       5898240 5899711    1472  736K  1 FAT12
```

# 追加のパーティションを切る

開始位置はマニュアル通り、まずは Live Image の ISO のサイズのすぐ隣から。
終了位置はディスクサイズから余裕を持って 28gb。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #end=28gb
┌─[root@parrot]─[/home/jangari]
└──╼ #read start _ < <(du -bcm /home/jangari/Downloads/kali-linux-2020.2-live-amd64.iso | tail -1); echo $start
2882
```

parted でパーティションを切ろうとすると直近の最適な始点じゃないから
アライメントがずれる、といった警告が出る。日和ったので適切な始点を
メモって一旦キャンセル。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #parted /dev/sdb mkpart primary $start $end
Warning: You requested a partition from 2882MB to 28.0GB (sectors 5628906..54687500).
The closest location we can manage is 3021MB to 28.0GB (sectors 5899712..54687500).
Is this still acceptable to you?
Yes/No? Yes                                                               
Warning: The resulting partition is not properly aligned for best performance:
5899712s % 2048s != 0s
Ignore/Cancel? Cancel
┌─[✗]─[root@parrot]─[/home/jangari]
└──╼ #
```

改めて始点を指定してパーティションを切る。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #parted /dev/sdb mkpart primary 3021MB $end
Information: You may need to update /etc/fstab.

┌─[root@parrot]─[/home/jangari]                                           
└──╼ #fdisk -l

Disk /dev/sdb: 28.93 GiB, 31042043904 bytes, 60628992 sectors
Disk model: USB Flash Disk  
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: 0xfb0b3988

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdb1  *         64  5898239  5898176  2.8G 17 Hidden HPFS/NTFS
/dev/sdb2       5898240  5899711     1472  736K  1 FAT12
/dev/sdb3       5900288 54687743 48787456 23.3G 83 Linux
```

# ファイルシステムの作成

今回は mkfs.ext4 で ext4 を作った。ラベルは persistence としておく。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #mkfs.ext4 -L persistence /dev/sdb3
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 6098432 4k blocks and 1525920 inodes
Filesystem UUID: 181ecc87-e2fd-4c2d-8feb-d2ee3655d23c
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

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

マウントポイントを作ってマウントできるか確認。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #mkdir /mnt/my_usb
┌─[root@parrot]─[/home/jangari]
└──╼ #mount /dev/sdb3 /mnt/my_usb
┌─[root@parrot]─[/home/jangari]
└──╼ #mount | grep /dev/sdb3
/dev/sdb3 on /mnt/my_usb type ext4 (rw,relatime)
```

# Live Image の Persistence の設定

persistence.conf を作る。 

```
┌─[root@parrot]─[/home/jangari]
└──╼ #echo "/ union" > /mnt/my_usb/persistence.conf
┌─[root@parrot]─[/home/jangari]
└──╼ #ls -l /mnt/my_usb/persistence.conf 
-rw-r--r-- 1 root root 8 Jun  8 16:20 /mnt/my_usb/persistence.conf
```

終わったらアンマウント。

```
┌─[root@parrot]─[/home/jangari]
└──╼ #umount /mnt/my_usb
┌─[root@parrot]─[/home/jangari]
└──╼ #mount | grep /dev/sdb3
┌─[✗]─[root@parrot]─[/home/jangari]
└──╼ #
```

# おわりに

おわり！