Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web development, networking and server security. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Як зрабіць віртуальны дыск

Original on http://www.lissot.net/partition/ramdisk.html

Tony Lissot
Версія 1.1, 23 лютага 2001
ram disk eenie-weenie HOWTO



Калі ваша каранёвая файлавая сістэма на прыладзе, для якога ядро не мае скампіляваных драйвераў, вы павінны будзеце выкарыстоўваць lilo каб загрузіць драйвер відэакарты як модуль у самым пачатку загрузкі цыклу. Ёсць толькі два кроку:
  1. зрабіць выяву дыска ram з mkinitrd
  2. змяніць lilo.conf, каб паказаць на малюнку
Па-першае, я CD да /boot:
System.map		 chain.b		  module-info-2.2.16-3ext3
System.map-2.2.16-3	 initrd-2.2.16-3.img	  vmlinux-2.2.16-3
System.map-2.2.16-3ext3  vmlinux-2.2.16-3ext3
vmlinuz                  kernel.h		  
boot.b			 map			  vmlinuz-2.2.16-3
module-info		 vmlinuz-2.2.16-3ext3     module-info-2.2.16-3
		 

Тут вы можаце бачыць, што ў мяне 2.2.16-3 ядро і я дадаў другое ядро з падтрымкай ext3 (vmlinuz-2.2.16-3ext3). Існуе ўжо выява дыска памяці для майго першага ядра (initrd-2.2.16-3.img)

Каб зрабіць новую выяву для другога ядра, я ўвядзіце наступную каманду (матэрыял, які я тыпу вылучаны тоўстым шрыфтам):

/boot# mkinitrd initrd-2.2.16-3ext3.img 2.2.16-3ext3

mkinitrd з'яўляецца shellscript, які глядзіць на модулі, неабходныя маё ядро, а затым робіць файлавай сістэмы ext2, іх утрымоўвалых.
Калі мы паглядзім на малюнак мы бачым гэта так:
/boot# cat initrd-2.2.16-3ext3.img | gunzip > /tmp/myimage
/boot# file /tmp/myimage
/tmp/myimage: Linux/i386 ext2 filesystem
Вы не павінны глядзець унутр малюнкі. Толькі робячы малюнак і змены lilo.conf неабходныя крокі. Тым не менш, абмеркаванне RamDisk малюнкі прызначаны для педагагічных мэт.

Для таго, каб зазірнуць унутр, мне трэба змантаваць выяву, як быццам гэта файлавая сістэма:

/boot# mount /tmp/myimage /mnt/tmp -t ext2 -o loop=/dev/loop3
/boot# ls /mnt/tmp
bin  dev  etc  lib  linuxrc

/boot# find /mnt/tmp

/mnt/tmp
/mnt/tmp/lib
/mnt/tmp/lib/aic7xxx.o
/mnt/tmp/bin
/mnt/tmp/bin/sh
/mnt/tmp/bin/insmod
/mnt/tmp/etc
/mnt/tmp/dev
/mnt/tmp/dev/console
/mnt/tmp/dev/null
/mnt/tmp/dev/ram
/mnt/tmp/dev/systty
/mnt/tmp/dev/tty1
/mnt/tmp/dev/tty2
/mnt/tmp/dev/tty3
/mnt/tmp/dev/tty4
/mnt/tmp/linuxrc
Найболей важнай часткай гэтай выявы дыска ram aic7xxx.o, які з'яўляецца маім SCSI модуля.

Нарэшце, я пераходжу да апошняга кроку, змена /etc/lilo.conf:

Вось мой запіс у lilo.conf, што адпавядае ядро і выява, які я толькі што стварылі:
   image=/boot/vmlinuz-2.2.16-3ext3
	label=linux.ext3
	initrd=/boot/initrd-2.2.16-3ext3.img
	read-only
	root=/dev/hdb3
Вось і ўсё. Выканаць lilo у якасці суперпользователя і перазагрузкі.

Калі ў вас паўсталі праблемы, праверце ядро HOWTO. Ёсць некалькі рэчаў, якія вы павінны мець пакрыцці: Вам патрэбен модулі ядра скампіляваны і якія пражываюць у /lib/modules і вам неабходна мець запіс для кожнага модуля ў /etc/conf.modules.



Стварэнне агульнага дыска ram

  1. Пераканаецеся, што падтрымка дыск аператыўнай памяці ў вашым ядры. Калі вы не маеце яго, гл. Miniroot HOWTO для мантажу з дапамогай зваротнай завесы.

  2. Стварэнне віртуальнага дыска, калі прылада яшчэ не існуе ў / Dev:

    /home/tony# mknod -m 660 /dev/ram b 1 1
    /home/tony# chown root.disk /dev/ram

  3. Нулю па-за прасторай, якія патрэбныя на віртуальны дыск прылады:

    /home/tony# dd if=/dev/zero of=/dev/ram bs=1k count=4k
    4096+0 records in
    4096+0 records out
    
  4. Зрабіць файлавую сістэму на віртуальны дыск, з указаннем усіх памераў:
    /home/tony# /sbin/mkfs -t ext2 -m 0 /dev/ram 4096
    mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    1024 inodes, 4096 blocks
    204 blocks (4.98%) reserved for the super user
    First data block=1
    1 block group
    8192 blocks per group, 8192 fragments per group
    1024 inodes per group
    
    Writing inode tables: done                            
    Writing superblocks and filesystem accounting information: done
    
  5. Маунт віртуальны дыск гэтак жа, як рэгулярныя прылады:
    /home/tony# mount -t ext2 /dev/ram /mnt/disk
Published (Last edited): 24-02-2011