LINUX.ORG.RU

Леннарт Поттеринг представил mkosi, инструмент для генерации образов ОС

 


3

4

Следом за casync, Леннарт Поттеринг представил ещё один свой проект — mkosi (Make Operating System Image).

mkosi предназначен для генерации загрузочных образов операционных систем, представляющий собой обёртку над утилитами dnf --installroot, debootstrap, pacstrap и zypper.

Поддерживается создание образов на базе дистрибутивов Fedora, Debian, Ubuntu, Arch Linux, openSUSE. Созданный образ можно запустить из контейнера командой «systemd-nspawn -b -i image.raw».

mkosi позиционируется как legacy-free, т. е. программа поддерживает только актуальные на сегодняшний день технологии. Это означает поддержку только таблиц разделов GPT (и отсутсвие поддержки MBR), возможность генерации образов, основанных только на systemd, и генерацию только для загрузки на системах с поддержкой EFI (не MBR/BIOS).

Проект написан на языке python, распространяется под лицензией LGPL-2.1.

Репозиторий на github — https://github.com/systemd/mkosi.

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: JB (всего исправлений: 3)

программа поддерживает только актуальные на сегодняшний день технологии

генерацию только для загрузки на системах с поддержкой EFI

Выходит, что системы на C2D и подобные уже неактуальны? Кто-то зажрался.

anonymous
()

Уже начинаю бомбить

mittorn ★★★★★
()
Ответ на: комментарий от Weres

mkosi позиционируется как legacy-free, т. е. программа поддерживает только актуальные на сегодняшний день технологии. Это означает поддержку только таблиц разделов GPT (и отсутсвие поддержки MBR), возможность генерации образов, основанных только на systemd, и генерацию только для загрузки на системах с поддержкой EFI (не MBR/BIOS).

mittorn ★★★★★
()
Ответ на: комментарий от anonymous

only GPT disk labels (and no MBR disk labels) are supported, and only systemd based images may be generated. Moreover, for bootable images only EFI systems are supported (not plain MBR/BIOS).

Может плохо ангельский знаю, но в оригинале вот так и написано.

awesomelackware
() автор топика

Нужность, конечно, сомнительна, но этот проект по крайней мере безобидный.

if bytes >= 1024*1024*1024:
    return "{:0.1f}G".format(bytes / 1024**3)

1024*1024*1024

1024**3

Это специально, чтобы приостановиться секунд на 10 и подумать, почему написано один раз так, а другой так, мол раз так написали, значит зачем-то надо?

return loopdev + "p" + str(partno)

Расскажите ему про .format()

def luks_format_home(args, loopdev, run_build_script, cached):

    if args.encrypt is None:
        return
    if args.home_partno is None:
        return
    if run_build_script:
        return
    if cached:
        return

    with complete_step("LUKS formatting home partition"):
        luks_format(partition(loopdev, args.home_partno), args.passphrase)

def luks_format_srv(args, loopdev, run_build_script, cached):

    if args.encrypt is None:
        return
    if args.srv_partno is None:
        return
    if run_build_script:
        return
    if cached:
        return

    with complete_step("LUKS formatting server data partition"):
luks_format(partition(loopdev, args.srv_partno), args.passphrase)

А нельзя это «home» и home_partno просто как один из аргументов передавать было, смысл копипастить-то?

def strip_suffixes(path):
    t = path
    while True:
        if t.endswith(".xz"):
            t = t[:-3]
        elif t.endswith(".raw"):
            t = t[:-4]
        elif t.endswith(".tar"):
            t = t[:-4]
        else:
            break
    return t

Да уж… А если потом решит ещё 50 форматов поддерживать, тоже каждому по elif и t = [t:-4] напишет? В чём проблема такого подхода:

def strip_suffixes(path):
    t, suffix = path.rsplit('.', 1)
    if suffix in ("xz", "raw", "tar"):
        return t
    return path

Psych218 ★★★★★
()

представляющий собой обёртку над утилитами dnf --installroot, debootstrap, pacstrap и zypper.
Это означает поддержку только таблиц разделов GPT (и отсутсвие поддержки MBR), возможность генерации образов, основанных только на systemd, и генерацию только для загрузки на системах с поддержкой EFI (не MBR/BIOS).

В общем суммируя - на хрен ненужный очередной костыль.

cheez ★★★
()
Ответ на: комментарий от mittorn

Вот как раз это то ладно, в рамках проекта systemd делают, пусть поддерживают что хотят. Но можно же было на модули эту портянку распилить.

Weres ★★★
()
Ответ на: комментарий от Psych218

Ну ладно багрепорты на ЛОРе писать, но код-ревью - это уже перебор, нет?

vrutkovs ★★
()

Мне этот движ с корявыми микрософтинами напоминает поделки от suckless, только вместо suckless идет suckers.

nihirash ★★★
()

возможность генерации образов, основанных только на systemd

Наверно хочет вытеснить остальные утилиты, чтобы можно было генерить только линукса на systemd и остальные немногие совсем исчезли!

SakuraKun ★★★★★
()
Ответ на: комментарий от Psych218

Да уж… А если потом решит ещё 50 форматов поддерживать, тоже каждому по elif и t = [t:-4] напишет? В чём проблема такого подхода:

проблема в том, что он учит питон и ещё не знает про os.path. а на системд он стало быть учил си, или на чём то поделие написано.

path, ext = os.path.splitext(path)

не говоря уже о том, что strip_suffixes() не делает то, что заявлено и не отрезает расширение файла если это не .xz, .raw или .tar.

можете представить, что он понаписывал в системд, и прямо сейчас это барахло запущено на вашем железе.

