From Fedora Project Wiki

< Anaconda

Revision as of 20:48, 14 February 2012 by Duffy (talk | contribs)

Storage

Requirements

Bootstrapping the OS

  • You must have a place we can install a bootloader to, or you need to manually modify a proprietary bootloader to point to your install. Meet this requirement via any of the following:
    • Disk MBR x86/BIOS
    • PReP partition of ppc64
    • EFI system partition on EFI
    • Load Linux into your non-GRUB bootloader post-install: Windows Vista, Windows 7

Mountpoints

  • You must have a boot partition. (min size? max size?)
  • You must have a root (/) partition.
    • It must be at least 250 megabytes.
    • If you are doing a live install:
      • The minimum space requirement may be > 250MB. It must be at least the same size as the live image itself (~600MB typically?)
      • The filesystem must be the same as the live image's. (A known limitation being worked on.)
  • You don't need a swap device, but we recommend it to improve performance. (Recommended size?)
  • Swap devices should have a UUID. Older ones may not. If they don't, reformatting them will give them one.
  • The swap device(s) must be intitialized. (What does this mean?)
  • You may not create a separate mountpoint for any of the following; they must reside in /:
    • /bin
    • /dev
    • /sbin
    • /etc
    • /lib
    • /root
    • /mnt
    • /usr (is this for real? it seems some thinking around systemd / /usr move changes concludes this means /usr must be under /, some other folks think it makes /usr more split-upabble --Duffy 19:11, 14 February 2012 (UTC))
    • lost+found'
  • You may create separate mountpoints for:
    • /home
    • /var
    • /srv
    • /opt
  • Any new mountpoints you create must not already have regular files at the same paths on a device. Otherwise creating the mountpoint will fail because the 'file' already exists.
  • If you have a bind-mounted fs or a swap file we can't access, we'll ignore it.

Filesystems

  • Different filesystems have minimum and maximum size requirements; you must meet these requirements for the filesystems you use (here in the code: git anaconda):
Filesystem Minimum Space Maximum Space
ext2 0 8 * 1024 * 1024 = 8388608 (~8 TB? What blocksize? 2 KB?)
ext3 0 8 * 1024 * 1024 = 8388608 (~8 TB? What blocksize? 2 KB?)
ext4 0 (guess) 1 exbibyte (1 EiB) (from wikipedia)
btrfs 256 16 * 1024 * 1024 = 16777216 (~16 TB? wikipedia says 16 EiB)
lvm pv
hfs+ 1 2 * 1024 * 1024
FAT (vfat) 50 1024 * 1024
NTFS 1 16 * 1024 * 1024
GFS2 ? ?
ReiserFS ? 16 * 1024 * 1024
XFS ? 16 * 1024 * 1024
JFS ? 8 * 1024 * 1024
EFIFS(FATFS) 50 ?
swap ? ?
AppleBootstrapFS(HFS) 800.00 / 1024.00 1
  • The following mountpoints/filesystems must be on a linux fs:
    • /
    • /var
    • /tmp
    • /usr
    • /home
    • /usr/share
    • /usr/lib

Devices

  • You can install to removable media, but it only makes sense to do so if every part of the OS is on that same piece of removable media.
    • (We should maybe explicitly forbid mixed installs here? --Duffy 18:50, 14 February 2012 (UTC))
  • All disks you want to be selectable for installation need to be connected to the system by the time you get to the storage screen.
  • Your disks should be healthy.

For dual/multi-OS booters and upgraders

  • If you are going to be deleting at least one and keeping at least one pre-existing OS, you'll need to do some research before you enter anaconda so you can identify the partitions / disks you need to format without removing OSes you want to keep around.
  • Do not run anaconda with any of your other OSes in a hibernated or suspended state. (Don't move disks with hibernated OSes to another system, and don't boot off of USB or CDROM when your hard drive has a hibernated OS)
  • Any filesystems you'd like to keep around must have been unmounted cleanly before starting anaconda.
  • Your /etc/fstab must be sane / clean and not have syntax errors.
  • If your swap device / file is for a really old Linux, make sure to exclude it from the install, otherwise it will be reformated new-style.
  • If you don't have a swap device on a system you are upgrading, you need to create one. (But I thought it wasn't required? --Duffy 19:33, 14 February 2012 (UTC))

