Feature #9378

Installer: Add support for "install from ISO"

Added by Anonymous 2015-05-12 10:06:12 . Updated 2015-07-04 08:22:16 .

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Target version:
Start date:
2015-05-12
Due date:
% Done:

100%

Feature Branch:
451f:liveusb-creator/feature/jessie_launcher_2
Type of work:
Code
Blueprint:

Starter:
Affected tool:
Installer
Deliverable for:

Description


Subtasks


History

#1 Updated by Anonymous 2015-05-12 10:09:13

  • Status changed from New to Confirmed

#2 Updated by Anonymous 2015-06-10 10:20:43

First report:

I tested this with a self built package of liveusb-creator on Jessie (built from the feature/jessie_clean branch, arch=i386, because of the missing syslinux binary for amd64 in the current ISO).

The command I used was liveusb-creator -nvxm. I could successfully install a copy of Tails this way to a USB stick.

What did not work was:

I’ll investigate a bit more before modifying the launcher.

#3 Updated by intrigeri 2015-06-10 12:50:14

> I could successfully install a copy of Tails this way to a USB stick.

Yay! :)

> What did not work was:
> * automatically formatting the device if it’s not in FAT initially. Thus, I formatted it myself as FAT32 before running the installation.

It’s intentional that we don’t format anything unless -P is passed.
Tails Installer only supports initial install (with -P) and upgrading an existing Tails (that doesn’t require any formatting).

> * partitioning the device using the -P option. I suspect https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767457

That’s supposedly workaround’ed in liveusb/creator.py: look for that bug number in there. Is our workaround buggy, or is anything else happening that we’re not catching?

#4 Updated by Anonymous 2015-06-10 14:58:28

intrigeri wrote:
> > I could successfully install a copy of Tails this way to a USB stick.
>
> Yay! :)
>
> > What did not work was:
> > * automatically formatting the device if it’s not in FAT initially. Thus, I formatted it myself as FAT32 before running the installation.
>
> It’s intentional that we don’t format anything unless -P is passed.
> Tails Installer only supports initial install (with -P) and upgrading an existing Tails (that doesn’t require any formatting).

thanks for confirming this.

> > * partitioning the device using the -P option. I suspect https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767457
>
> That’s supposedly workaround’ed in liveusb/creator.py: look for that bug number in there. Is our workaround buggy, or is anything else happening that we’re not catching?

indeed, but there seems to be a bug. sometimes it works with -P, sometimes i get an list index out of range error on line 901 in creator.py which is the line choosing the system partition.
I’ll post the exact output here as soon as my VM gets its network back :)

#5 Updated by Anonymous 2015-06-10 20:16:41

[creator.py:868 (partition_device)] DEBUG: Creating partition
[creator.py:323 (popen)] DEBUG: ['/sbin/sgdisk', '--attributes=1:set:0', '--attributes=1:set:2', '--attributes=1:set:60', '--attributes=1:set:62', '--attributes=1:set:63', '/dev/sda']
[gui.py:270 (run)] ERROR: list index out of range
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/liveusb/gui.py", line 203, in run
    self.live.partition_device()
  File "/usr/lib/python2.7/dist-packages/liveusb/creator.py", line 901, in partition_device
    system_partition = partitions[0]
IndexError: list index out of range

That’s the error I got multiple times in the beginning, but it stopped randomly.

#6 Updated by intrigeri 2015-06-11 07:59:41

This looks like a leftover of Feature #8290, then. Next debugging step is to reproduce, and then check if indeed the partition was created:

  1. if it was created, but it’s not in the partitions list, then I guess that some caching is going on, that we need to discard;
  2. if it was not created (which I doubt, otherwise self._set_partition_flags(self.drive['device'], 1, SYSTEM_PARTITION_FLAGS) would have failed earlier), then probably the call for partition_table.call_create_partition_sync has failed without us noticing (which I would be surprised by).

Once you have this info, then I’ll send it back to Alan on Feature #8290, and if he hasn’t time to fix it, oh well, I guess you or I will have to.

#7 Updated by Anonymous 2015-06-12 13:44:58

Hi,

