From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.2.5 Message-ID: <52D54293.3030108@altlinux.ru> Date: Tue, 14 Jan 2014 17:58:43 +0400 From: Alexey Gladkov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: ALT Devel discussion list X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [devel] [RFC] make-initrd 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: Tue, 14 Jan 2014 13:59:44 -0000 Archived-At: List-Archive: List-Post: Привет! Недавно мне пришла мысль о переделке runtime части make-initrd с целью повышения гибкости и увеличения сфер применения. Первая идея состоит в том, чтобы использовать в initramfs не скрипт притворяющий init'ом, а использовать там вполне себе настоящий init. Проведя некоторые исследования я пришёл к выводу, что обычный немодифицированный sysv-init может уже рассматриваться как вполне себе встраиваемое решение: sysv-init ~40K, upstart ~160K, systemd ~1,1M. Ещё одна особенность sysv-init, которую я обнаружил у него это возможность запустить вместо себя совершенно любой процесс. Особенность очень полезная применительно к задачам в initramfs. В случае использования sysv-init все стадии работы initramfs превращаются в сервисы с зависимостями между собой (я использовал LSB заголовки). Это поможет решить ряд вопросов с очисткой системы перед переходом в реальную систему (например lo). А также наоборот с пробросом в реальную систему сервисов (например plymouth) или ресурсов. Потому что сейчас мы фактически изобретаем всё тоже самое: у нас есть модули, у нас есть cleanup-стадия, убийство лишних процессов и т.д. Вот только написано это очень примитивно. Также этот подход позволит упростить некоторые существующие решения на основе initramfs позволяя добавлять и отключать любые или почти любые стадии/сервисы. Для того чтобы понять возможна ли реализация этого на практике я сделал очень грубый прототип: http://git.altlinux.org/people/legion/packages/make-initrd.git?a=shortlog;h=refs/heads/sysinit В нём есть поддержка загрузки только с обычного раздела и тестировалось это лишь в qemu, но если кому интересно, то получить представление о загрузке можно. Этот код сделан в основном для того чтобы можно было посмотреть на новую компоновку initramfs. -- Rgrds, legion