Создание корневой файловой системы для будущего live cd.
Все операции должны происходить под пользователем root:
su root
или
sudo su
Создание директории:
mkdir ~/squashfs-root
Запуск debootstrap
«Debootstrap эта программа позволяет установить минимальную рабочую Debian-систему в указанный каталог, уже установленной системы. Она не требует установки CD, просто доступ к репозиторию Debian. Она также может быть установлена и запущена с другой операционной системы, так, например, вы можете использовать Debootstrap для установки Debian на неиспользуемый раздел с запущенной системы Linux. Она также может быть использована для создания корневой файловой системы для машин различной архитектуры»
Для установки наберите в консоли:
apt-get install debootstrap
Запуск:
debootstrap --arch=i386 squeeze ~/squashfs-root http://ftp.ua.debian.org/debian
--arch=i386 – архитектура системы amd64, armel, powerpc,armhf, i386, ia64, mips, mipsel
squeeze – название релиза Debian
~/squashfs-root – путь, куда устанавливается система
http://ftp.ua.debian.org/debian - адрес репозитория
Execute debootstrap I: Retrieving Release I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 I: Found additional base dependencies: libept1.4.12 libgcrypt11 libgnutls26 libgpg-error0 libidn11 libnfnetlink0 libp11-kit0 libsqlite3-0 libtasn1-3 libxapian22 I: Checking component main on http://ftp.ua.debian.org/debian... I: Retrieving libacl1 I: Validating libacl1 I: Retrieving adduser I: Validating adduser I: Retrieving apt I: Validating apt I: Retrieving apt-utils I: Validating apt-utils I: Retrieving libapt-inst1.5 I: Validating libapt-inst1.5 I: Retrieving libapt-pkg4.12 I: Validating libapt-pkg4.12 I: Retrieving aptitude I: Validating aptitude I: Retrieving aptitude-common I: Validating aptitude-common I: Retrieving libattr1 I: Validating libattr1 I: Retrieving base-files I: Validating base-files I: Retrieving base-passwd I: Validating base-passwd ...... I: Configuring whiptail... I: Configuring ifupdown... I: Configuring kmod... I: Configuring libapt-pkg4.12:i386... I: Configuring libept1.4.12... I: Configuring libapt-inst1.5:i386... I: Configuring libreadline6:i386... I: Configuring logrotate... I: Configuring libboost-iostreams1.49.0... I: Configuring groff-base... I: Configuring gnupg... I: Configuring libsigc++-2.0-0c2a:i386... I: Configuring libgnutls26:i386... I: Configuring apt-utils... I: Configuring udev... I: Configuring iptables... I: Configuring man-db... I: Configuring apt... I: Configuring wget... I: Configuring libcwidget3... I: Configuring aptitude... I: Configuring tasksel... I: Configuring tasksel-data... I: Base system installed successfully.
Монтирование виртуальных файловых систем
После завершения установки для правильного функционирования основных программ необходимо примонтировать следующие файловые системы:
mount -t proc none ~/squashfs-root/proc
procfs — виртуальная файловая система, используемая в UNIX-подобных операционных системах, позволяет получить доступ к информации о системных процессах из ядра, она необходима для выполнения таких команд как ps, w, top.
mount -o bind /dev ~/squashfs-root/dev
dev - директория в системах типа UNIX, содержащая специальные файлы — интерфейсы работы с драйверами ядра.
mount -t devpts devpts ~/squashfs-root/dev/pts
devtps - виртуальная файловая система обеспечивает доступ к псевдо терминалам (pty).
mount -t sysfs none ~/squashfs-root/sys
sysfs — виртуальная файловая система в операционной системе Linux. Экспортирует в пространство пользователя информацию ядра Linux о присутствующих в системе устройствах и драйверах.
Настройка базовой системы
Для последующей настройки и инсталляции пакетов необходимо войти в среду chroot.
LANG=C HOME=/root chroot ~/squashfs-root
Изменить имя хоста в файле /etc/hostname, так как сейчас оно совпадает с именем основной системы:
echo "debian" > /etc/hostname
Настройка часового пояса
По умолчанию UTC:
dpkg-reconfigure tzdata
Настройка Apt
Содержимое файла /etc/apt/sources.list:
deb http://ftp.us.debian.org/debian squeeze main deb-src http://ftp.us.debian.org/debian squeeze main deb http://security.debian.org squeeze/updates main deb-src http://security.debian.org squeeze/updates main
apt-get update
Настройка раскладки клавиатуры и локалей
Чтобы использовать язык, отличный от английского, нужно настроить локаль. Для этого установите пакет поддержки locales.
apt-get install locales
dpkg-reconfigure locales
Выберете нужные вам локали из списка, рекомендуется использовать UTF-8 локали: например en_US.UTF8 и ru_RU.UTF8.
Проверить какие локали стоят можно командой locale –a - на экране увидите список локалей доступных для использования.
Поддержка кириллицы в консоли:
apt-get install console-cyrillic
dpkg-reconfigure console-cyrillic
Настройка раскладки клавиатуры:
apt-get install console-data
dpkg-reconfigure console-data
Установка ядра
Определите доступные пакеты с ядрами с помощью:
apt-cache search linux-image
из списка выбираем то что нам нужно
linux-image-486 – Linux for old PCs (meta-package)
linux-image-686 – Linux for modern PCs (meta-package)
……..
Установите пакет с ядром, указав подходящий вариант например:
apt-get install linux-image-486
Установка скриптов для запуска с диска
live-boot содержит сценарии для настройки системы Debian Live во время её загрузки (на раннем этапе).
apt-get install live-boot
live-config содержит сценарии для настройки системы Debian Live во время загрузки (на позднем этапе настройки окружения пользователя).
apt-get install live-config
Установка X-сервера
Программы xinit и startx выполняют запуск X-сервера и загрузку базового X-сеанса.
apt-get install xinit
Русские фонты:
apt-get install xfonts-cyrillic
Установка оконного менеджера.
IceWm -- это менеджер окон для X Window System. Он быстр, использует мало памяти и может выглядеть как Windows'95, OS/2 Warp 3,4 и Motif. В него включены все лучшие возможности перечисленных выше систем. Также он поддерживает несколько рабочих областей, отображение окон при перетаскивании/изменении, панель задач, список окон, состояние почтового ящика, цифровой вид часов.
apt-get install icewm
если не нравится этот WM можно поставить любой другой.
AfterStep, Awesome, Blackbox, dwm, Enlightenment, Fluxbox, FVWM, JWM, KWin, MWM, Openbox, twm, xmonad … и др.
Остальной набор пакетов зависит от задач, для которых собирается такой Live-CD
Например, можно использовать для построения роутера, сервер видео наблюдения, DHCP сервер, восстановление других систем Linux и Windows и т.д.
Выход из chroot окружения
После установки программ необходимо очистить кэш пакетов
apt-get clean
Также очистить директории временных файлов
rm -rf /tmp/*
rm -rf /var/tmp/*
Выйти из chroot
exit
Теперь отмонтируйте виртуальные файловые системы
umount ~/squashfs-root/dev/pts -l
umount ~/squashfs-root/dev -l
umount ~/squashfs-root/proc -l
umount ~/squashfs-root/sys -l
Создание образа squashfs
Squashfs (.sfs) — сжимающая файловая система для GNU/Linux, предоставляющая доступ к данным в режиме «только для чтения».
Squashfs используется Live CD дистрибутивами Debian, Gentoo, Ubuntu, Fedora, а также во встраиваемых дистрибутивах, таких как прошивки маршрутизаторов OpenWRT и DD-WRT.
Для установки наберите в консоли:
apt-get install squashfs-tools
Запуск mksquashfs
mksquashfs ~/squashfs-root ~/filesystem.squashfs -noappend
~/squashfs-root – директория с файловой системой
~/filesystem.squashfs – путь и имя файла сжатой файловой системы
-noappend – не добавлять к существующей системе
Создание образа ISO и загрузчика
SYSLINUX Project — набор загрузчиков ядра Linux (автор H. Peter Anvin), состоит из нескольких отдельных загрузчиков.
Список загрузчиков в SYSLINUX Project
syslinux, использующийся для загрузки с FAT, FAT32, NTFS
isolinux, для загрузки с iso9660
pxelinux, для загрузки по PXE
extlinux, для загрузки с ext2/ext3/ext4 или btrfs
Скачиваем нужную версию syslinux:
cd ~/ wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz --no-check-certificate tar -xvf syslinux-4.05.tar.gz mkdir iso mkdir iso/isolinux mkdir iso/live cp syslinux-4.05/core/isolinux.bin iso/isolinux/isolinux.bin cp syslinux-4.05/com32/menu/vesamenu.c32 iso/isolinux/vesamenu.c32 touch iso/isolinux/isolinux.cfg nano iso/isolinux/isolinux.cfg
Содержимое файла iso/isolinux/isolinux.cfg
default /isolinux/vesamenu.c32 #Это путь к файла модуля меню при его указании появляются широкие возможности для оформления меню. menu title Linux live boot # указание заголовка меню #описание цветов элемнтов menu background #1F45A5 menu color title 1 #ffffff #000000 std menu color sel 0 #ffffff #000000 std menu color unsel 0 #aaaaaa prompt 0 # Индекс выбранного по умолчанию пункта меню начинается с 0. timeout 30 #Таймаут по истечении которого автоматически начинается загрузка пункта по умолчанию. label live menu label Debian Live Ru kernel /live/vmlinuz append initrd=/live/initrd.img boot=live config quiet locales=ru_RU.UTF-8 username=andy keyb=us,ru klayout=us koptions=grp:alt_shift_toggle
Копируем ранее созданный образ filesystem.squashfs
cp filesystem.squashfs iso/live/filesystem.squashfs
Далее копируем initrd.img
Initrd (сокращение от англ. Initial RAM Disk, диск в оперативной памяти для начальной инициализации) — временная файловая система, используемая ядром Linux при начальной загрузке. Initrd обычно используется для начальной инициализации перед монтированием «настоящих» файловых систем.
cp squashfs-root/boot/initrd.img-2.6.32-5-486 iso/live/initrd.img
и ядро
cp squashfs-root/boot/vmlinuz-2.6.32-5-486 iso/live/vmlinuz
Создание образа iso
GenIsoImage - программа, предназначення для создания образов файловых систем ISO-9660 CD-ROM (или просто: iso-образ). Созданный образ впоследствии может быть записан на CD или DVD с помощью соответствующим программ (например, wodim или k3b). http://debianworld.ru/articles/genisoimage-sozdanie-obrazov-fajlovyh-sistem-cdrom-iso-9660/
Установка:
apt-get install genisoimage
Использование:
mkisofs -r -V “Linux_live” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-live.iso iso/
или
genisoimage -r -V “Linux_live” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-live.iso iso/
-r - Устанавливают биты чтения на всех файлах, так что все каталоги и файлы читаемы для всех. Если хотя бы для одного файла был установлен бит исполнения, то они ставятся на все файлы. Если хотя бы на одном каталоге был определен бит поиска, то они ставятся на все каталоги, так что везде можно будет осуществлять поиск. Все биты записи сбрасываются, так как в любом случае CD-Rom будет подключен в режиме только-для-чтения.
-V - Определяет идентификатор тома ID (имя, метка) для записи в главный блок.
-cache-inodes - Кэшировать номера записей inode и устройств для указания жестких ссылок на файлы. Если mkisofs обнаружит жесткую ссылку (файл с несколькими именами), то такой файл на диске присутствовать будет только в одном экземпляре. Это позволит экономить место. Опция -cache-inodes активна по умолчанию на всех UNIX-подобных операционных системах. Будьте осторожны при использовании этой опции на файловой системе без уникальных номеров записей inode, так как это приведет к записи файлов на диске, содержащих некорректную информацию.
-J - Создает записи каталогов Joliet в дополнение к обычным именам файлов iso9660. Очень полезно для дисков, используемых на машинах Windows-NT или Windows-95. Имена файлов Joliet указаны в уникоде и каждый компонент имени пути может быть длиной до 64 символа уникода. Заметим, что Joliet не является стандартом - компакт диски, использующие только расширения Joliet, а не стандартные методы Rock Ridge обычно используются только на системе Win32 от Microsoft. Более того - то, что имена файлов ограничены до 64 символов и то, что Joliet использует кодировку UTF-16 для символов уникода, вносит серьезные проблемы при взаимодействии с разными системами.
-l - Разрешает полные имена файлов длиной 31 символ. Обычно это имена ISO9660 в формате 8.3, совместимые с MS-DOS, с учетом того, что стандарт ISO9660 вообще допускает имена файлов до 31 символа. Если вы используете эту опцию, то диск будет сложно использовать в системе MS-DOS, но на других системах все будет в порядке (например, на Amiga).
-b isolinux/isolinux.bin - Определяет путь и имя файлы образа загрузки для создания загрузочного диска "El Torito". Путь должен быть относителен исходного пути, указанного в mkisofs. Эта опция требуется для создания загрузочных компакт дисков "El Torito". Образ загрузки должен иметь точный размер 1.2, 1.44 или 2.88 Мб флоппи дисков, а mkisofs будет использовать этот размер при создании файловой системы iso9660. Предполагается, что первые 512 байтов сектора должны считываться с загрузочного образа (обычно эмулируется простая флоппи дискета).
-c isolinux/boot.cat - Определяет путь и имя файла каталога загрузки, испольуземого при создании загрузочного диска "El Torito". Путь должен быть указан относительно исходного пути запуска mkisofs. Эта опция требуется для создания загрузочного диска. Этот файл будет вставлен в получаемое дерево, а не будет создан в исходной файловой системе, поэтому убедитесь, чтобы его имя не конфликтовало с уже существующим файлом, который в таком случае будет удален. Обычно выбирают имя "boot.catalog".
-no-emul-boot - Определяет, что используемый образ загрузки для создания загрузочного диска "El Torito" является образом без эмуляции ('no emulation'). Система будет загружать и исполнять этот образ, не выполняя никаких операций по эмуляции диска.
-boot-load-size 4 - Определяет номер "виртуальных" (по 512 байт) секторов для загрузки в режиме без эмуляции. По умолчанию загружается весь файл загрузки целиком. Некоторые BIOS могут воспринимать их с ошибкой, если их количество не будет кратно 4.
-boot-info-table - Определяет, что таблица размером в 56 байт с информацией о разметке компакт диска будет исправлена по сдвигу шаблона 8 в файле загрузки. Если задана эта опция, то файл загрузки изменяется прямо в исходной файловой системе, так что убедитесь, что у вас есть копия этого файла.
-o debian-live.iso - Имя файла, куда будет записываться образ файловой системы iso9660.
iso/ - корневой каталог компакт диска.
Запись образа на диск
Теперь можно записать диск да CD-RW или DVD-RW
cdrecord –scanbus 1,0,0 100) ‘NEC’ ‘NEC IDE CDR10’ ‘1.00’ 1,1,0 101) * cdrecord -v -eject speed=4 dev=1,0,0 debian-live.iso