From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,FUZZY_XPILL autolearn=no autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=b/0py+GEsjvDTRpkRduanLKvYwzCIbUP9SlYkxWkOc8=; b=IMFeFquzruxMkwoCemW/qXOyO2sObR60dB6fBkCu9iswLl+qIpraPwqkXaraulcM9+ yYPMovejijUvBMe4WjcJ1WrUEEU3kLfUsa+xKizS5F1FOtm2LawSlu7zIE3vKmzKwKXv YpnE/WjJ94XHh1xidKbpgUIDf5PbC3lf3tqe5QoewUlP6GRkPmSbLDN2U3bXsK1zkQnV 8JNqUUF67Xdyd4oBBMBQWhyccrztOJ+k9s0rd1k2XBS5vZc0YHAsNfPfswhQDH2x+1xh k/syDpaVzS8DhpwB6qboso5MJ2VHfOR27LV4Ds7LPuJP4hNKf+zZkEnior0VusxWR5oY wPwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=b/0py+GEsjvDTRpkRduanLKvYwzCIbUP9SlYkxWkOc8=; b=AMgWk6D/yOsu4Mw7H4zrzEpwJn9hJz6MD6KPJ2htHFaVkYVA86d3iEiooSonZD7n6d i5uxVGatb4KZSiHLlQ63U4S8/yfr0MqAgf/Frr7Ad9Xh/mHEdLhiAXBAno9SSbuoh796 TtrLb3Sr8xPnmHgv1+JSmy4qzmCW+ZBTpcYBLk4Okdv2YMyVwwy80m2lwkcJ3gMAOoDS 3ALbK/S8rYsDvd4to7e8bvA+7NSd0AMoSeRnG2LcnkfvajuG7NSKuC5hyyrE2xh00kgF gFfOCLdb/OXS8Yxop/coUpooHp8IQs5PkzxKw/9kfY824OyaODIZo87k0BBPE9LAWFsd o4Yw== X-Gm-Message-State: ALQs6tAwlLt2B22lm3VjTQfdJD4A6lKfOK+LVwR1q/i9buAENo9qA2DT lB9tcFZNoqUmJpJytj/x5IFxVw== X-Google-Smtp-Source: AB8JxZoOHVUHlIn1ecpNwq+pgm4ZG7pbT3Kn6kfdIH8VgAOQVJYNH3VTyXBCVagqMQjl6Vv3t5YZLg== X-Received: by 2002:a2e:5d57:: with SMTP id r84-v6mr22441698ljb.125.1525631109419; Sun, 06 May 2018 11:25:09 -0700 (PDT) To: devel@lists.altlinux.org References: From: Leonid Krivoshein Message-ID: <61310192-890b-1f93-a05c-09afb4a8efdd@gmail.com> Date: Sun, 6 May 2018 21:25:08 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [devel] =?utf-8?b?0JzQvtC00YPQu9GM0L3Ri9C5IGluaXRyZC5pbWc=?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2018 18:25:11 -0000 Archived-At: List-Archive: List-Post: Добрый вечер! 06.05.2018 19:55, Michael A. Kangin пишет: > Здравствуйте! > > Не секрет, хотя и не широкоизвестно, что популярные загрузчики > позволяют указывать несколько cpio-образов, которые при загрузке будут > объединены в памяти в единую initramfs. > Равно как и то, что склеить initrd можно из нескольких кусков уже на этапе генерации. Если не ошибаюсь, наш mkmodpack создаёт отдельный кусок с модулями ядра. > Этим можно воспользоваться, и разделить текущий монолитный initrd.img > на отдельные образы - собственно сам initrd, early-микрокод, и модули > ядра [с фирмварью]. > Если не ошибаюсь, ucode для initel/amd у нас тоже сейчас отделён. Цена вопроса в любом из вариантов -- выравнивание кусков по 4Кб границам, если не ошибаюсь, они склеиваются не встык, а должны выравниваться по границам размера страницы. > Зачем это может быть нужно? > - ускорение генерации новых initrd при установке нового ядра. Если > микрокод и само тело initrd остаётся такими же, достаточно только > быстренько слепить образ с новыми модулями. Это значит капитально переделывать инструмент генерации initrd, другие дистрибутивные инструменты, которые это должны поддерживать. Ради чего? Так ли уж долго генерируется initrd? И ведь нужно ещё вести учёт того, что менялось, а что нет. > - уменьшение суммарного размера микрокода / разных вариантов initrd / > разных версий ядра. Например, мы выносим микрокод отдельным образом - > и нам не нужно включать его в каждую новую версию initrd, которую мы > делаем. Если мы генерим себе -debug initrd, то достаточно сделать > крохотный diff-образ с bash / lsmod / whatever, а модули и основной > initrd у нас уже есть. Мы можем предложить загрузить на выбор std-def > и un-def, причём разница (кроме самих vmlinuz'ов) будет достаточно > небольшая, архивы из десятка модулей ядра. Для решения конкретных задач всё равно будут пары ядро+initrd, а любые попытки приведут к небольшому увеличению конечного образа, но не наоборот. > - возможность оперативно фиксить уже существующий initrd, добавив > сбоку в отдельном образе или недостающий модуль, или конфиг там какой > со скриптом. Чтобы его оперативно пофиксить сейчас достаточно сказать make-initrd. > - возможность полностью отвязать сам initrd от версии ядра. И иметь > возможность загрузить систему с, например, RHEL-овским ядром, но нашим > initrd, не ломая никакой совместимости. > make-initrd умеет класть в образ initramfs любые файлы и сейчас. > Минимальная поддержка, необходимая в initrd для сторонних образов с > модулями - вызов "depmod -a" перед загрузкой модулей, например, в > стадии pre-udev. Если сторонние образы содержат что-то другое, то и > поддержки особой не надо. > Сейчас автоугадав взаимных зависимостей модулей работает на этапе генерации initrd. Чего же хорошего в переносе этой длительной операции на этап КАЖДОЙ (!) загрузки машины? > Возможно, удалось бы сделать продвинутую поддержку сторонних модулей, > чтобы выносить из основного тела отдельные фичи. Плимут просто > напрашивается, например. > Так и сейчас чтобы сгенерировать initrd с определёнными фичами или наоборот, без них, достаточно подправить /etc/initrd.mk и сказать make-initrd. Именно так можно избавиться от плимута, к примеру. > Вот пара вполне работающих примеров: > > syslinux с семейством (iso, pxe): > ======================= > LABEL test-modular-initrd > MENU LABEL Test modular initrd > KERNEL clb/vmlinuz > INITRD clb/microcode.img,clb/initrd-thin.img,clb/supermicro_boot.modules > APPEND root=http://xxxxx/rescue-base-sm.manifest rootdelay=5 > ======================= > Работает как с legacy bios, так и с uefi. > > grub2: > ======================= > ... > echo 'Loading Linux 4.9.71-std-def-alt0.M80P.1 ...' > linux /boot/vmlinuz-4.9.71-std-def-alt0.M80P.1 > root=UUID=a397ac93-3b06-4023-83e4-18b29a28b033 ro quiet > resume=/dev/disk/by-uuid/6481d48d-8403-4049-adfc-87e94b950361 panic=30 > splash > echo 'Loading initial ramdisk ...' > initrd /boot/microcode.img > /boot/initrd-4.9.71-std-def-alt0.M80P.1-thin.img /boot/modules.img > ======================= > c uefi не пробовал. > > Так же, не знаю, умеют ли это хитрые uefi-загрузчики типа refind'а. Даже если не умеет загрузчик, куски можно склеить заранее. И получить всё тот же монолитный initrd. Но зачем? Ведь в конечном итоге для решения конкретной задачи эти куски попадают на обработку всё равно уже в склееном виде. -- Best regards, Leonid Krivoshein.