anonymous
()

очередное ненужное гавно от этого быдлокодера.

гори в огне поцеринг лучше.

alwayslate ★★
()
Ответ на: комментарий от anonymous

и прямо сейчас это барахло запущено на вашем железе

Прошу, не обобщай.

Meyer ★★★★★
()
Ответ на: комментарий от anonymous

можете представить, что он понаписывал в системд, и прямо сейчас это барахло запущено на вашем железе.

зачем представлять, там и так все очевидно. говно. поэтому нормальные люди избегают этого поделия systemd

alwayslate ★★
()

Что из чего

Я не понял, что у этого сценария на входе и что он выдаёт?

Из чего генерится образ? Из репозитерия пакетов? Из имеющейся установки ОС?

Результат работы можно только в контейнере запускать? Или можно запустить на железе? Если последнее, то почему это «генератор образов», а не установщик?

Camel ★★★★★
()

Надо давно поймать Поттеринга было. А то на следующем этапе он станет переписывать systemd на Питоне с использованием только греческих букв с диакритикою.

Vudod ★★★★★
()
Ответ на: Что из чего от Camel

Из чего генерится образ? Из репозитерия пакетов? Из имеющейся установки ОС?
dnf --installroot, debootstrap, pacstrap and zypper

Как вот эти пареньки генерят, так оно и должно.

Результат работы можно только в контейнере запускать?
systemd-nspawn -bi image.raw

Можно в контейнере.

Или можно запустить на железе?
qemu-kvm -m 512 -smp 2 -bios /usr/share/edk2/ovmf/OVMF_CODE.fd -drive format=raw,file=image.raw

Раз в qemu можно, то можно и на железе.
Да и не зря в новости про EFI.

Если последнее, то почему это «генератор образов», а не установщик?

Потому что может генерить готовые образы, а не рутфс, не?

awesomelackware
() автор топика

Наконец-то! А то systemd-срачи надоели уже, хочется чего-то новенького

Sunderland93 ★★★★★
()

Леннарт-весельчак. Леннарт-рукожоп.

lochness
()
Ответ на: комментарий от Weres

Один файл на 2746 строк. Что с ним не так?

ШОК! Лёня накручивает лайки на гитхабе.

melkor217 ★★★★★
()
Ответ на: комментарий от Psych218

Может он разработчик на каком-нибудь другом сложном и крутом ЯП, а питон для галочки за пару недель выучил. Потому что иначе, я завысил представление о навыках профессионального питонщика и надо было вкатываться туда, а не туда где я сейчас (хотя я не жалуюсь)

Dred ★★★★★
()

Хорошая попытка протолкнуть ненужноd.

LupusAlbus
()
Ответ на: комментарий от anonymous

не говоря уже о том, что strip_suffixes() не делает то, что заявлено

так там и не заявлено ничерта, докстринга вон нет.

Dred ★★★★★
()
Ответ на: комментарий от Dred

он просто не знает как сделать по-человечески и вместо того чтобы погуглить или спросить, делает как может. отсюда и бинарные логи, и [:-4] и всё остальное. это от языка не зависит.

правильный вопрос был задан: «почему его никто не остановит». в редхате некому проконтролировать его работу или что?

anonymous
()

Кстати, забыли intelfx.

А по делу — ненужно, я и без такой штуки спокойно делал образы, зачем мне это поделие, если аффтар считает, что [:-4] для определения расширения — норма?

awesomelackware
() автор топика

Как обычно, толпа истерика без каких-либо конструктивных аргументов.

А в действительности эта штука была начата задолго до casync. Но всё ещё очень сырая, к сожалению - заставить ее работать под убунтой у меня так и не вышло. А вот под федорой работает неплохо.

Deleted
()

«Только для актуальных технологий» в данном случае значит, что кроме этой штуке вам один хрен придётся сделать всё то же самое, но другим инструментом. Это просто для того, чтобы образ потом где нибудь развернулся.

kirill_rrr ★★★★★
()

mkosi позиционируется как legacy-free, т. е. программа поддерживает только актуальные на сегодняшний день технологии. Это означает поддержку только таблиц разделов GPT (и отсутсвие поддержки MBR)

сижу на BIOS/MBR/sysvinit и этого неугомонного лёньку шлю вслед за всеми его поделиями.

dzidzitop ★★
()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Да хоть на JS. Вынесение кода в обособленные логически связанные и обозримые модули удешевит поддержку и ускорит вход для новых разработчиков. Две с лишним тысячи строк это уже перебор для скрипта.

Weres ★★★
()
Ответ на: комментарий от Deleted

А вот под федорой работает неплохо.

Может, это потому, что используются специфичные для Федоры инструменты (dnf)?

Virtuos86 ★★★★★
()
Ответ на: комментарий от awesomelackware

Особенно если учесть, что написание этого вброса мы обсуждали вместе.

ЗЫ: Новость сама по себе вброс, и это хорошо. У неадекватов так горит лишь от упоминания Леннарта. Интересно, почему?

batya
()
Ответ на: комментарий от awesomelackware

аффтар считает, что [:-4] для определения расширения — норма?

Будь любезен, прокомментируюй, почему [:-4] == '.tgz' может не определить расширение .tgz? (спойлер: кому не плевать на файл «.tgz»?)

kawaii_neko ★★★★
()
Ответ на: комментарий от kawaii_neko

Будь любезен, прокомментируюй, почему [:-4] == '.tgz' может не определить расширение .tgz? (спойлер: кому не плевать на файл «.tgz»?)

Ты не поверишь, но оно может.
Выше уже показали как сделать нормально, но ты же тред-то не читал.

awesomelackware
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.