Как Повсеместность определяет необходимое дисковое пространство перед установкой?

Этот вопрос намеревается демистифицировать Повсеместность настольный установщик для Ubuntu, о том, как необходимое дисковое пространство перед установкой определяется.

Из этого датированного сообщения, Определяющего размер раздела при использовании Установщика Ubuntu:

[При установке] Ubuntu 12.04 рядом с Windows 7 с помощью установщика Ubuntu, [пользователь] не смог дать Ubuntu меньше чем 32 ГБ [...] и поскольку руководство заявляет, "Для Ubuntu нужны приблизительно 4,5 ГБ для установки, поэтому добавьте некоторых дополнительный ГБ для обеспечения файлов".

Необходимое дисковое пространство было ранее приблизительно 5 ГБ (Ubuntu 12.04), 8 ГБ (Ubuntu 16.04), и с тех пор увеличилось до 25 ГБ (Ubuntu 18.04) согласно минимальным системным требованиям. На практике абсолютный минимум для необходимого дискового пространства может отличаться установочным носителем и машиной.

Спецификация дизайна через Повсеместность на Ubuntu, Wiki описывает макет установщика и ничто иное о том, как необходимое дисковое пространство определяется (снимок экрана верхней половины).

Ubiquity design spec and using in practice

Я разъяснил, что Ubuntu 16.04 потребует дискового пространства по крайней мере на 8 ГБ только на реальной машине, но минимальных изменениях в 8,3 ГБ при установке на виртуальной машине (снимок экрана нижней половины).

Таким образом, как Повсеместность определяет необходимое дисковое пространство?

1
задан 25 April 2019 в 07:39

1 ответ

Для определения необходимого дискового пространства Повсеместность умножится два суммой байтов, найденных в filesystem.size файле. В зависимости от установки машины Повсеместность не может показать фактическое необходимое дисковое пространство. Полное объяснение следующим образом.

Встроенная логика

Изучите точный пакет повсеместности. Просмотрите файл в usr/lib/ubiquity/ubiquity/misc.py и найдите функцию install_size() следующим образом.

def install_size():
    if min_install_size:
        return min_install_size

    # Fallback size to 5 GB
    size = 5 * 1024 * 1024 * 1024

    # Maximal size to 8 GB
    max_size = 8 * 1024 * 1024 * 1024

    try:
        with open('/cdrom/casper/filesystem.size') as fp:
            size = int(fp.readline())
    except IOError:
        pass

    # TODO substitute into the template for the state box.
    min_disk_size = size * 2  # fudge factor

    # Set minimum size to 8GB if current minimum size is larger
    # than 8GB and we still have an extra 20% of free space
    if min_disk_size > max_size and size * 1.2 < max_size:
        min_disk_size = max_size

    return min_disk_size

min_install_size = None

min_install_size кажется не важным и бесполезным в это время открытия.

Оператор попытки попытается считать сумму байтов, найденных в /cdrom/casper/filesystem.size, затем сохраните значение как целое число в переменной size, который затем будет умножен на два, затем сохраните в другой переменной min_disk_size. Наконец, функция возвратит значение min_disk_size.

На основе встроенной логики необходимое дисковое пространство является обычно дважды суммой байтов, найденных в filesystem.size файле.

Некоторое разъяснение

Необходимое дисковое пространство было ранее приблизительно 5 ГБ (Ubuntu 12.04), 8 ГБ (Ubuntu 16.04), и с тех пор увеличилось до 25 ГБ (Ubuntu 18.04) согласно минимальным системным требованиям. На практике абсолютный минимум для необходимого дискового пространства может отличаться установочным носителем и машиной.

Необходимое дисковое пространство для Ubuntu 18.04 завышено. Если необходимое дисковое пространство будет дважды суммой filesystem.size, то для Ubuntu 18.04 будут на самом деле нужны только приблизительно 10 ГБ или меньше.

Я разъяснил, что Ubuntu 16.04 потребует дискового пространства по крайней мере на 8 ГБ только на реальной машине, но минимальных изменениях в 8,3 ГБ при установке на виртуальной машине (снимок экрана нижней половины).

