Создание корневой файловой системы для будущего live cd.
Все операции должны происходить под пользователем root:
suroot
или
sudosu
Создание директории:
mkdir ~/squashfs-root
Запуск debootstrap
«Debootstrap эта программа позволяет установить минимальную рабочую Debian-систему в указанный каталог, уже установленной системы. Она не требует установки CD, просто доступ к репозиторию Debian. Она также может быть установлена и запущена с другой операционной системы, так, например, вы можете использовать Debootstrap для установки Debian на неиспользуемый раздел с запущенной системы Linux. Она также может быть использована для создания корневой файловой системы для машин различной архитектуры»
После завершения установки для правильного функционирования основных программ необходимо примонтировать следующие файловые системы:
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-getupdate
Настройка раскладки клавиатуры и локалей
Чтобы использовать язык, отличный от английского, нужно настроить локаль. Для этого установите пакет поддержки 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-cachesearchlinux-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-getinstalllive-boot
live-config содержит сценарии для настройки системы Debian Live во время загрузки (на позднем этапе настройки окружения пользователя).
apt-get install live-config
Установка X-сервера
Программы xinit и startx выполняют запуск X-сервера и загрузку базового X-сеанса.
apt-get install xinit
Русские фонты:
apt-getinstallxfonts-cyrillic
Установка оконного менеджера.
IceWm -- это менеджер окон для X Window System. Он быстр, использует мало памяти и может выглядеть как Windows'95, OS/2 Warp 3,4 и Motif. В него включены все лучшие возможности перечисленных выше систем. Также он поддерживает несколько рабочих областей, отображение окон при перетаскивании/изменении, панель задач, список окон, состояние почтового ящика, цифровой вид часов.
apt-getinstallicewm
если не нравится этот WM можно поставить любой другой.
AfterStep, Awesome, Blackbox, dwm, Enlightenment, Fluxbox, FVWM, JWM, KWin, MWM, Openbox, twm, xmonad … и др.
Остальной набор пакетов зависит от задач, для которых собирается такой Live-CD
Например, можно использовать для построения роутера, сервер видео наблюдения, DHCP сервер, восстановление других систем Linux и Windows и т.д.
Выход из chroot окружения
После установки программ необходимо очистить кэш пакетов
apt-getclean
Также очистить директории временных файлов
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.
~/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
Initrd (сокращение от англ. InitialRAMDisk, диск в оперативной памяти для начальной инициализации) — временная файловая система, используемая ядром Linux при начальной загрузке. Initrd обычно используется для начальной инициализации перед монтированием «настоящих» файловых систем.
-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 байтов сектора должны считываться с загрузочного образа (обычно эмулируется простая флоппи дискета).
-cisolinux/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.