Errors & Discussion

General

(pulled from pot file)

"%s requires %s MB of memory to install, but you only have %s MB on this ""machine.\n"

"The %s graphical installer requires %s MB of memory, but you only have %s MB."

msgid "Not enough RAM"

" Try the text mode installer by running:\n" "\n""'/usr/bin/liveinst -T'\n""\n" " from a root terminal."

msgid "Would you like to use VNC?"

"Text mode provides a limited set of installation options. It does not allow " "you to specify your own partitioning layout or package selections. Would you ""like to use VNC mode instead?"

msgid "Graphical installation is not available. Starting text mode."

msgid "DISPLAY variable not set. Starting text mode."

backend.py

msgid "%s Upgrading %s\n"

msgid "%s Installing %s\n"

bootloader.py

msgid "/boot filesystem"

"RAID sets that contain '%s' must have one of the following raid levels: %s."

"RAID sets that contain '%s' must have one of the following metadata versions: %s."

"RAID sets that contain '%s' must have one of the following device types: %s."

msgid "%s must have one of the following disklabel types: %s."

msgid "%s cannot be of type %s."

msgid "%s must be between %d and %d MB in size"

msgid "%s must not be smaller than %dMB."

msgid "%s must not be larger than %dMB."

msgid "%s must be within the first %dMB of the disk."

msgid "%s cannot be on an encrypted block device."

msgid "%s cannot be of type %s"

"Your BIOS-based system needs a special partition to boot with Fedora's new disk label format (GPT). To continue, please create a 1MB 'BIOS Boot' type partition."

msgid "Installing bootloader."

"No kernel packages were installed on the system. Bootloader configuration will not be changed."

"There was an error installing the bootloader. The system may not be bootable."

cmdline.py

"Command line mode requires all choices to be specified in a kickstart configuration file."

"The following error was found while parsing the kickstart configuration "

msgid "Can't have a question in command line mode!"

msgid "In interactive step can't continue. (%s)"

constants.py

"An unhandled exception has occurred. This is most likely a bug. Please save a copy of the detailed exception and file a bug report with the provider of this software. msgid " against anaconda at %s"

gui.py

msgid "An error occurred saving screenshots to disk."

msgid "Screenshots Copied"

"The screenshots have been saved in the directory: /root/anaconda-screenshots You can access these when you reboot and login as root."

msgid "Saving Screenshot"

msgid "A screenshot named '%s' has been saved."

msgid "Error Saving Screenshot"

"An error occurred while saving the screenshot. If this occurred during package installation, you may need to try several times for it to succeed."

msgid "Scanning access points for wireless devices"

msgid "Waiting for NetworkManager"

msgid "Waiting for NetworkManager to activate these devices: %s"

msgid "Failed to activate these network interfaces: %s"

msgid "An error occurred trying to bring up the %s network interface."'

msgid "Error Enabling Network"

msgid "Error Setting Up Repository"

text.py

"Choose a passphrase for the encrypted devices. You will be prompted for this passphrase during system boot."

msgid "Error with passphrase"

msgid "The passphrases you entered were different. Please try again."

msgid "The passphrase must be at least eight characters long."

"Device %s is encrypted. In order to access the device's contents during installation you must enter the device's passphrase below."


Storage

Possible Sanity-Check error conditions: (Pulled from storage init.py in git )

