16.06.2009 02:09
librarian — Загрузка Debian в оперативную память.
В общем бродил тут по интернетам, по дебиановским форумам в поисках инструкций на тему: "Как загрузить Linux в оперативную память"В общем нашёл удобное решение в виде пакета debirf. Этот пакет(на самом деле это просто набор bash скриптов) предоставляет удобный интерфейс для установки и создания образа дистрибутива при помощи debootstrap, initramfs-tools и bash, для упаковки его в образы initrd. Дополнительно позволяет делать образы iso, которые при помощи того же unetbootin можно закатать на флэшку.
В общем, это прекрасный инструмент для создания собственного livecd.
Для того чтобы этот пакет появился у Вас, в Debian Lenny(в squeeze, sid и выше, а также в Ubuntu этот пакет должен быть), нужно добавить в /etc/apt/sources.list
1 |
deb http://cmrg.fifthhorseman.net/debian unstable debirf
|
И импортировать gpg ключ репозитория:
1 |
wget http://fifthhorseman.net/dkg.gpg -O - | sudo apt-key add -
|
Теперь, после установки, можно начать создавать свой супер-мега-дистрибутив.
Небольшое техническое отступление, debirf работает с так называемыми "сценариями". По умолчанию debirf предоставляет 3 сценария установки:
xkiosk - система с очень простым WM и Iceweasel.
rescue - типичные rescuecd утилиты типа install lvm2 lsof hdparm partimage pciutils testdisk foremost mdadm smartmontools eject wodim ddrescue cryptsetup sdparm. (Набор весьма маленький, однако легко можно добавить нужные Вам утилиты)
minimal - базовая установка Debian. Тут сказать нечего, это, так сказать основа для будущей системы.
Итак, приступим к установке непосредственно livecd:
Создадим папку с говорящим названием ;)
1 |
|
Распакуем один из образов:
1 |
|
Теперь в папке будет папка minimal, в ней соответственно debirf.conf и папка modules, с сценариями установки, можно воспользоваться базовыми сценарями из /usr/share/debirf/modules/
В файле debirf.conf можно задать следующие параметры:
Итак, сценарии мы распаковали, с версиями дистрибутива определились. Будем начинать сборку:
1 |
|
Следует, однако, заметить, что по умолчанию собирается generic ядро для этого дистрибутива.
Чтобы задать своё ядро(а я так и сделал) нужно запускать с параметром -k
1 |
|
В моём случаеэто выглядело так:
1 |
|
Пока оно там скачивается, собирается в 2 файла, можно смело пойти перекусить или ещё чего(а с моими медленными интернетами ещё и поспать можно было бы ;)
После этого скопируем initrd и vmlinuz файлы в /boot и добавим запись о них в menu.lst
1 |
|
И прописываем в /boot/grub/menu.lst следующее:
1 |
title Cool Debian Distro
|
После этого можно перезагружаться в свежую систему.
Кросспост
xameleon 16.06.2009 12:52 #
+ 0 -
есть преимущества во скорости приложений?
По идее - да, поскольку вся операционная система, со всеми файлами, помещается в оперативной памяти.
На практике я такое видел в Slitaz или подобных дистрибутивах. На livecd типа ubuntu - такого нет, там всё работает на несколько иных принципах.
На практике я такое видел в Slitaz или подобных дистрибутивах. На livecd типа ubuntu - такого нет, там всё работает на несколько иных принципах.
Буквально вчера облазил весь интернет в поисках подобного решения и, наверняка, почти каждый раз делал все правильно - ввиду наличия ненужной SD карточки на 64 МиБ была нужда создать загрузочный диск, с которого можно было бы делать бэкапы/ресторы. Перечитал кучу доков, понял, что initrd это никакой "тупо бинарник" с жутко низкоуровневой пакостью для ядра, а всего лишь запакованный образ диска с начальными скриптами загрузки. А также узнал как "ставить" софт на такой initrd раздел (все делается обычным 'sudo cp -adpR <here> <there>', а зависимости решаются с помощью ldd, и "на глазок"). Узнал как устанавливать GRUB и как запустить систему, если в GRUB не прописано ни единого (работающего) варианта, то есть просто из командной строки GRUB.
Вот чего я так и не узнал, так это то как правильно скомпилить ядро, чтобы оно поддерживало inird, или как заставить мое ядро, которое грузит нынешнюю систему безо всякого initrd, дойти до той стадии когда сама SD карточка распознается и будет примонтирована. В нынешнем состоянии оно у меня либо не грузится вообще (ругается, мол, нету такого устройства), либо грузится с первого попавшегося раздела - чаще всего это hda1 или sda1 (при загрузке на десктопе цеплял в корень NTFS раздел с виндой %( , а на Еее цеплял корневой раздел моей системы, который собсна может быть недоступен в экстренной ситуации).
Вот и думаю - как заставить Eee PC 900 грузиться с SD карты? В общем, кто поможет в этом деле - памятник поставлю. Собственно, после того что я прочитал такая инструкция была бы скорее больше обучающей, чем действительно острой необходимостью - с обычной USB флэшки Eee грузится прекрасно.
P.S. С SD удалось загрузиться всего в один дистрибутив, но в нем был только busybox, и не было необходимых мне утилит (testdisk, dd).
Вот чего я так и не узнал, так это то как правильно скомпилить ядро, чтобы оно поддерживало inird, или как заставить мое ядро, которое грузит нынешнюю систему безо всякого initrd, дойти до той стадии когда сама SD карточка распознается и будет примонтирована. В нынешнем состоянии оно у меня либо не грузится вообще (ругается, мол, нету такого устройства), либо грузится с первого попавшегося раздела - чаще всего это hda1 или sda1 (при загрузке на десктопе цеплял в корень NTFS раздел с виндой %( , а на Еее цеплял корневой раздел моей системы, который собсна может быть недоступен в экстренной ситуации).
Вот и думаю - как заставить Eee PC 900 грузиться с SD карты? В общем, кто поможет в этом деле - памятник поставлю. Собственно, после того что я прочитал такая инструкция была бы скорее больше обучающей, чем действительно острой необходимостью - с обычной USB флэшки Eee грузится прекрасно.
P.S. С SD удалось загрузиться всего в один дистрибутив, но в нем был только busybox, и не было необходимых мне утилит (testdisk, dd).
1) для установки ядра+initrd есть unetbootin
2) в биосе в списке хардов SD не видно?
2) в биосе в списке хардов SD не видно?
В биосе SD видно и все ок. При загрузке с кастомного ядра - кернел паник. При загрузке стандартного Ядра + initrd он догружается до того же места где кернел паник, только вместо этого выкидывает в примитивную консоль и предлагает найти корневой раздел и примонтировать в какую-то директорию. Собсна, на том этапе раздела этого не видно все равно, причем ни с SD ни с USB. Надо видать крутить конфиги ядра.. или конфиги установочного диска Arch - с ним-то вроде бы работает..
Если своё ядро без initrd не работает, значит не впилили в него что то.
Нужно конкретно знать что за кернел паник. Если не кастомногое с инитрд не грузит, значит у него нет драйверов чтобы это загрузить + у вас в fstab ничего не указано, вполне вероятно.
Нужно конкретно знать что за кернел паник. Если не кастомногое с инитрд не грузит, значит у него нет драйверов чтобы это загрузить + у вас в fstab ничего не указано, вполне вероятно.
В биосе меняешь приоритет HDD, ставишь чтобы с SD-ридера грузился и все работает прекрасно. :) тестил на BackTrack, RIPLinux и Ubuntu Netbook Remix. Все прекрасно и без проблем грузится с SD на 900 и 701 ;)
Проблема не втом, с какого раздела грузиться, а в том, что нужных разделов и устройств не находится в ядре.
Загрузись в лайв и при работающем кардридере сделай lsmod. Все, что его касается - в ядро. Если и после этого не загрузится, то проблема может быть только в грубе.
Есть еще пакет live-helper, предоставляющий набор скриптов для создания live-cd(hdd). Много возможностей для тонкой настройки.