> This looks like a leftover of Feature #8290, then. Next debugging step is to reproduce, and then check if indeed the partition was created:
>
> * if it was created, but it’s not in the partitions list, then I guess that some caching is going on, that we need to discard;

I was able to reproduce the bug. The partition was indeed created.
But I still cannot install Tails now. With the -P option I always get the same error.
Without the -P option. I get “unknown filesystem. you might need to reformat the device.”

From here, in order to make it work, I need to manually reformat the system partition as FAT. cfdisk first shows it as Linux partition. Then run mkfs.fat on it. And then I can install Tails using liveusb-creator -nmxv

#8 Updated by Anonymous 2015-06-14 03:21:30

  • Feature Branch set to 451f:feature/jessie_launcher

#9 Updated by Anonymous 2015-06-14 03:27:26

  • % Done changed from 0 to 10

#10 Updated by Anonymous 2015-06-15 09:58:05

  • % Done changed from 10 to 20
  • Feature Branch changed from 451f:feature/jessie_launcher to 451f:liveusb-creator/feature/jessie_launcher

#11 Updated by Anonymous 2015-06-15 12:29:08

  • Assignee deleted ()
  • QA Check set to Ready for QA

I’ve successfully tested this in a Debian Jessie i386 VM \o/

Please review.

#12 Updated by BitingBird 2015-06-15 14:07:48

  • Status changed from Confirmed to In Progress

#13 Updated by intrigeri 2015-06-16 00:49:03

  • Assignee set to intrigeri

> Please review.

Yay, I’ll take a look ASAP (but it might have to wait a week or so). Please assign such stuff to me in the future :)

#14 Updated by intrigeri 2015-06-18 05:19:45

  • Assignee deleted (intrigeri)
  • QA Check changed from Ready for QA to Dev Needed

Great!

  • Please rewrite this branch’s history so that it’s based on current feature/jessie, instead of on another branch of yours that wasn’t merged yet .
  • May you please rewrite this branch’s history to clean it up a bit? The commit and then revert thing makes it painful to review.
  • In the future, please split changes to .ui files and those to auto-generated .py ones in different commits. Don’t necessarily bother doing it this time while rewriting history if you don’t know how to split a commit yet.
  • It seems to me that we only want “Install from ISO” to be available when run outside of Tails. If I’m correct on this one, then this branch needs a bit more work (and the technical solution to it was discussed elsewhere already). And then, when running outside of Tails we’ll also want to hide the Clone options, but I guess that’s tracked by another ticket, right?

#15 Updated by Anonymous 2015-06-22 02:15:56

  • Assignee set to intrigeri
  • % Done changed from 20 to 70
  • QA Check changed from Dev Needed to Ready for QA

I created a new branch, based on feature/jessie. It should respect commit splits better.

Other details of this ticket are tracked by Feature #9380.

#16 Updated by Anonymous 2015-06-22 10:33:23

  • Assignee deleted (intrigeri)
  • QA Check changed from Ready for QA to Dev Needed

I think i need to clean that branch up again.

#17 Updated by Anonymous 2015-06-23 09:57:24

  • Feature Branch changed from 451f:liveusb-creator/feature/jessie_launcher to 451f:liveusb-creator/feature/jessie_launcher_1

#18 Updated by Anonymous 2015-06-28 10:03:25

  • Target version changed from Tails_1.4.1 to Tails_1.5

#19 Updated by Anonymous 2015-07-03 08:57:13

  • Assignee set to intrigeri
  • QA Check changed from Dev Needed to Ready for QA
  • Feature Branch changed from 451f:liveusb-creator/feature/jessie_launcher_1 to 451f:liveusb-creator/feature/jessie_launcher_2

branch was cleaned from unrelated commits, but that is already tracked by another ticket anyway.

#20 Updated by intrigeri 2015-07-04 03:11:25

  • Assignee deleted (intrigeri)
  • % Done changed from 70 to 80
  • QA Check changed from Ready for QA to Dev Needed

See review on Feature #9380.

#21 Updated by intrigeri 2015-07-04 08:22:16

  • Status changed from In Progress to Resolved
  • Assignee deleted ()
  • % Done changed from 80 to 100
  • QA Check changed from Dev Needed to Pass

Merged into feature/jessie :)