"You have not defined a root partition (/), "which is required for installation of %s to continue.") % (productName,)

  • We shouldn't let them get far enough to ever get this as an error message.... don't let them click next if no root partition is defined, right?
    • well, this is the thing telling them we're refusing to go forward because there's no root. or do you mean we shouldn't even make the button active?
    • I think we should do two things:
      • Don't even make the button active if there is no root
      • "you're not ready to proceed yet. click here to see why." ?
      • maybe use the little area to the left of the button to have a short explanation
      • Can we pre-fill in a root, and don't let them delete it?
        • this can be difficult or even impossible.
        • doesn't autopart add this in already? you would just have to make the delete button grey out if the '/' item is focused? (add the control in the UI layer only)
        • preventing stupid mistakes in custom partitioning is very difficult. autopart is much nicer that way.

"Your root partition is less than 250 "megabytes which is usually too small to install %s.") % (productName,))

  • If they set the mount point to '/' then something should light up to indicate 250 or less. This should probably be defined by some global variable somewhere no? Then we could use that on the HW requirements on the website and media sleeves.

"Your / partition is less than %(min)s MB which is lower than recommended for a normal %(productName)s%(live)s install.") % {'min': self.anaconda.backend.getMinimumSizeMB("/"), 'productName': productName, 'live': live})

  • This looks like it happens for live install.... I wonder when exactly it pops up. It seems silly in a live environment to offer to install when there's no way you can.... does live media give you the option to choose the disk to install to?
    • live media offers the full partitioning UI. this happens when they configure a root device that is smaller than the live image
    • so this seems like another case where maybe we could somehow prefill in the capacity field with the minimum to avoid the error condition

"Your / partition does not match the the live image you are installing from. It must be formatted as %s.") % (self.liveImage.format.type,))

  • I don't get this one. The liveimage uses... ext4 and your filesystem is different? Wouldn't the install process format the disk and set up the filesystem?
  • as of now for live install the root filesystem must match the live root fs type. we're working on removing this limitation
  • Okay so you can only do a live install if you already have the same fs on the disk you're trying to install to.

'"Your %(mount)s partition is less than %(size)s megabytes which is lower than recommended for a normal %(productName)s install.") % {'mount': mount, 'size': 'productName': productName})

  • Maybe the solution here is to have them choose a mount point first, and then pre-fill in the capacity widget as required to meet minimum requirements
  • then what if they go back and edit the mountpoint or the size?
  • you block them from adding a value < than the minimum

for (mount, device) in filesystems.items(): if problem < 0: "Your %(mount)s partition is too small for %(format)s formatting (allowable size is %(minSize)d MB to %(maxSize)d MB)")  % {"mount": mount, "format": device.format.name, "minSize": device.minSize, "maxSize": device.maxSize})

  • What does it mean by formatting? What are values for $format ?
  • could ext4, lvm pv, btrfs, swap among others
  • so we are talking really small here? what's the min requirements for these filesystems? < 1 mb?

elif problem > 0: "Your %(mount)s partition is too large for %(format)s formatting (allowable size is %(minSize)d MB to %(maxSize)d MB)") {"mount":mount, "format": device.format.name, "minSize": device.minSize, "maxSize": device.maxSize})

  • This refers to putting a filesystem on an area of storage larger than the filesystem supports? (Is that right?)
  • correct
  • what are the limits for each?

"Installing on a USB/Firewire device. This may or may not produce a working system."

  • Why the caution here? Does this show up if every mount point is on a removable device or if one of the mount points is? (the latter I think is an error condition, the former probably not?)
  • any
  • is it still that unreliable on usb/firewire? (if the entire install is exclusive to the usb/firewire device?)
  • I guess it depends on the ability to boot from such a device. Also, if there's a mixture of removable and non-removable media, that's asking for trouble IMO.

"you have not created a bootloader stage1 target device"

  • Does this mean you don't have a /boot?
  • no. it's a crappy way of saying your bootloader configuration doesn't make sense. examples of a stage1 device are the MBR of a disk on x86/BIOS, a PReP partition on ppc64, or the EFI system partition on EFI. this is saying that for one reason or another, we have nowhere we can install the bootloader

"You have not created a bootable partition."

  • What's the difference between this and the one above?
  • this refers to the stage2 device, which is the device containing /boot (if present) or /

