From charlesreid1

Start with your Kali USB drive. See Kali/Live USB for details.

Instructions

Following the instructions here: http://docs.kali.org/downloading/kali-linux-live-usb-persistence

Start by flashing a USB drive with the Kali image. This article assumes this as a starting point. There should be two partitions on the USB drive.

The procedure we follow below is to create a new partition for storing persistent data. The persistent partition will start right above the second partition (the Kali Live partition). The existing partitions with Kali will take up about 3 GB, so the persistent partition will be about (N - 3) GB in size (where N is the size of your jump drive in GB).

Once we create the partition, we'll format it as an ext3 file system, then create a persistence.conf file to make it usable by Kali as a persistent partition.

Find Your Disk

Start by listing disks.

Linux

On Linux,

$ fdisk -l

Look for the USB drive. Should be at /dev/sdb.

Mac

On Mac,

$ diskutil list

The USB drive should be at /dev/disk1 or /dev/disk2.

Create Persistent Partition

Now we will create a partition on the USB drive, which will store persistent data.

Before

Here is what the disks look like before, from Kali Linux, running fdisk (if you can't find the fdisk utility, make sure you are root!).

The output of fdisk -l shows a block of information about each disk device. Here, we have /dev/sda, which is the hard drive on the machine, with several NTFS/linux partitions, and /dev/sdb, the USB jump drive with Kali installed:

root@kali:~# fdisk -l



Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xd228527c

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048    718847    716800   350M  7 HPFS/NTFS/exFAT
/dev/sda2          718848 230348799 229629952 109.5G  7 HPFS/NTFS/exFAT
/dev/sda3       457674752 488394751  30720000  14.7G 27 Hidden NTFS WinRE
/dev/sda4       230350846 457674751 227323906 108.4G  5 Extended
/dev/sda5       448380928 457674751   9293824   4.4G 82 Linux swap / Solaris
/dev/sda6       230350848 448380927 218030080   104G 83 Linux

Partition 4 does not start on physical sector boundary.
Partition table entries are not in disk order.



                                                                                     
Disk /dev/sdb: 58.9 GiB, 63229132800 bytes, 123494400 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
Disklabel type: dos
Disk identifier: 0x8312dfc0

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5636095 5636032  2.7G 17 Hidden HPFS/NTFS
/dev/sdb2       5636096 5637503    1408  704K  1 FAT12

Create Partition

The next step is to create the partition. The size of Kali Linux is a little under 3 GB:

Disk /dev/sdb: 58.9 GiB, 63229132800 bytes, 123494400 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
Disklabel type: dos
Disk identifier: 0x8312dfc0

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5636095 5636032  2.7G 17 Hidden HPFS/NTFS
/dev/sdb2       5636096 5637503    1408  704K  1 FAT12

so the total size of the remaining persistent partition should be less than (N - 3) GB, where N is the size of the jump drive.

Now we create the partition. Note the du -bcm command is just to get the size of the .iso file. Also note we specify where the partition should end with "end". This hsould be the size of the USB drive.

root@kali:~# end=7gb
root@kali:~# read start _ < <(du -bcm kali-linux-2017.3-amd64.iso | tail -1); echo $start; parted /dev/sdb mkpart primary $start $end
2766
Warning: You requested a partition from 2766MB to 63.0GB (sectors
5402343..123046875).
The closest location we can manage is 63.2GB to 63.2GB (sectors
123476563..123476563).
Is this still acceptable to you?
Yes/No? yes                                                               
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
Information: You may need to update /etc/fstab.

After

Here is what the disks look like after. There is a new /dev/sdb3 partition:

root@jupiter:/home/charles# fdisk -l                                      




Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xd228527c

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048    718847    716800   350M  7 HPFS/NTFS/exFAT
/dev/sda2          718848 230348799 229629952 109.5G  7 HPFS/NTFS/exFAT
/dev/sda3       457674752 488394751  30720000  14.7G 27 Hidden NTFS WinRE
/dev/sda4       230350846 457674751 227323906 108.4G  5 Extended
/dev/sda5       448380928 457674751   9293824   4.4G 82 Linux swap / Solaris
/dev/sda6       230350848 448380927 218030080   104G 83 Linux

Partition 4 does not start on physical sector boundary.
Partition table entries are not in disk order.




Disk /dev/sdb: 58.9 GiB, 63229132800 bytes, 123494400 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
Disklabel type: dos
Disk identifier: 0x8312dfc0

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1  *           64   5636095   5636032  2.7G 17 Hidden HPFS/NTFS
/dev/sdb2         5636096   5637503      1408  704K  1 FAT12
/dev/sdb3         5637504 123476562 117839059 56.2G 83 Linux
/dev/sdb4       123476563 123476563         1  512B 83 Linux

Make Filesystem

Now make a filesystem, and label it what you will (here, persistence):

mkfs.ext3 -L persistence /dev/sdb3
e2label /dev/sdb3 persistence

Mount Point

Last step is to create a mount point for the persistent partition. Then mount the partition, create a persistence config file in the partition, and unmount it.

root@kali:~# mkdir -p /mnt/usbdrive
root@kali:~# mount /dev/sdb3 /mnt/usbdrive
root@kali:~# echo "/ union" > /mnt/usbdrive/persistence.conf
root@kali:~# umount /dev/sdb3

Now when you reboot and run from the USB drive, select the option to start a Live Persistent Kali instance.

Flags