From Fedora Project Wiki

< Anaconda

Revision as of 21:15, 14 February 2012 by Duffy (talk | contribs) (→‎General)

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"

"The following error occurred while setting up the installation repository: Please provide the correct information for installing %(productName)s."

"You do not have an active network connection. This is required by some exception saving methods. Would you like to configure your network now?"

msgid "No Network Available"

msgid "Remote exception saving methods will not work."

msgid "Error Parsing Kickstart Config"

"An error occurred when attempting to load an installer interface component.\n"

msgid "The system will now reboot."

msgid "Exiting"

msgid "Are you sure you wish to exit the installer?"

msgid "Unable to load title bar"

image.py =

"The ISO image %s has a size which is not a multiple of 2048 bytes. This may mean it was corrupted on transfer to this computer. It is recommended that you exit and abort your installation, but you can choose to continue if you think this is in error."

msgid "Couldn't Mount ISO Source"

"An error occurred mounting the source device %s. This may happen if your ISO images are located on an advanced storage device like LVM or RAID, or if there was a problem mounting a partition. Click exit to abort the installation."

msgid "Missing ISO 9660 Image"

"The installer has tried to mount the installation image, but cannot find it on the hard drive. Please copy this image to the drive and click Retry. Click Exit to abort the installation."

"An error occurred unmounting the disc. Please make sure you're not accessing %s from the shell on tty2 and then click OK to retry."

"The following error occurred while setting up the installation repository: %(e) Installation can not continue."

installinterfacebase.py

"Disk %(unusedRaidMems)s contains BIOS RAID metadata, but is not part of any recognized BIOS RAID sets. Ignoring disk %(unusedRaidMems)s."

  • error message has a plural version too

"Error processing LVM. There is inconsistent LVM data on %(msg)s. You can reinitialize all related PVs (%(pvs)s) which will erase the LVM metadata, or ignore which will preserve the contents. This action may also be applied to all other PVs with inconsistent metadata."

msgid "Unformatted DASD Device Found"

"Format uninitialized DASD device?\n There is %d uninitialized DASD device on this system. To continue installation, the device must be formatted. Formatting will remove any data on this device."

  • error message has a plural version too

"The installation was stopped due to what seems to be a problem with your hardware. The exact error message is: %s. The installer will now terminate."

msgid "Hardware Error Encountered"

iutil.py

msgid "Error determining boot device's disk name"

"After shutdown, please perform a manual IPL from %s to continue installation."

  • what is a manual IPL? --Duffy 21:15, 14 February 2012 (UTC)
    • Initial Program Load (s390 related / also iSeries term, slightly harder than soft reset)

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."

kickstart.py

msgid "Scriptlet Failure"

"Escrow certificate with url %s requires network to be enabled in loader or configured in kickstart file."

"The following error was encountered while downloading the escrow " "certificate: %s"

msgid "Could not log into any iSCSI nodes at the portal."

msgid "Running post-installation scripts"

msgid "Running pre-installation scripts"

msgid "Missing Package You have specified that the package '%s' should be installed. This package does not exist. Would you like to continue or abort this installation?"

msgid "Missing Group You have specified that the group '%s' should be installed. This group does not exist. Would you like to continue or abort this installation?"

"The kickstart configuration file is missing required information that anaconda cannot prompt for. Please add the following sections and try again: %s"

livecd.py

msgid "Unable to find image "The given location isn't a valid %s live CD to use as an installation source."

msgid "Copying live image to hard drive."

"There was an error installing the live image to your hard drive. This could be due to bad media. Please verify your installation media. If you exit, your system will be left in an inconsistent state that will require reinstallation."

"Performing post-installation filesystem changes. This may take several minutes."

network.py

msgid "Hostname must be 255 or fewer characters in length."

"Hostname must start with a valid character in the ranges 'a-z', 'A-Z', or '0-9'"

"Hostnames can only contain the characters 'a-z', 'A-Z', '0-9', '-', or '.'"

msgid "IP address is missing."

"IPv4 addresses must contain four numbers between 0 and 255, separated by periods."

msgid "'%s' is not a valid IPv6 address."

msgid "'%s' is an invalid IP address."

packages.py

"Filesystems have already been activated. You cannot go back past this point. "Would you like to continue with the installation?"

msgid "Resizing Failed msgid "There was an error encountered while resizing the device %s."

Migration Failed msgid "An error was encountered while migrating filesystem on device %s."

"Warning! This is pre-release software! Thank you for downloading this pre-release of %(productName)s. This is not a final release and is not intended for use on production systems. The purpose of this release is to collect feedback from testers, and it is not suitable for day to day usage. To report feedback, please visit: %(bugzillaUrl) and file a report against '%(fileagainst)s'.\n"

msgid "Your system will now be rebooted..."

msgid "Warning! This is pre-release software!"

partIntfHelpers.py

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