"You have not specified a swap partition. %(requiredMem)s MB of memory is required to continue installation without a swap partition, but you only have %(installedMem)s MB."  % {"requiredMem": int(required.convertTo(spec="MB")), "installedMem": int(installed.convertTo(spec="MB"))}) "You have not specified a swap partition. Although not strictly required in all cases, it will significantly improve performance for most installations."

  • This is kind of a recommendation and not really an error
  • I'd say we just take it out and make sure it's clear in the installation guide, but no one reads documentation.

"At least one of your swap devices does not have a UUID, which is common in swap space created using older versions of mkswap. These devices will be referred to by device path in /etc/fstab, which is not ideal since device paths can change under a variety of circumstances. "

  • Is there anything at all you can do about this, or is this just informational? (If it's just informational, it may be worth pointing out later.)
  • the only way to get a UUID on the device is to reformat it, which should probably be an okay thing to do
  • Maybe we should just go ahead and reformat it in these cases; there shouldn't be anything in swap that needs to be preserved?

"This mount point is invalid. The %s directory must be on the / file system.") % mountpoint)

  • hrm, how do you run into this?? if you move... /etc?
  • if you try to create a separate filesystem/mountpoint for any of '/bin','/dev','/sbin','/etc','/lib','/root', '/mnt', 'lost+found'
    • oh i didn't know those had to be on '/'... everything else can be separate? /var, /home, /usr?
    • apparently not /usr, but generally yes
    • systemd hasn't ever supported a separate /usr, and Fedora in general doesn't like it. With the new /usr move stuff, /bin, /sbin, and /lib (at least) are all now a part of /usr. So this check is probably going to have to change.

"The mount point %s must be on a linux file system.") % mountpoint)

  • so this happens if you, say, try to put your /home on a fat32 partition?? is there a way to do that without reformatting the partition?
  • the following mountpoints/filesystems must be on a linux fs: '/', '/var', '/tmp', '/usr', '/home', '/usr/share', '/usr/lib'
  • it is possible to set a mountpoint for a preexisting filesystem, including non-linux types (as of f17, anyway)

Other error conditions (these occur much earlier on in the install process)

"No Drives Found An error has occurred - no valid devices were found on which to create new file systems. Please check your hardware for the cause of this problem."

  • We shouldn't let you in the installer if we can't find a disk, right? This should pop up early on. If a cable gets jiggled or a usb key plugged out (if you're installing to the USB key) after it passes this check, then maybe this should be a check cable kind of error. Can we detect when devices are disconnected in the installer and pop up an alert as soon as we detect a disconnect? The closer to the disconnect event we alert about it, I think the easier the user is going to be able to recover from it (oh i just kicked the cable under my desk, whoops / clear cause and effect)
  • this is very early on
  • if a disk has disappeared just before we want to allocate partitions we just log it and remove the disk from our lists

"Storage.writeKS not completely implemented - The following is the partition information you requested. Note that any partitions you deleted are not expressed here so unless you clear all partitions first, this is not guaranteed to work"

  • This I'm confused about, need more context
  • We write this at the top of the partitioning section of anaconda-ks.cfg. Basically it just tells the user that we don't know how to write out kickstart commands to delete existing partitions (well, except for deleting all partitions) so some manual editing may be required. We will need to know how to clear out existing partitions for the new kickstart-based UI, so this might go away.

"Dirty File Systems - The following file systems for your Linux system were not unmounted cleanly. Please boot your Linux installation, let the file systems be checked and shut down cleanly to upgrade.

  • When does this pop up? It should probably pop up at the very beginning of the installer UI / first screen. However, if preupgrade is the only way to upgrade, it seems like this error message would only be necessary for... kickstart upgrade? Would kickstart upgrade be a supported path?

"Dirty File Systems - The following file systems for your Linux system were not unmounted cleanly. Would you like to mount them anyway?"

  • This error messgae is a little scary because it doesn't tell you what the negative consequences would be. What happens worst-case scenario if I go ahead and mount them?

"There is an entry in your /etc/fstab file that contains an invalid or incorrect filesystem type:" "Error - fstab entry %s is malformed: %s" % (devspec, e)) 2109 buttons = [_("Skip"), _("Format"), _("_Exit")]

  • Is there a way to let them edit it and fix it by hand or is this a situation where they need to quit, fix it, and come back?

