Создаём свой загрузочный диск LiveCD Debian

    image

    Решил поделиться сим знанием. Всё это я сам собрал в интернете. Опробовал и удостоверился, что оно работает. Дам немного комментариев к этой инструкции, чтобы было понятнее.

    Начну с того, что свой загрузочный cd диск хотел создать давно, но руки не доходили. Обычно я просто обходился дампом системы, если хотелось сделать копию рабочей. Но каждый раз делать всё руками — руки отсохнут. Тем более, что не каждому объяснишь как сделать копию системы, как разбить и отформатировать диск, сделать диск загрузочным. Не у всех, знаете ли, есть рабочий линукс под рукой. Ну вот руки то мои взмолились и надоело всё делать по шпаргалкам — детсад ей богу.

    Перейдем к практике. Установим эти замечательные пакеты.

    apt-get install xorriso live-build extlinux syslinux squashfs-tools
    


    xorriso для создания загрузочного образа
    syslinux, extlinux для использования mbr загрузки
    squashfs-tools для создание сжатой файловой системы
    live-build для создания самой системы, которая будет зажата и помещена в образ iso

    Создаем каталог для образа и распаковываем минимальную систему повыбранной архитектуре. chroot — это корневая папка, где ибудет образ.

    mkdir ~/livework && cd ~/livework
    debootstrap --arch=i386 wheezy chroot
    


    Далее чрутимся, монтируем для эмуляции рабочей системы необходимые каталоги. Для генерации UUID устанавливаем dbus-uuidgen. Далее ставим ядро и необходимые утилиты для live загрузки. Ну и далее себе ни в чем не отказываем, устанавливаем всё что хочется. Можно и иксы установить и сделать автозагрузку этих иксов под пользователем или рутом. Позже, когда вы уже сделаете диск, его можно протестировать на виртуалке и если что не нравится тут же переделать войдя чрутом в папку chroot.

    cd ~/livework
    chroot chroot
    mount none -t proc /proc
    mount none -t sysfs /sys
    mount none -t devpts /dev/pts
    export HOME=/root
    export LC_ALL=C
    apt-get install dialog dbus
    dbus-uuidgen > /var/lib/dbus/machine-id
    apt-get install linux-image-686 live-boot
    apt-get install dump bzip2 mc icewm ....
    passwd
    apt-get clean
    rm /var/lib/dbus/machine-id && rm -rf /tmp/*
    umount /proc /sys /dev/pts
    exit
    


    Короче, образ системы мы создали. Далее создаем папку для live загрузчика. Копируем в нее vmlinuz и inird ядра вашей созданной системы. И создаём сжатую файловую ситему из папки chroot

    mkdir -p binary/live && mkdir -p binary/isolinux
    cp chroot/boot/vmlinuz-* binary/live/vmlinuz
    cp chroot/boot/initrd.img-* binary/live/initrd
    mksquashfs chroot binary/live/filesystem.squashfs -e boot
    


    Далее копируем файлы, необходимые для загрузки с CD, редактируем меню загрузки.

    cp /usr/lib/syslinux/isolinux.bin binary/isolinux/.
    cp /usr/lib/syslinux/menu.c32 binary/isolinux/.
    nano binary/isolinux/isolinux.cfg
    ui menu.c32
    prompt 0
    menu title Boot Menu
    timeout 300
    
    label live-686
    	menu label ^Live (686)
    	menu default
    	linux /live/vmlinuz
     	append initrd=/live/initrd boot=live persistence quiet
    
    label live-686-failsafe
    	menu label ^Live (686 failsafe)
    	linux /live/vmlinuz
    	append initrd=/live/initrd boot=live persistence config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
    
    endtext
    


    Всё, готово! Теперь только осталось создать образ диска.

    xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin -partition_offset 16 -A "Debian Live"  -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o remaster.iso binary
    


    Когда вы во второй раз начнете собирать диск, то удалите файл binary/live/filesystem.squashfs, иначе комп будет долго выяснять чего же нужно добавить в гигабайтный архив. А вы будете нервничать, почесывая затылок вожидании нового ребилда.
    У меня в папке livework лежит скрипт, который я запускаю, когда хочу пересоздать диск.

    rm binary/live/filesystem.squashfs
    mksquashfs chroot binary/live/filesystem.squashfs -e boot
    xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin -partition_offset 16 -A "Debian Live"  -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o install.iso binary
    


    Если вы хотите тот-же образ системы сделать на флешке, то нет ничего проще.
    Разница только в том, что вам не надо создавать образ диска, а вместо этого нужно пометить раздел с системой загрузочным (fdisk) и записать в загрузочную область диска mbr. Ну и для загрузки использовать extlinux вместо isolinux, если у вас раздел отформатирован в EXT. В примере диск /dev/sda, а в /mnt примонтирован образ системы

    extlinux -i /mnt && cat /usr/lib/extlinux/mbr.bin > /dev/sda
    cp /usr/lib/extlinux/*.c32 /mnt && cp /usr/lib/syslinux/vesamenu.c32 
    


    Меню загрузки можно скопировать с вашего ISO образа но в другой файл, так как теперь у вас не ISO а EXT.

    cp isolinux/isolinux.cfg /mnt/extlinux.conf
    


    Чуть отойду от темы. Лайв ISO образ хорош тем, что он стабилен и не изменяем. Плохо же, что он грузит оперативку. Если вы хотите освободится от сжатого образа, то загрузка у вас изменится. Итак, в случае, если у нас есть НЕ сжатый образ системы и мы хотим просто прописать его загрузку, то пишем такой конфиг.
    nano /mnt/extlinux.conf
    


    Содержимое файла. Тут ###uuid### замените на ваш или вообще впишите root=/dev/sda1, например.
    До ядра пишется полный путь, ссылки не канают. Повторюсь, тут мы отошли немного от темы, конфиг нужен не для сжатой системы, а для обычной.

    ui vesamenu.c32
    prompt 0
    timeout 300
    
    menu title Boot Zagruzka
    menu color title 1;33;44
    menu color sel 7;37;40
    menu color unsel 33;44
    menu color border 33;44
    label Linux-Debian-686
            kernel /boot/vmlinuz-3.2.0-0.bpo.2-686-pae
            append initrd=/boot/initrd.img-3.2.0-0.bpo.2-686-pae root=UUID=###uuid### ro quiet
    
    label Linux-Debian-686 (rescue mode)
            kernel /boot/vmlinuz-3.2.0-0.bpo.2-686-pae
            append initrd=/boot/initrd.img-3.2.0-0.bpo.2-686-pae root=UUID=###uuid### ro single
    


    Ну и собственно, возвращаясь к сжатой системе LiveCD, копируем папку на диск со сжатой файловой системой.

    cp -R live /mnt
    


    Надеюсь, ничего не напутал.
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 14
    • 0
      Сначала подумал, что ошибся страничкой и попал на какую-то старенькую статью :) Вы реально считаете, жечь CD-диски актуально в 2014 году?
      debootstrap --arch=i386 wheezy chroot

      ну правда, вы серьезно?
      • +2
        А вы как устанавливаете linux? Нет, правда, вы не начинаете со скачивания ISO образа? Мож я отстал, но делаю всегда так.
        • 0
          ну я ничего не имею против стардарта ISO, как такового, меня смутило другое:
          Начну с того, что свой загрузочный cd диск хотел создать давно, но руки не доходили.

          жечь CD-диски, конечно, Ваше право, но это уже нечно неактуально бы сказал…
          • +3
            Не всегда. На старенький ноут я не смог установить Убунту-сервер с флэшки. Пришлось жечь диск.
            • 0
              ну вариантов здесь на самом деле много, даже для стареньких ноутов, при которых ничего жечь не надо:
              — залить образ сразу через dd на жесткий диск, при загрузке там с большой вероятностью много что заведется
              — бутнуться по пикси, которую поднимаете в этой же сети на другом компьютере
              — загрузиться с любого какого-то старого линухового диска и уже по сети замонтировать себе FS и залить туда все что нужно, после чего просетапить себе какой-то груб
              — подключить винт с ноута, например, в виртуалку, перед этим замонтировав iso в виртуальный привод, и просетапить себе систему там
              P.S. если все же в ноуте есть USB, то загрузиться с флешки там вероятность почти 90%, т.к. основная проблема состоит только в том, чтоб правильно залить этот самый образ на флешку и правильно отконфигурить BIOS, исключения конечно бывают, но очень редко.

              • 0
                Старенькие ноуты в большинстве имеют интерфейс IDE, а новые мат. платы его не имеют, так что отпадают варианты:
                — залить образ сразу через dd на жесткий диск, при загрузке там с большой вероятностью много что заведется
                — подключить винт с ноута, например, в виртуалку, перед этим замонтировав iso в виртуальный привод, и просетапить себе систему там.
                Так же старый ноут может не поддерживать загрузку по сети, отпадает вариант:
                — бутнуться по пикси, которую поднимаете в этой же сети на другом компьютере.
                итого остается вариант:
                — загрузиться с любого какого-то старого линухового диска и уже по сети замонтировать себе FS и залить туда все что нужно, после чего просетапить себе какой-то груб

                Другое дело — автор не написал зачем оно надо, если есть куча LiveCD на любой вкус и цвет. Даже при надобности специфического софта, можно обойтись без создания собственного LiveCD.
                • +2
                  >Другое дело — автор не написал зачем оно надо, если есть куча LiveCD на любой вкус и цвет. Даже при надобности специфического софта, можно обойтись без создания собственного LiveCD.

                  Тот же Kali Linux имеет в себе столько всего, что большинству вряд ли когда нибудь пригодиться, тем не менее очень приятно знать, что практически для любой задачи там есть инструмент.
                  • 0
                    — подключить винт с ноута, например, в виртуалку, перед этим замонтировав iso в виртуальный привод, и просетапить себе систему там.
                    Переходники IDE-USB легко купить (agestar около 500р в Москве или заказать из Китая, дешевле и выбор больше) или найти у знакомых, интересующихся старой техникой. Это довольно удобный вариант, если нужен более чем на один раз.
                  • +1
                    Точно! Я то думаю, что не так. Я не написал зачем это нужно было! Исправляюсь, это нужно для написания собственного инсталлятора некоторого образа системы с разбивкой, форматированием и настройками этого образа. Ну например готовая рабочая система для офисного рабочего места, со всеми установками рабочего стола, набором программ, настроенными принтерами, сетевыми дисками и т.д.
                • +3
                  Для меня актуально жечь диски. Это быстрее чем выкручивать жесткие диски на старых компах. Но тут вы правы, это редкость. Однако суть поста, если вы его дочитали, это не создание диска, а создание ISO образа. А хотите, записывайте егохоть на флешку. И согласитесь, если я выложу для скачивания дамп или архив системы, не каждому будет понятно что с этим делать.
                  • –3
                    Мы же на хабре, а не в ВК каком нибудь
              • +2
                Был у нас не так давно проект, который требовал наличия в фабриках по всей евразии одновременного наличия конкретного оборудования. Разово (на 2-3 часа), но начало согласования мероприятия — полгода до старта, соответственно, месяца за два должно было быть всё утверждено, деньги выплачены, и оборудование отправлено. Но проволОчка клиента в сроках согласования повлекла за собой невозможность (если точнее, то очень высокий риск) отправки. Оборудование представляло собой мини-компьютер с определенным установленным ПО (Ubuntu+фишки).

                Выход был найден — сделали шаблонную мастер-систему, слили её (настроенную) посредством Remastersys на диск, и отправили всем образ этого диска. Дальнейшая настройка происходила программой по IP после подключения к сети. Ну то есть, каждый админ на месте грузит свою машину с диска, и получает идентичную со всеми систему, которая подгружает индивидуальные настройки уже по интернету. Заработали неплохо денег за счет отпавшей необходимости отправлять с десяток коробок, а клиент был только рад, что не кинули и всё сделали в ограниченные сроки.

                Так вот процесс создания рабочего диска занял порядка трех дней. Статей нормальных по этой теме было немного, но еще меньше рабочих (возможно, ввиду быстрого устаревания дистрибутивов). Возможно, эта статья сэкономила бы нам немного времени и нервов).

                Ну и неоспоримый плюс дисков Linux — разово оттестить какую-нибудь фишку или железку на новом (старом) чистом дистрибутиве. Ну или какую-то дремучую версию своего ПО в совокупности с такой же древней осью, три года назад залитую на LiveCD, которая еще где-то там стоит и работает с аптаймом в три года, протестировать на взаимодействие с текущей инфраструктурой. Тут по удобству использования диски+USB привод всё еще на шаг впереди флешек, записал, протестил, и положил в стопочку.
              • +1
                Зачем ставить live-build, если он почти не используется?

                Вместо всего этого можно использовать lb config и lb build, а они всё создадут сами и будут изменять при необходимости:
                мануал
                По ссылке краткий пример, а вообще l-b умеет много интересного.

                P.S.: такие билды очень удобны для копирования на USB.
                • 0
                  И действительно, очень полезная ссылка. Беру на заметку!

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.