Last updated May 9, 2021

Published under MIT licence

How to install Tails on USB flash drive or SD card on macOS

Requirements

  • Computer running macOS Mojave or Catalina
  • USB flash drive or SD card (faster is better)

Caveats

  • When copy/pasting commands that start with $, strip out $ as this character is not part of the command

Guide

Step 1: install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Step 2: disable Homebrew analytics

brew analytics off

Step 3: install GnuPG

brew install gnupg

Step 4: download latest release of Tails

Step 5: set Tails release semver environment variable

Heads-up: replace 4.18 with latest release semver.

TAILS_RELEASE_SEMVER=4.18

Step 6: download PGP signature of Tails release

curl -o ~/Downloads/tails-amd64-$TAILS_RELEASE_SEMVER.img.sig https://tails.boum.org/torrents/files/tails-amd64-$TAILS_RELEASE_SEMVER.img.sig

Step 7: import “Tails developers” PGP public key

$ curl https://tails.boum.org/tails-signing.key | gpg --import
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1334k  100 1334k    0     0  92536      0  0:00:14  0:00:14 --:--:--  212k
gpg: key 0xDBB802B258ACD84F: 2170 signatures not checked due to missing keys
gpg: key 0xDBB802B258ACD84F: public key "Tails developers (offline long-term identity key) <tails@boum.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 0x4E2C6E8793298290: no user ID for key signature packet of class 10
gpg: key 0x4E2C6E8793298290: no user ID for key signature packet of class 12
gpg: key 0x4E2C6E8793298290: no user ID for key signature packet of class 12
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   3  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 3u

imported: 1

👍

Step 8: verify Tails release (learn how here)

$ gpg --verify ~/Downloads/tails-amd64-$TAILS_RELEASE_SEMVER.img.sig
gpg: assuming signed data in '/Users/sunknudsen/Downloads/tails-amd64-4.18.img'
gpg: Signature made Mon 19 Apr 11:30:01 2021 EDT
gpg:                using EDDSA key CD4D4351AFA6933F574A9AFB90B2B4BD7AED235F
gpg: Good signature from "Tails developers (offline long-term identity key) <tails@boum.org>" [unknown]
gpg:                 aka "Tails developers <tails@boum.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A490 D0F4 D311 A415 3E2B  B7CA DBB8 02B2 58AC D84F
     Subkey fingerprint: CD4D 4351 AFA6 933F 574A  9AFB 90B2 B4BD 7AED 235F

Good signature

👍

Step 9: copy Tails to USB flash drive or SD card

WARNING: DO NOT RUN THE FOLLOWING COMMANDS AS-IS.

Run diskutil list to find disk ID of USB flash drive or SD card to overwrite with Tails (disk2 in the following example).

Replace diskn and rdiskn with disk ID of USB flash drive or SD card (disk2 and rdisk2 in the following example) and tails-amd64-4.18.img with current image.

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - Data     340.9 GB   disk1s1
   2:                APFS Volume Preboot                 85.9 MB    disk1s2
   3:                APFS Volume Recovery                529.0 MB   disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4
   5:                APFS Volume Macintosh HD            11.3 GB    disk1s5

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk2
   1:             Windows_FAT_32 boot                    268.4 MB   disk2s1
   2:                      Linux                         15.7 GB    disk2s2

$ sudo diskutil unmount /dev/diskn
disk2 was already unmounted or it has a partitioning scheme so use "diskutil unmountDisk" instead

$ sudo diskutil unmountDisk /dev/diskn (if previous step fails)
Unmount of all volumes on disk2 was successful

$ sudo dd bs=1m if=$HOME/Downloads/tails-amd64-4.18.img of=/dev/rdiskn
1131+0 records in
1131+0 records out
1185939456 bytes transferred in 44.708618 secs (26525970 bytes/sec)

$ sudo diskutil unmountDisk /dev/diskn
Unmount of all volumes on disk2 was successful

👍

Contributors:Sun KnudsenSun Knudsen 7aqdxe6f7aqdxe6f
Reviewers:Be the first

Wish to contribute or need help? Read the docs.
This website is not tracking you. PGP public key fingerprint: C4FB DDC1 6A26 2672 920D  0A0F C132 3A37 7DE1 4C8B