"cannot determine which device contains directory %s" % device.path)

  • Need more context, not sure what this is about
  • This is a log message that get printed in two circumstances: either you have a swap file, or you have a bind-mounted filesystem. In either case, we'll print this out if we can't find the partition the file's on or the filesystem that's the origin of the bind mount. There shouldn't be any user-visible consequences here.

"The swap device: %s is an old-style Linux swap partition. If you want to use this device for swap space, you must reformat as a new-style Linux swappartition.") % device.path

  • For this one, I don't see why we don't just format it new-style and don't bother the user about it
  • There is the possibility that the user still runs whatever old linux can only use the old-style swap and we'll be breaking his/her other system. Slight possibility at best.

The swap device: %s in your /etc/fstab file is currently in use as a software suspend device, which means your system is hibernating. To perform an upgrade, please shut down your system rather than hibernating it."

  • This should appear as early as possible, no later than the first screen of the installer.

"The swap device: %s in your /etc/fstab file is currently in use as a software suspend device, which means your system is hibernating. If you are performing a new install, make sure the installer is set to format all swap devices."

  • Format all swap devices might nuke other OSes though...

"The swap device: %s does not contain a supported swap volume. In order to continue installation, you will need to format the device or skip it." % device.path

  • What is a swap volume?
  • This seems like a 'just format it and leave me alone' scenario, again

"Error enabling swap device %(name)s: %(msg)s The /etc/fstab on your upgrade partition does not reference a valid swap device.\n\nPress OK to exit the installer") % {'name': name, 'msg': msg}

  • This seems to give you no option but to quit the installer... is that fair?
  • Can't it just make me a swap?
  • what if we make a swap on the partition containing your family photos?
  • well that would be bad, but maybe there's free & unpartitioned space somewhere?
  • we currently do not modify disk layout during upgrades, but this is technically possible

"Error enabling swap device %(name)s: %(msg)s This most likely means this swap device has not been initialized. Press OK to exit the installer."

  • Doesn't it seem drastic to boot me out? It's not OK :)
  • Why can't it initialize the swap device?
  • I don't think this is technically possible with current code, but the thing to do would be to offer to initialize it.

"Invalid mount point An error occurred when trying to create %s. Some element of this path is not a directory. This is a fatal error and the install cannot continue. Press <Enter> to exit the installer.")% (device.format.mountpoint,))

  • What path are they referring to? Where the install files are getting downloaded from?
  • this is a slightly more specialized case of the following error. in this case some portion of the path already exists but is not a directory, like if there were a regular file named /var/www and you were trying to create the mountpoint /var/www/html/

"Invalid mount point An error occurred when trying to create %(mountpoint)s: %(msg)s. This is a fatal error and the install cannot continue. Press <Enter> to exit the installer.") % na)

  • This seems really bad, how do you get in this situation?
  • you probably don't. I can't imagine how this might happen. selinux?

"SystemError: (%d) %s" % (num, msg) "Unable to mount filesystem An error occurred mounting device %(path)s as %(mountpoint)s. You may continue installation, but there may be problems.") % na, custom_buttons=[_("_Exit installer")("_Continue")])

  • This seems really bad, how do you get in this situation?
  • could be anything. broken preexisting filesystem, device not accessible for some reason

"FSError: %s" % msg) "Unable to mount filesystem An error occurred mounting device %(path)s as %(mountpoint)s: %(msg)s. This is a fatal error and the install cannot continue. Press <Enter> to exit the installer.") % na)

  • Again, ouch
  • more or less the same as the above/previous error