главная пошаговое создание livecd что такое linux ISO образы
Операционная система с графическим интерфейсом
На главнуюКонтактыКарта сайта
Полезное


 

ДОБРО ПОЖАЛОВАТЬ


Cборка загрузочного Live-CD

Cборка загрузочного CD c “live"-системой:

1) собираем ядро с вкомпилеными опциями:

Block Devices –> RAM disk support, –> Initial RAM disk (initrd) support ну естественно ext2 поддержка и вся фигня типа нетворк модулей и что там еще пригодится, в зависимости от будущего применения диска.

2) создаем дерево каталогов будущего CD:
/tmp/CD/
/tmp/CD/.boot
/tmp/CD/live

а также временные точки для монтирования образов:
/mnt/BOOT
/mnt/INITRD
/mnt/BIN
/mnt/SBIN
/mnt/USR
/mnt/LIB

3) создаем заготовку “boot-floppy” (загрузочный CDROM в процессе загрузки изображает из себя флоп.. это BIOS-овы заморочки…)

dd if=/dev/zero of=/tmp/CD/.boot/boot.img bs=512 count=5760
mkfs.ext2 /tmp/CD/.boot/boot.img
mount -o loop /tmp/CD/.boot/boot.img /mnt/BOOT
mkdir /mnt/BOOT/boot
mkdir /mnt/BOOT/dev

4) копируем ядро
cp vmlinuz /mnt/BOOT
и загрузочный сектор:
cp /boot/boot.b /mnt/BOOT/boot/boot.b

копируем в /mnt/BOOT/dev необходимые девайсы: /dev/fd0, fd0E2880,
fd0H1440, loop0-loop8, mem, null, ram, ram0, ram1…, tty, tty0,tty1,tty2
- все рабочие девайсы не надо копировать СЮДА, их поместим внутрь
ramdisk’а.

5) готовим ramdisk: dd if=/dev/zero of=/tmp/initrd count=3072 (размер подобрать экспериментально чтоб в за-gzip-енном виде влезло вместе с ядром на 2.88Mb)

mkfs.ext2 /tmp/initrd
mount -o loop /tmp/initrd /mnt/INITRD
cd /mnt/INITRD
mkdir etc bin sbin tmp var cdrom dev lib mnt proc root usr

далее, выясняем какие библиотечки нужны с помошью ldd :

ldd /bin/bash , ldd /sbin/init и тп, копируем эти библиотеки в /mnt/INITRD/lib, из программ нужно:

getty (agetty или чего там)
init,telinit,runlevel
sh (ash, bash или какую там шелл предпочитаете)
cmp
mkdir
mke2fs
mkfifo
mknod
mkswap
mount,umount
reset,tset
swapon,swapoff
hostname

все это дело кидаем в bin, делаешь симлинки sbin –> bin,
usr/bin –> bin, usr/sbin –> bin.

Потом в /mnt/INITRD/etc создаем inittab, fstab, rc (необходимо) и по желанию - другие конфигуряшки для авариййно-спасательного диска. в inittab пишем:

id:2:initdefault:
si: ysinit:/etc/rc
g1:2345:respawn:/sbin/getty 9600 tty1
g2:23:respawn:/sbin/getty 9600 tty2
g3:23:respawn:/sbin/getty 38400 tty3
g4:23:respawn:/sbin/getty 38400 tty4

В rc:

#!/bin/sh
/bin/mke2fs /dev/ram1
/bin/mount -av
/bin/hostname emergency
/usr/bin/tset linux
/etc/rc.d/rc.modules
/etc/rc.d/rc.network
echo
echo “==================================”
echo “Welcome to EMERGENCY RESCUE system”
echo “==================================”
echo
/bin/mount /dev/ram1

в fstab:

/dev/ram0 / ext2 defaults 0 0
/dev/fd0 / ext2 defaults 0 0
/proc /proc proc defaults 0 0
/dev/cdrom /cdrom iso9660 ro,user 0 0
/cdrom/live/lib.img /lib ext2 ro,loop 0 0
/cdrom/live/sbin.img /sbin ext2 ro,loop 0 0
/cdrom/live/bin.img /bin ext2 ro,loop 0 0
/cdrom/live/usr.img /usr ext2 ro,loop 0 0
/dev/ram1 /tmp ext2 defaults 0 0

как можно заметить в вышеприведенных конфигах монтируются файлы *.img - в них-то мы и кладем аварийные и спасательные примочки. Создаем файлы-образы с помощью dd, размер - чтоб влезло все необходимое Hабор подбираем экспериментально (для этого очень полезен перезаписываемый
CD-rewritable).

далее.. собрав в /mnt/INITRD рамдиск, отмонтируем его, гзипуем и кладем в /mnt/BOOT. Потом создаем /tmp/lilo.conf и в него пишем:

#lba32
vga = 0x030A
compact
message=/mnt/BOOT/boot/message
boot = /dev/loop0
disk = /dev/loop0
bios = 0x00
sectors = 36
heads = 2
cylinders = 80
install = /mnt/BOOT/boot/boot.b
backup = /dev/null
map = /mnt/BOOT/boot/map
timeout = 150
read-write
image = /mnt/BOOT/vmlinuz
initrd = /mnt/BOOT/initrd.gz
read-only
append="ramdisk_size=8192 load_ramdisk=1?
root = /dev/ram0

потом говорим
lilo -C /tmp/lilo.conf
он нам отвечает
added *vmlinuz
после этого отмонтируем /mnt/BOOT, идем в директорию /mnt/CD и делаем
образ cdrom-a:
mkisofs -o /tmp/image.iso -R -V"BOOT” -v -a -T -d -D -N
-b .boot/boot.img -c .boot/boot.b /mnt/CD

прожигаем диск (односессионный):
cdrecord -v -speed=4 dev=0,0,0 -eject /tmp/image.iso

Загружаемся