| Делаем загрузочный CD с Linux. - multik (02-Mar-2001, 15:43) |
| 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::sysinit:/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, размер - чтоб влезло все необходимое :) Набор подбираем экспериментально (для этого очень полезен перезаписываемый 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 Загружаемся ? :) (c) Ilia Pavlenko ilia@xtra.co.nz |
|
Авторское право |
|
| (c) 2001 SWsoft Pte Ltd. | |