Это или было отмечено неправильно или было принято за 16,04 выпусков других ароматов. На самом деле я не мог воспроизвести результат испытаний для наблюдения точно дискового пространства на 8 ГБ, требуемого на реальной машине. От моих недавних результатов испытаний необходимое дисковое пространство для Ubuntu 16.04 составляет 8,3 ГБ, независимо от реальной машины или виртуальной машины.

В следующей комбинации снимка экрана сумму необходимого дискового пространства показывают для Ubuntu 16.04, 32-разрядной (верхняя половина) и Ubuntu 18.04, 64-разрядная при выполнении в виртуальной машине.

Ubiquity is showing the required disk space for Ubuntu 16.04 and Ubuntu 18.04

Пользовательский опыт может варьироваться, из-за точных условий воспроизвести различные результаты действительно не поняты.

Некоторое вычисление

Известная информация релизов Ubuntu:

  • Ubuntu 16.04 filesystem.size: 4139667456
  • Размер установки Ubuntu 16.04 замечен: 8,3 ГБ (когда дисковое пространство является низким),
  • Ubuntu 18.04 filesystem.size: 4660985856
  • Размер установки Ubuntu 18.04 замечен: 8,6 ГБ (когда дисковое пространство является нулем),

Учитывая, что filesystem.size и количество дискового пространства, показанного установщиком, известны каждой системой, ручное сравнение может быть сделано определить, была ли каждая пара чисел счетом или нет.

# Use Python interactive shell to do manual calculation
# round(number,N) will return a floating point number in N digits

# The required disk space for Ubuntu 16.04 (xenial)
>>> size = 4139667456 # filesystem.size
>>> round((size*2)/1000/1000/1000.0,1)
8.3

# The required disk space for Ubuntu 18.04 (bionic)
>>> size = 4660985856 # filesystem.size
>>> round((size*2)/1000/1000/1000.0,1)
9.3

# The required disk space for fallback size
>>> size = 5*1024*1024*1024 # fallback size to 5 GB in ubiquity
>>> round((size*2)/1000/1000/1000.0,1)
10.7

# The required disk space for maximal size
# This is used "as it is" based on the built-in logic
>>> max_size = 8*1024*1024*1024 # maximal size to 8 GB in ubiquity
>>> round((max_size)/1000/1000/1000.0,1)
8.6

Для Ubuntu 18.04, предположительно, нужны 9,3 ГБ необходимого дискового пространства, но Повсеместность вместо этого показала 8,6 ГБ в снимке экрана; что пошло не так, как надо? Попробуйте редактирование копии и протестируйте следующие переменные и если оператор от функции install_size():

# Redo calculation according to the built-in logic
# The required disk space for Ubuntu 18.04 (bionic)

# Before
>>> size = 4660985856 # filesystem.size
>>> min_disk_size = size*2 # fudge factor in ubiquity
>>> max_size = 8*1024*1024*1024 # maximal size in ubiquity
>>> round((min_disk_size)/1000/1000/1000.0,1)
9.3
>>> round((max_size)/1000/1000/1000.0,1)
8.6

# After
>>> if min_disk_size > max_size and size * 1.2 < max_size:
...     min_disk_size = max_size
... 
>>> round(min_disk_size/1000/1000/1000.0,1)
8.6

Вот то, что пошло не так, как надо: если оператор выбрал max_size потому что min_disk_size поскольку Ubuntu 18.04, как находят, больше, чем максимальный размер.

Не уверенный, почему условие приняло, необходимое дисковое пространство (дважды filesystem.size) не будет больше, чем 8 гибибайт (8,6 ГБ), как определено в пакете повсеместности? Этот "неправильный" результат, кажется, предназначается дизайном согласно встроенному комментарию в рамках сценария.

На основе ручного сравнения обе пары чисел, как находят, являются счетом: Ubuntu 16.04 имела установщик, показывающий реальный размер установки, который является дважды суммой байтов, найденных в filesystem.size; Ubuntu 18.04 имела установщик, показывающий очевидный размер установки, который был определен как максимальный размер.

TL; DR необходимое дисковое пространство является дважды суммой filesystem.size, или дважды размером нейтрализации или иначе максимальным размером, как определено в пакете повсеместности.

1
ответ дан 7 December 2019 в 15:04

Другие вопросы по тегам:

Похожие вопросы: