Startup Disk Creator redesign & renaming proposal

Registered by Thibaut Brandscheid

The Startup Disk Creator (SDC) in it's current form has a suboptimal work flow, displays to many unimportant information to the user and requires to many steps to actually create a startup USB stick. The SDC is kind of a semi public face of Ubuntu and an important tool to spread it, therefore it should be as strait forward and simple to use as possible.

This proposal is about redesigning the SDC, with a strong focus on Ubuntu and simplicity.
In the end all the user should have to do is to insert a USB drive, select an image – if there is none it should be downloadable easily – and press start.

Details (mock-ups) can be found on the wiki page.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Approved
Assignee:
None
Definition:
New
Series goal:
Accepted for trusty
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

[bryanquigley]
It doesn't look promising to move unetbootin to main for trusty. To many outstanding issues.

[nio]
A short information about debugging of usb-creator-gtk being done right now:

https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/915626

I found that it works well (with the package from saucy-proposed) to create a persistent live USB drive. But 'erase disk' does not work.
[nio]

[Shubham 2013.11.25]
Grub 2 can also be used. We can have an eye candy boot menu whicjph will be good for new users. Its relatively less buggy (or I haven't encountered any).
For a reference, we can use openSUSE's grub2 live USB theme.
[/Shubham]

[Thibaut - 2013.11.24]
Updated the wiki page → re-wrote most of the stuff, the user workflow + new mock-ups

Please write your comments - if any - directly under the different categories prefixed with your name (after the corresponding content).
[/Thibaut]

[start Nio (sudodus alias nio-wiklund at launchpad)] I could not participate in the first meeting, but I just played the video, and I'm glad that the project is making progress. I think it will be possible to make a good system based on Unetbootin, particularly since you want

1. the option of persistence and
2. to combine the boot function with storage and
3. have 'the same system' in Windows.

I still think that wrapping wget and dd in a simple user interface would be much easier to make and at least as reliable (high rate of success), but these three extra points make Unetbootin a better choice, if there will be enough manpower to run the project including debugging. The quality must be much higher than the present SDC.

My shell script 'mkusb' is a wrapper for dd, but does not yet include wget. In my other 'product', the One Button Installer, I have built in wget into a dialog based menu system. So there are already bits and pieces to make a more attractive system wrapping wget and dd. See

http://ubuntuforums.org/showthread.php?t=1958073
https://wiki.ubuntu.com/phillw/OBI

And I am willing to help discussing the design as well as testing the system.
-----
About the current SDC:

I have checked it out as a user and as a tester (iso testing Lubuntu including live sessions). But I have not looked at the code.

I can use the SDC after some improvements made during Raring, even to create persistence.

See this link

https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/1165200/

But the many bugs resulting in segfault and other problems will make it impossible for beginners.

I think someone who has experience with python must look at the code and decide, if it is a mess or possible to get an overview and start debugging.

About Unetbootin:

I think it will easier to make a good product from Unetbootin. I prefer that program. There has been a disadvantage, but I think this project can eliminate it:

Unetbootin is sometimes slow to offer a version that works with the newest Ubuntu.

(Cloning with dd does not suffer from that, and a simple wrapper should be OK too.)
[end Nio]

See about getting p7zip-full in main (dependency of UNetBootin) - https://bugs.launchpad.net/ubuntu/+source/p7zip/+bug/1254798

Spec:
https://wiki.ubuntu.com/ubuntu-usb-startup-creator

-----------------
From Nio

I'm using and recommending 'mkusb' to clone or flash iso files (and
compressed img files) as a reliable and fast alternative to the Startup
Disk Creator, when persistence is not interesting. See my tutorial at
this link
http://ubuntuforums.org/showthread.php?t=1958073

./mkusb
Usage:
---- Make a USB install device from 'file.iso' -------
sudo ./mkusb file.iso
---- Make a USB install device from 'file.img.gz' ----
sudo ./mkusb file.img.gz
---- Make a USB install device from 'file.img.xz' ----
sudo ./mkusb file.img.xz
---- Wipe the USB device (may take long time) --------
sudo ./mkusb wipe-all
---- Wipe the first megabyte (MibiByte) --------------
sudo ./mkusb wipe-1
---- Version -----------------------------------------
./mkusb -v

-o-
*I suggest that cloning can be one alternative* in the new Startup Disk
Creator. It takes advantage of the hybrid properties of the Ubuntu
flavour iso files, even the mini iso since 13.04. And I volunteer to
participate in the development, so if you think I can contribute, let me
know and get the necessary software for it. It would be nice to make a
Startup Disk Creator withgood performance and a nice GUI, 'noob-proof'

