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)
Ответ на: комментарий от Bahamut

Миша, искать работу нужно по-другому.

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

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

Нет, но именно ты был тем, кто триггернулся на мой коммент.

:facepalm:

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

Первый проект разрабатывался, когда ещё гитхаба небыло. Второй - под виндой и на локальном svn-репозитории.

Bahamut
()

Оно из готовых настроенных систем может установочные образы делать аля remastersys?

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

https://github.com/NightmareZ/MakarovPhysics

Ни readme, ни комментариев (а те что есть — в cp1251), способных пролить свет на задачи проекта. Плюсик в карму за любовь к Delphi.

Отсутствие обработки ошибок IO приведет к тому, что ошибка при открытии файла выльется в окошечко, завершающее работу приложение. На основании этого проект отнесен к классу «говнокод».

https://github.com/NightmareZ/FlowchartBuilder

Я оторопел от количества директорий и исчерпывающего README.md. Дальше корня не продвинулся, а в корне с исходниками не густо.

И вообще портянки на C# я не могу оценить в силу незнания этого замечательно языка.

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

Ты дурачок? Зачем мне https на пре-альфа-демо-версии?

Bahamut
()
Ответ на: комментарий от BceM_IIpuBeT

В чем прикол его юзать?

У него ведь BIOS же.

If you are installing on older hardware, especially on old laptops, consider choosing MBR because its BIOS might not support GPT.

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

Вот ещё один мой проект, но исходников не могу показать

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

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

Для скриптоты это как раз норм. Проще тагять один файл, чем десяток.

Пакеты не изобретены.

NextGenenration ★★
()

Когда уже леннарта проверят на вменяемость и, по результатам, закроют в дурке лет на двадцать?

И, обязательно, чтобы в одной палате с ним лежал Наполеон, а в соседней сидел Прокурор!

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

Это конечно хорошо, но в реальности всегда рулили общие достижения, а не насколько безупречно ты сделал определенную детальку.

Потом автора хочется малость убить, но это мелочи, да?

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

Наверное потому что стыдно.

Наверное.

Всё грузится ужасно долго,

Потому что много картинок, анимации, звуков... и самый дешёвенький сервер для разработки.

боюсь представить что за код там внутри

Специфические оптимизации под разные платформы (от десктопа до мобильников), два рендера (канвас и вебгл), кеширование на клиенте и многое другое.

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

А разве актуальны? Это очень старый проц. Где вообще можно найти подобное железо в наше то время?

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

Судя по тому, что ранее всё созданное им ПО писалось на C - он только начинает осваивать Python, так что ваше предположение абсолютно верно.

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

За что вы так? Человек старается сделать мир лучше. Если вам не нравится то, что он делает, можете не пользоваться, никто же вас не заставляет. Как по мне, человек имеющий пусть и не самые лучшие навыки программирования, но разрабатывающий ПО и делящийся им с сообществом заслуживает куда большего уважения, чем блестящий теоретик, знающий как нужно создавать подобное ПО, но ничего не делающий и страдающий перфекционизмом, из-за которого он скорее всего никогда и не создаст ничего, чем можно было бы поделиться с сообществом. А Леннарт, хоть его и критикуют некоторые, но сделал не мало. За что ему отдельное спасибо. Хорошо, что он не сильно прислушивается к критике.

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

Алсо, что переменная с именем «t» делает в коде? Ему нормально назвать — не судьба?

Если это локальная переменная, то в чём проблема?

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

Если вам не нравится то, что он делает, можете не пользоваться, никто же вас не заставляет

Вынеси из дебиана (не дивана!) системд, поставь sysvinit и GNOME 3, интересно, да?

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

Это локальная переменная или нет?

Локальная. Но она там вообще в принципе не нужна. Там t = path, и далее используется только t. Что мешало использовать path и дальше (это тоже локальная переменная), неизвестно.

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

Да отнимите же у этого поттера волшебную палочку

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

ritsufag ★★★★★
()
Ответ на: комментарий от Psych218
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

Так лучше? Я не знаю питона.

def strip_suffixes(path):
    exts = ['.xz', '.raw', '.tar']
    finded = true
    while finded:
        finded = false
        for ext in exts:
            if path.endswith(ext):
                finded = true
                path = path[:-len(ext)]
                break
    return path
Bahamut
()

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

Ein program, ein technology, ein systemd, ein Lennart!

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

Просто мне лень открывать и читать огроменный файл на 2k строк. Я и в файлах поменьше могу запутаться.

NextGenenration ★★
()

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

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

Так лучше? Я не знаю питона.

