Несмотря на то, что загрузочных Linux дистрибутивов развелось огромное количество, так или иначе хочется создать Linux для личных нужд и конкретных целей. Способов для создания загрузочных дистрибутивов Linux имеется много, от LFS до Knoppix Customisation Kit. Но "мы пойдём другим путём"и будем создавать загрузочный Linux на основе собственного дистрибутива и с минимальными трудозатратами. Ниже описываются шаги на примере Debian GNU/Linux и live-scripts.
Необходимые приготовления для создания загрузочного Linux
Для начала нужно скачать скрипты для создания загрузочного диска Linux отсюда. Желательно так же скачать и ядро, которое уже подготовлено для работы - и если вы не гонитесь за какими-то рекордами. Можно собрать и собственное ядро, но его придётся не раз пропатчить...
Далее нужна уже установленная система. Можно создать загрузочный Linux диск на основе той системы, которая есть, но я поставил отдельно Дебиан в эмуляторе QEMU и установил там только те приложения, которые нужны.
Настраиваем систему
Для этого монтируем файл-образ с установленной и настроенной системой на петлевое устройство и затаскиваем туда необходимые скрипты и ядро (от рута):mount -t ext3 debianEtch40Xorg71Xwm.img /cdrom -o loop,offset=32256
Распаковываем архив с ядром, перемещаем получившиеся файлы в соответствующие директории (загрузочный образ в /boot, модули - в /lib/modules, утилиты squashfs в /usr/bin). Всё это делается от рута. Далее генерируем образ initrd:
cp linux-2.6.21.5-i486-1.tgz /cdrom/root
umount /cdrommkinitramfs -o /boot/initrd.img-2.6.21.5 2.6.21.5
Версия ядра может измениться, так что команду нужно будет поправить. Заменяем дистрибутивное ядро новым, изменяем grub.list, обновляем загрузчик update-grub - это сэкономит нам ещё около 60 Мб.
Загружаем эмулятор вместе с файлом-образом получившейся системы, тестируем, пробуем.qemu -kernel-kqemu -hda debianEtch40Xorg71Xwm.img
Настраиваем виртуальный дистрибутив под наши задачи, устанавливая нужные пакеты и удаляя лишние. Лично у меня есть некий базовый дистрибутив в сжатом виде, как образ QEMU, и в зависимости от задач я меняю состав его программ.
Обязательно проверьте, установлен ли mkisofs - иначе создать живой CD не удастся и вы (забегая вперёд) получите сообщение:
# /tmp/live_data_2865/virenslinux/make_iso.sh
Target ISO file name [ Hit enter for /linux-live-6.1.4.iso ]: virenslive.iso
/tmp/live_data_2865/virenslinux/make_iso.sh: line 25: mkisofs: command not found
Если mkisofs есть, переходим дальше.
Создание загрузочного диска Linux
Снова монтируем файл-образ настроенной системы на петлю:mount -t ext3 debianEtch40Xorg71Xwm.img /cdrom -o loop,offset=32256
Теперь согласно руководству, копируем в /cdrom/temp (куда прикручена система для liveCD) скрипты для создания диска. Скрипты будут работать только от рута, так что можно немножко покрасноглазить :-)
Настраиваем скрипты, для чего заходим в каталог /linux-live-версия на прикрученной системе и редактируем файл .config
В нём можно изменить название LIVECDNAME на то, которое больше нравится, и главное - изменить KERNEL на то, которое установлено в той системе (здесь это 2.6.21.5). Таким образом, строка будет выглядеть:KERNEL=2.6.21.5
Сделайте это, иначе на следующем шаге скрипт ядро не найдёт.
Генерация файлов живого диска
Теперь переходим к точке монтирования нашей новой системыcd /cdrom
и входим в неё:chroot /cdrom
Теперь все действия будут выполняться рутом относительно той системы, а не в которой вы работаете. Переходим в каталог со скриптами:cd /tmp/linux-live-6.1.4/
и даём команду собрать образ:./build
Для того, чтобы всё прошло успешно, в ядре обязательно должна быть включена поддержка ext2, иначе при сборке всё закончится ошибкой.
Changing current directory to /tmp/linux-live-6.1.4
Name of your live distro [hit enter for virensLinux]:
Linux Live scripts were installed successfuly in /
Enter path for the kernel you'd like to use [hit enter for /boot/vmlinuz]:
Creating LiveCD from your Linux
some debug information can be found in /tmp/linux-live-debug.log
copying cd-root to /tmp/live_data_9345, using kernel from /boot/vmlinuz
creating initrd image...
Using kernel modules from /lib/modules/2.6.21.5
mount: /dev/loop6 has wrong device number or fs type ext2 not supported
Error mounting initrd! Not enough free loop devices?
Если всё на месте, отвечаем на несколько вопросов, и видим процесс генерации:
notebeast:/tmp/linux-live-6.1.4# ./build
Changing current directory to /tmp/linux-live-6.1.4
Name of your live distro [hit enter for virenslinux]:
Linux Live scripts were installed successfuly in /
Enter path for the kernel you'd like to use [hit enter for /boot/vmlinuz]:
Creating LiveCD from your Linux
some debug information can be found in /tmp/linux-live-debug.log
copying cd-root to /tmp/live_data_2865, using kernel from /boot/vmlinuz
creating initrd image...
Using kernel modules from /lib/modules/2.6.21.5
creating compressed images...
base/bin.lzm ...
[========================================================= ] 100/112 89%
base/etc.lzm ...
[================================================================] 709/709 100%
base/home.lzm ...
[==================================================================] 37/37 100%
base/lib.lzm ...
[==============================================================] 2161/2161 100%
base/opt.lzm ...
base/root.lzm ...
[====================================================================] 7/7 100%
base/usr.lzm ...
[========================================================== ] 21934/22313 98%
base/sbin.lzm ...
[========================================================= ] 95/106 89%
base/srv.lzm ...
base/var.lzm ...
[==============================================================] 2100/2100 100%
--------done----------
* run /tmp/live_data_2865/virenslinux/make_iso.bat to create ISO image
* or copy content of /tmp/live_data_2865 to your USB device
and run ./boot/bootinst.sh (from the device!) to setup boot sector
Now press Enter...
За это время можно выпить чашечку кофе, или принять ванну (в зависимости от мощи процессора). У меня это отнимает около 10 минут. После этого нужно создать ISO-образ нашего загрузочного живого пингвина.
Создание загрузочного Linux LiveCD
Осталось последнее - создать ISO образ живого диска и пропалить его на болванку. Для этого переходим в каталог, куда скрипты утоптали пингвина и выполняем:notebeast:/tmp/live_data_16804/virensLinux# ./make_iso.sh
После этого поползут диагностические строчки, и пойдёт процесс компоновки диска:
Target ISO file name [ Hit enter for /tmp/virensLinux.iso ]:
genisoimage 1.1.2 (Linux)
Scanning ../.
Scanning .././virensLinux
Scanning .././virensLinux/rootcopy
Scanning .././virensLinux/tools
Scanning .././virensLinux/tools/WIN
Scanning .././virensLinux/modules
Scanning .././virensLinux/optional
Scanning .././virensLinux/base
Scanning .././boot
Scanning .././boot/dos
Scanning .././boot/isolinux
Scanning .././boot/syslinux
Writing: Initial Padblock Start Block 0
Done with: Initial Padblock Block(s) 16
Writing: Primary Volume Descriptor Start Block 16
Done with: Primary Volume Descriptor Block(s) 1
Writing: Eltorito Volume Descriptor Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor Block(s) 1
Writing: Joliet Volume Descriptor Start Block 18
Done with: Joliet Volume Descriptor Block(s) 1
Writing: End Volume Descriptor Start Block 19
Done with: End Volume Descriptor Block(s) 1
Writing: Version block Start Block 20
Done with: Version block Block(s) 1
Writing: Path table Start Block 21
Done with: Path table Block(s) 4
Writing: Joliet path table Start Block 25
Done with: Joliet path table Block(s) 4
Writing: Directory tree Start Block 29
Done with: Directory tree Block(s) 12
Writing: Joliet directory tree Start Block 41
Done with: Joliet directory tree Block(s) 12
Writing: Directory tree cleanup Start Block 53
Done with: Directory tree cleanup Block(s) 0
Writing: Extension record Start Block 53
Done with: Extension record Block(s) 1
Writing: The File(s) Start Block 54
6.43% done, estimate finish Sat Aug 11 10:00:37 2007
12.85% done, estimate finish Sat Aug 11 10:00:37 2007
19.27% done, estimate finish Sat Aug 11 10:00:32 2007
25.70% done, estimate finish Sat Aug 11 10:00:41 2007
32.11% done, estimate finish Sat Aug 11 10:00:43 2007
38.54% done, estimate finish Sat Aug 11 10:00:45 2007
44.95% done, estimate finish Sat Aug 11 10:00:46 2007
51.39% done, estimate finish Sat Aug 11 10:00:47 2007
57.80% done, estimate finish Sat Aug 11 10:00:47 2007
64.23% done, estimate finish Sat Aug 11 10:00:48 2007
70.64% done, estimate finish Sat Aug 11 10:00:48 2007
77.07% done, estimate finish Sat Aug 11 10:00:47 2007
83.49% done, estimate finish Sat Aug 11 10:00:48 2007
89.92% done, estimate finish Sat Aug 11 10:00:48 2007
96.34% done, estimate finish Sat Aug 11 10:00:48 2007
Total translation table size: 2048
Total rockridge attributes bytes: 6393
Total directory bytes: 22528
Path table size(bytes): 168
Done with: The File(s) Block(s) 77653
Writing: Ending Padblock Start Block 77707
Done with: Ending Padblock Block(s) 150
Max brk space used 0
77857 extents written (152 MB)
Готово, будет создан (в моём случае) файл virensLinux.iso, который является загрузочным диском. Проверяю в QEMU:qemu -cdrom virensLinux.iso
Работает! Вот, например, что в итоге получилось у меня:
Простой и строгий IceWM с одной из тем по умолчанию (Infadel2). Простенько, но со вкусом. Правда, при загрузке оно пишет Slax, но это уже другая история.
Теперь ISO-образ пропаливаем на болванку любимой программой прожига, и радуемся.
Ссылки
Собственно, это есть расширенное руководство к скриптам отсюда, на которых, в частности, создаётся Slax. Документация в комплекте к скриптам страдает отчаянным лаконизмом, и я решил это исправить.
Море ссылок на аналогичные ресурсы можно найти там, сям и тут. Так же опытом в живом дистростроительстве делится мой коллега здесь. Некоторые говорят, что нечто подобное (live-package) есть в Debian, но я пока не пробовал.
Мысли, трюки и собственные впечатления в комментариях приветствуются.
Создание Linux: создаём загрузочный Linux LiveCD
Подписаться на:
Комментарии к сообщению (Atom)
17 комментариев: |высказаться!| RSS-лента дискуссии.|
А для Ubuntu есть какой-то пакет, забыл какой, для создания подобных вещей. В Fedora есть Revisor, который создает кастомные дистрибутивы для оптических дисков, USB брелоков и просто установочные образа.
когда задался такой задачей перепробовал множество всяких путей, остановился на вот таком: http://livebackup.sourceforge.net/
у меня просто была необходимость использовать родное убунтовское ядро - а пересобирать ой как не хотелось
>Некоторые говорят, что нечто подобное (live-package) есть в Дебиане, но я пока не пробовал.
True-линуксоид: зачем использовать стандартные утилиты из репозиториев, если можно поизвращаться самому.
2 Tigro пишет...
А для Ubuntu есть какой-то пакет, забыл какой, для создания подобных вещей.
Приведённый здесь способ сладок тем, что ему плевать на дистрибутив. Дебиан, Убунта, Слака, Гента... что угодно.
2 Aleksandr пишет...
когда задался такой задачей перепробовал множество всяких путей, остановился на вот таком: http://livebackup.sourceforge.net/
Тоже вариант, просто этот бэкапами не ограничивается.
2 AKbara пишет...
True-линуксоид: зачем использовать стандартные утилиты из репозиториев, если можно поизвращаться самому.
Не так: зачем использовать кривые недоделанные и недо-документированные поделия из дистрибутива, когда есть хороший и простой проект, позволяющий сделать тоже, но быстрее.
мой вариант не ограничен бэкапами - я как раз создавал live-cd для восстановления данных с поддержкой шифрованных разделов - благодаря поддержке юнионфс можно настроить инет соединение и поставить необходимые пакеты как-бы в этот лайфсд ;)
Думаю уместно будет дать такой линк:
http://iportnov.blogspot.com/2007/05/livecd.html
2 Aleksandr пишет...
мой вариант не ограничен бэкапами - я как раз создавал live-cd для восстановления данных с поддержкой шифрованных разделов
Занятно. Обязательно посмотрю на этот проект.
2 Vyazovoi пишет...
Думаю уместно будет дать такой линк:
Определённо - как же я мог забыть!?. Поправил. Спасибо.
Потрясающе! Вот разберусь с делами и буду экспериментировать) А-то сейчас даже на блог времени нету *(
Пипл - кто нибудь может ткнуть или написать доступным языком как поставить Юбунту на флешку чтоб грузилось ?
Был бы несказанно рад.
Если говорить о лив дисках в контексте Debian, то можно посмотреть вот сюда
кто-то спрашивал про про установку на USB
Гугль рулит непадецки =)
http://pendrivelinux.com/
2 энерджи пишет...
Потрясающе! Вот разберусь с делами и буду экспериментировать)
Мне тут кстати подсобил мой созданный LiveCD - помог восстановить и отчистить от червей и вирусни чахлую виндовую машину на работе. Думаю её перетащить в лабораторию под роутер :-)
2 Анонимный пишет...
Пипл - кто нибудь может ткнуть или написать доступным языком как поставить Юбунту на флешку чтоб грузилось?
В тех же ливскриптах это есть. Просто пост ещё не готов про это.
2 Анонимный пишет...
Если говорить о лив дисках в контексте Debian, то можно посмотреть вот сюда
О! Большое спасибо! Кстати, эта заметка в вики так и не вылезла мне при гуглеже по теме.
2 denvist пишет...
кто-то спрашивал про про установку на USB
Гугль рулит непадецки =)
Несомненно, но там предлагают скачать уже готовый образ, а тут можно залудить свой.
Вот и я озадачился живым Debian'ом... использовал live-helper из Lenny ( http://linuz.pp.ru/readarticle.php?article_id=22 )
если не останавливаться только на дебиане, можно скачать puppy linux ( 95 мб в последней версии), добавить по вкусу программ, локализовать(или дождаться выхода локализованной версии puppyRUS) и просто запустить программу установки на usb или cd
2 Belen пишет...
Вот и я озадачился живым Debian'ом... использовал live-helper из Lenny
Тоже мысль. У меня просто Этч, поэтому я его не использую. И вообще, эти скрипты мне понравились своей простотой - накидал в эмуляторе нужных программ, и вперёд.
2 magerlab пишет...
если не останавливаться только на дебиане
Да никто и не останавливается. Читайте пост внимательнее - там говорится о том, что этими скриптами сгенерировать можно что угодно. Пример с дебианом объясняется тем, что я им пользуюсь.
можно скачать puppy linux ( 95 мб в последней версии), добавить по вкусу программ, локализовать
Ээээ.. батенька... проблемы с локализацией - это прошлый век. Их быть не должно в принципе. В установленном Дебиане русский из коробки всюду и без косяков.
и просто запустить программу установки на usb или cd
Способ, конечно, неплох, но на любителя. Здесь смак в том, что изваять можно дистр хоть из дебиана, хоть из слаки или генты - да из чего угодно.
Возможно, вопрос немного не по теме, но все же - возможно с помощью qemu эмулировать работу процессоров иного производителя, нежели имеющееся в наличии, если конкретнее - есть потребность в создании LiveCD для компьютера на базе AMD, а в наличии только компьтер на базе Intel.
Не понял, а нельзя создать с минимальным набором пакетов ?
Если можно то нету списка какие пакеты можно удалить из образа этого ?
Отправить комментарий