'mkusb' is a bash shell-script with a crude interface. I think the
performance is good, but can certainly be improved.

-o-

An example of a short instruction from

OBI-quick-start-manual.pdf athttps://ubuntuone.com/42AIgmpo9lsz7YNfXKCROV

e.1 Check download and clone image in Linux

1. Change directory to where you have the downloaded files.

2. Check that the download was successful with md5sum
md5sum dd_blank-obi_4GB_11.img.gz
...
md5sum mkusb

3. Use mkusb to install the One Button Installer

This helps you find the correct target drive and avoid the risk with dd.

Make mkusb executable
sudo chmod ugo+x mkusb

./mkusb dd_blank-obi_4GB.img.gz
Usage:
sudo ./mkusb dd_blank-obi_4GB.img.gz
sudo ./mkusb dd_blank-obi_4GB.img.gz # copy and paste this command

The current version of mkusb uses a simple text based interface to help
you select the correct target device. mkusb can monitor the data
transfer with pv, and suggests that you install it, if not yet
installed. pv shows Mibibytes and dd shows Megabytes.

3,72GB 0:00:33 [ 113MB/s] [======================================>] 100%
976384+0 poster in
976384+0 poster ut
3999268864 byte (4,0 GB) kopierade, 34,4289 s, 116 MB/s
-----

I'll try some other alternatives, for example edit the wiki page linked
to the pad. But I can't do it now, the children cry for food. And I look
forward to ideas and discussions about what the creator should do and
how it should look ...

--------------------------------

Comment:
The first mockup has you go change settings to get to an iso image. Is there any way that instead of instructing the user how to use the program (go to preferences ...) we can just put a button to browse?
- Will this make the design complicated?
  - I think it will be weighing the complication of another button for the use case of browsing for an image once vs selecting a directory so that next time the image will show up
    - But then again, if you are a new user, you will be using this program just once

Notes:

Can we use unetbootin?

    For the most part, we liked the capabilities of unetbootin, but too much info is presented

    how does it work out technically?

    can we show just ubuntu and flavors?

    yes

    can we hide advanced options?

    unsure

Spec comments
new code, don't use existing codebase
utilize unetbootin potentially

Needs to be VERY easy for the user
Plug in drive, select image, press go :-)

features:
MUST work with UEFI
persistence is important
encrypted persistence would be nice
ubuntu images and flavors important; do we need to support other images?

    only show ubuntu and flavors

    allow for an arbitrary iso

    if unetbootin is used we could use the distro image list

approaches:

dd-like wrapper approach:
no persistence support, direct copy means usb stick can only be used for installing ubuntu

unetbootin/pendrive linux
cross-platform
existing codebase
we already recommend pendrive linux

fix sdc:
can use the qt4 version, also written in python 3
longstanding bugs might be longstanding for a reason
gtk port should likely be deprecated :-)

automate/frontend for grub + loopback iso mount install.

Workflow:
mockup shows nice workflow
we want to support one button workflow
* plug in stick
* select image from list / download image
    - checkbox: make persistent stick?
* push make disk

[nio]

-------- Ursprungligt meddelande --------
Ämne: [Bug 915626] Re: usb-creator-gtk crashed with SIGSEGV in _dbus_watch_invalidate
Datum: Mon, 02 Dec 2013 01:20:27 -0000
Från: Chris Wulff <email address hidden>
Svar till: Bug 915626 <email address hidden>
Till: <email address hidden>

It looks to me like this is a failure due to not initializing multi-
threading in dbus. Two threads appear to be closing the connection at
once and thus the second thread crashes since there is no locking. The
attached patch appears to fix the problem for me at least.

** Patch added: "fix_dbus_crash.patch"
   https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/915626/+attachment/3921007/+files/fix_dbus_crash.patch

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/915626
[/nio]

(?)

Work Items

Work items:
[bryanquigley] ask upstream unetbootin about supporting efforts for goals in startup disk creator: DONE
unetbootin to main: POSTPONED
[thibaut] design work: TODO
[nuclearbob] checkout sdc; how much work to fix it?: TODO
[nskaggs] coordinate followup from unetbootin and sdc from bryan and max: INPROGRESS
[nskaggs] inform nio about plans: DONE

Dependency tree

* Blueprints in grey have been implemented.