Немного. По крайней мере без кучи elif и каждый раз задания длины расширения вручную. Но можно лучше (кортеж вместо списка, без вложенного for, без флага и брейка, ну и используя встроенную функцию обрезания расширения), как я выше писал:

def strip_suffixes(path):
    EXTS = (".xz", ".raw", ".tar")
    while any(path.endswith(x) for x in EXTS):
        path = os.path.splitext(path)[0]
    return path

P. S. В питоне True и False с большой буквы пишутся, так ошибка будет.

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

Потом автора хочется малость убить, но это мелочи, да?

За 1024*1024*1024 или за [:-4]? Это уже перфекционизм на грани невроза.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)

Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану. (с)

Вообще, за чувака можно только порадоваться: креатифф так и прёт. А все хейтеры тутошние - вы просто на скучной работе сидите и вам завидно! :D

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

За 1024*1024*1024 или за [:-4]? Это уже перфекционизм на грани невроза.

Да, я перфекционист. Но я это осознаю и могу контролировать.

Я скорее всего взял бы и сохранил в переменную(возможно однобуквенную) возведение 2 в 30 степень без пояснение.

Мне не нравится когда софт во-первых не работает, и во-вторых когда он не пишет почему он не работает. Хороший, годный компилятор напишет почему он не собирает приложение. Это пример софта которые если не работет, то пишет причину и возможно предлагает исправление.

Мне не нравится то как тут ищут расширение. С высокой вероятностью есть библиотечный метод для этой цели. Зачем велосипедить? Откуда взялась цифра 4? Где гарантия того что сюда не придёт однажды что-то отличное от 4? Почему не искать последнюю точку? Там есть код который паникует в случае чего, говоря о том что расширение не верное?

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

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

Хипсторы, сэр.

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

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

А зачем представлять если это можно наглядно видеть?
Критическая уязвимость в systemd: удалённое выполнение кода

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

Я скорее всего взял бы и сохранил в переменную(возможно однобуквенную) возведение 2 в 30 степень без пояснение.

Вот ты сделал бы так, Psych218 возвел бы 1024**3, Поттеринг написал 1024*1024*1024. Кто же из вас прав? А разгадка-то проста, проблема сама по себе не стоит и выеденного яйца.

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

Вот ты сделал бы так, Psych218 возвел бы 1024**3, Поттеринг написал 1024*1024*1024. Кто же из вас прав? А разгадка-то проста, проблема сама по себе не стоит и выеденного яйца.

Мне не принципиально возведение в степень. Я уже изложил то что мне не нравится.

NextGenenration ★★
()
Ответ на: ffgj от beastie

Ja, das ist richtig.

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

Вот ты сделал бы так, Psych218 возвел бы 1024**3, Поттеринг написал 1024*1024*1024.

Проблема не в том, какой из двух вариантов выбрать. Просто хорошо бы выбрать один, раз уж взялись писать «магические числа». Или оба раза 1024*1024*1024 или оба раза 1024**3. В одном участке кода так очевиднее. Это само по себе мелочь, но там весь код такого уровня.

А можно было сделать вообще как-нибудь, например, так:

def format_bytes(size):
    if size < 1:
        return "{:0.1f}B".format(size)
    units = "BKMGT"
    for p in range(len(units)-1, -1, -1):
        if size >= 1024**p:
            return "{:0.1f}{}".format(size / 1024**p, units[p])
и в случае желания добавить бóльшие единицы, просто дописывать их в конец units (можно заменить строку на список и исользовать не однобуквенные), а не дописывать новый if с копипастой return'а каждый раз. Хотя первый return я бы переписал, чтобы возвращалось целое число без точки, если меньше килобайта, потому что дробные байты в данном случае вряд ли что-то нормальное (но тут не уверен, может там и дробные норма каким-то образом).

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

Оп, эффективный коммерческий разработчик детектед. Х,х и в продакшен, да.

А вам шашечки или х,х-и-в-продакшн? В реальном девелопменте шашечки редко выбирают.

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

А вам шашечки или х,х-и-в-продакшн? В реальном девелопменте шашечки редко выбирают.

Из-за этого он уныл чуть более чем полностью

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

А можно было сделать вообще как-нибудь, например, так:

Код говно. По пунктам:

  1. глядя на него не сразу понимаешь, что тут вообще творится
  2. идентификатор для «Bytes» дублируется
  3. неэффективно — присутствует операция возведения в степень (которая делается аж 5 раз, чтобы нарисовать байтики, которые могут быть очень частым кейсом!)
kawaii_neko ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.