Launchpad Entry: foundations-m-install-updates-when-installing
Packages affected: ubiquity
ubiquity will grow the ability to download updates while it copies files to the installation target.
Updates will now be downloaded while you install Ubuntu, making them immediately available to install upon first login. This will not occur on 3G connections, and users wishing to avoid this feature can disable it when the installation begins.
There may be a number of important updates available after installation. However, these could amount to a rather large download, and since we're mostly IO bound during the installation it would make sense to try to start this download then, letting the user finish downloading or start installing the updates once they've rebooted into the new system.
- Mark installs Ubuntu 9.10 in March of 2010. As roughly five months have passed since the release, there are nearly 100MB of updates to download.
- Bob installs Ubuntu 9.10 on a laptop with a 3G modem that he has configured in the live environment. As he pays per megabyte on his data plan, he does not want to download anything until he returns to an unrestricted connection.
- Luke lives in Australia. As using a non-local mirror would cost him a fortune, he needs to be certain that the installer chooses an appropriate one.
If the user has chosen to set up a 3G connection, they have done so using NetworkManager.
- We do not care about fragmentation of the filesystem, as we already do lots of writes at the same time.
If the "download updates" box is checked, ubiquity will wait 20 seconds or until copying begins, whichever is longer, and then tell apt to update the package index files, then start downloading any available updates. If the box is unchecked at any point, ubiquity will stop apt.
+---------------------------------------+ | Installing system | | [/////// 15% ] | | Detecting file systems... | | | | [X] Download available updates now | | from au.archive.ubuntu.com. | +---------------------------------------+
- We will not indicate progress, as this might lead the user to believe that they have to wait for the download to finish before they can reboot the computer.
The mirror will be explicitly listed to guard against the mirror detection code selecting a non-local mirror, causing the user to have a high bandwidth cost. GeoIP timezone selection will mitigate the potential for this to an extent, however as the use of it is not a dependency of this specification, we will guard against the problem with this explicit mentioning of the mirror address.
- This will need to be preseedable, to allow OEMs like Dell who want to keep the installer from attempting to access the Internet.
- The language pack download functionality that already exists will be merged into this feature, but the language pack installation will be a separate piece that occurs during installation.
If NetworkManager is present and a 3G connection is active or no network connection is present, the download updates option will be unchecked and greyed out.
AlexanderSack suggests using nm-tool for this. D-Bus interfaces are also available if we want to use them, but they're rather more complex.
- The download will not start until 20 seconds have passed or until copying begins, whichever is longer, to allow sufficient time to uncheck the box if this is not desired.
- The download will write package files to /target/var/cache/apt directly, rather than using an intermediary and then copying the files in at the end.
- The download will continue until it completes or the user quits ubiquity (either by selecting "continue using the live CD" or "reboot now", or if the installation crashes).
- The download will be stopped and resumed around calls to apt-install, or if that is inefficient, install_extras. For this event ubiquity will send SIGTERM to the apt process, wait for the process to terminate, run apt as it needs to, and then restart the download.
- When ubiquity quits, it will send SIGTERM to apt.
- If the download finishes before we are done installing, the download updates checkbox will be grayed out. This behavior will be run past the design team for a quick usability review.
- During development, the user agent will be changed so that we can track whether a large number of people are making use of this feature.
- We will also announce the feature with the milestone it is released for, to provide the community with adequate time to make suggestions for changes before the final release.