Merge branch 'stable' into devel
[tails.git] / features / usb_install.feature
blobc52d2a29c79e8b15c54215a5c232fb688d5a6ef2
1 @product
2 Feature: Installing Tails to a USB drive
3   As a Tails user
4   I want to install Tails to a suitable USB drive
6 # XXX: rename to tails_installer.feature and move things that don't use Tails
7 # Installer elsewhere?
9   Scenario: Try installing Tails to a too small USB drive without partition table
10     Given I have started Tails from DVD without network and logged in
11     And I temporarily create a 4500 MiB disk named "too-small-device"
12     And I start Tails Installer
13     But a suitable USB device is not found
14     And no USB drive is selected
15     When I plug USB drive "too-small-device"
16     Then I am told by Tails Installer that the destination device "is too small"
17     And no USB drive is selected
18     When I unplug USB drive "too-small-device"
19     And I temporarily create a 7200 MiB disk named "big-enough"
20     And I plug USB drive "big-enough"
21     Then the "big-enough" USB drive is selected
23   Scenario: Try installing Tails to a too small USB drive with GPT and a FAT partition
24     Given I have started Tails from DVD without network and logged in
25     And I temporarily create a 4 GiB disk named "gptfat"
26     And I create a gpt partition with a vfat filesystem on disk "gptfat"
27     And I plug USB drive "gptfat"
28     When I start Tails Installer
29     Then I am told by Tails Installer that the destination device "is too small"
31   Scenario: Detecting when a target USB drive is inserted or removed
32     Given I have started Tails from DVD without network and logged in
33     And I temporarily create a 7200 MiB disk named "temp"
34     And I start Tails Installer
35     But a suitable USB device is not found
36     When I plug USB drive "temp"
37     Then the "temp" USB drive is selected
38     When I unplug USB drive "temp"
39     Then a suitable USB device is not found
41   Scenario: Installing Tails to a used USB drive
42     Given I have started Tails from DVD without network and logged in
43     And I temporarily create a 7200 MiB disk named "install"
44     And I create a gpt partition with a vfat filesystem on disk "install"
45     And I plug USB drive "install"
46     And I install Tails to USB drive "install" by cloning
47     Then the running Tails is installed on USB drive "install"
48     But there is no persistence partition on USB drive "install"
50   Scenario: Installing Tails to a pristine USB drive
51     Given I have started Tails from DVD without network and logged in
52     And I temporarily create a 7200 MiB disk named "install"
53     And I plug USB drive "install"
54     And I install Tails to USB drive "install" by cloning
55     Then the running Tails is installed on USB drive "install"
56     But there is no persistence partition on USB drive "install"
58   Scenario: Re-installing Tails over an existing USB installation with a persistent partition
59     # We reach this first checkpoint only to ensure that the ' __internal' disk has reached the state (Tails installed + persistent partition set up) we need before we clone it below.
60     # This first part is done without Tails Installer (install from Tails USB image)
61     Given I have started Tails without network from a USB drive with a persistent partition enabled and logged in
62     Given I have started Tails from DVD without network and logged in
63     And I clone USB drive "__internal" to a temporary USB drive "install"
64     And I plug USB drive "install"
65     # This second part is done with Tails Installer, that's what this scenario is about
66     When I reinstall Tails to USB drive "install" by cloning
67     Then the running Tails is installed on USB drive "install"
68     And there is no persistence partition on USB drive "install"
70   Scenario: Booting Tails from a USB drive without a persistent partition and creating one
71     Given I have started Tails without network from a USB drive without a persistent partition and stopped at Tails Greeter's login screen
72     And I log in to a new session
73     When I create a persistent partition
74     Then a Tails persistence partition exists on USB drive "__internal"
76   Scenario: Booting Tails from a USB drive without a persistent partition
77     Given I have started Tails without network from a USB drive without a persistent partition and stopped at Tails Greeter's login screen
78     When I log in to a new session
79     Then Tails is running from USB drive "__internal"
80     And the persistent Tor Browser directory does not exist
81     And there is no persistence partition on USB drive "__internal"
83   #13459
84   @fragile
85   Scenario: Booting Tails from a USB drive in UEFI mode
86     Given I have started Tails without network from a USB drive without a persistent partition and stopped at Tails Greeter's login screen
87     Then I power off the computer
88     Given the computer is set to boot in UEFI mode
89     When I start Tails from USB drive "__internal" with network unplugged and I login
90     Then the boot device has safe access rights
91     And Tails is running from USB drive "__internal"
92     And the boot device has safe access rights
93     And Tails has started in UEFI mode
95   Scenario: Installing Tails to a USB drive with an MBR partition table but no partitions, and making sure that it boots
96     Given I have started Tails from DVD without network and logged in
97     And I temporarily create a 7200 MiB disk named "mbr"
98     And I create a msdos label on disk "mbr"
99     And I plug USB drive "mbr"
100     And I install Tails to USB drive "mbr" by cloning
101     Then the running Tails is installed on USB drive "mbr"
102     But there is no persistence partition on USB drive "mbr"
103     When I shutdown Tails and wait for the computer to power off
104     And I start Tails from USB drive "mbr" with network unplugged and I login
105     Then Tails is running from USB drive "mbr"
106     And the boot device has safe access rights
107     And there is no persistence partition on USB drive "mbr"
109   Scenario: Writing a Tails isohybrid to a USB drive and booting it, then installing Tails on top of it using Tails Installer, and it still boots
110     Given a computer
111     And I temporarily create a 7200 MiB disk named "isohybrid"
112     And I write the Tails ISO image to disk "isohybrid"
113     And I start Tails from USB drive "isohybrid" with network unplugged and I login
114     Then Tails is running from USB drive "isohybrid"
115     When I shutdown Tails and wait for the computer to power off
116     And I start Tails from DVD with network unplugged and I login
117     And I install Tails to USB drive "isohybrid" by cloning
118     Then the running Tails is installed on USB drive "isohybrid"
119     But there is no persistence partition on USB drive "isohybrid"
120     When I shutdown Tails and wait for the computer to power off
121     And I start Tails from USB drive "isohybrid" with network unplugged and I login
122     Then Tails is running from USB drive "isohybrid"
123     And the boot device has safe access rights
124     And there is no persistence partition on USB drive "isohybrid"
126   Scenario: The system partition is updated when booting from a USB drive where a Tails USB image was copied
127     Given a computer
128     And I temporarily create a 7200 MiB disk named "usbimage"
129     And I write the Tails USB image to disk "usbimage"
130     And I start Tails from USB drive "usbimage" with network unplugged and I login
131     Then Tails is running from USB drive "usbimage"
132     And the label of the system partition on "usbimage" is "Tails"
133     And the system partition on "usbimage" is an EFI system partition
134     And the FAT filesystem on the system partition on "usbimage" is at least 4000M large
135     And the UUID of the FAT filesystem on the system partition on "usbimage" was randomized
136     And the label of the FAT filesystem on the system partition on "usbimage" is "TAILS"
137     And the system partition on "usbimage" has the expected flags