Burada, önce kurulum sırasında ayırdığımız ek disk bölümü üzerinde bir dosya sistemi oluşturacağız sonra da onu kök dosya sistemine bağlayacağız. Kök dosya sisteminizin /dev/hda1 disk bölümünde olduğunu, takas alanının /dev/hda2 bölümünde olduğunu, ayırdığınız ek disk bölümünün de /dev/hda3 olduğunu varsayacağım. Hangi disk bölümlerinin ne için kullanıldığını sfdisk komutu ile öğrenebilirsiniz:
# /sbin/sfdisk -l
Disk /dev/hda: 4870 silindir, 255 kafa, 63 sektör/iz
birimler = 8225280 baytlık silindir, 1024 baytlık blok, 0'den başlayarak
silindir blok
Aygıt Önykl Balangıç Bitiş sayısı sayısı
/dev/hda1 * 0+ 1200 1200- 9647001+ 83 Linux
/dev/hda2 1201 1324 123- 987966 82 Linux takas
/dev/hda3 1325+ 2525 1200- 9647001 Boş
...
Siz tam böyle olmasa da benzer bir liste alacaksınız. Şimdi /dev/hda3 üzerinde bir ext3 dosya sistemi oluşturalım:
# /sbin/mke2fs -b 1024 -O sparse_super,filetype,has_journal /dev/hda3
Bu komut ile blok boyu 1024 bayt olan bir dosya sistemi oluşturduk. Blok boyunu özellikle 1024 bayt olarak seçtim. Çünkü çekirdek ramdiski 1024 baytlık bloklarla oluşturur. Ramdiskin bir örneğini bu disk bölümü üzerinde oluşturacağımızdan doğru boyut raporu alabilmek için 1024 bayt blok boyuna sahip bir dosya sistemine ihtiyacımız var. Kök disk bölümü genelde 4096 baytlık blok boyunda oluştururlur. Onun için kök disk bölümünde bu işi yapmamız doğru olmazdı.
Oluşturduğumuz dosya sisteminini kök dizine bağlamadan kullanamayız. Onun için /a3 isminde bir dizin oluşturacağız, sonra da /dev/hda3'ü buraya bağlayacağız. Disk bölümünü bağlamadan önce bu disk bölümü ile ilgili bilgiyi /etc/fstab dosyasına ek bir satır olarak girelim ki, sistemi her yeniden başlattığınızda bu disk bölümü açılış sırasında /a3 altına bağlansın:
# echo "/dev/hda3 /a3 ext3 defaults 1 2" >> /etc/fstab
# mount /a3
İlk komutta /dev/hda3 ile ilgili bilgiyi /etc/fstab dosyasının sonuna bir satır olarak ekledik. Bu komutta dikkat edeceğini şey /etc/fstab'dan önce iki tane > konulması gerektiğidir. Bir tane > koyarsanız dosya silinir va dosyaya sadece bu satır yazılır. Halbuki biz dosya sonuna ek bir satır girmek istiyoruz. Onun için > işaretinden peşpeşe 2 tane kullanmamız gerekiyor. Dikkatli olun!
İkinci satırda ise /dev/hda3'ü /a3 dizinine bağladık. Nereden belli? mount komutu böyle tek parametreli kullanıldığında diğer parametreleri almak için /etc/fstab dosyasına bakar. Bu komutu bir daha kullanmayacağız. Bundan sonra sistemi her açtığınızda /a3 bağlı olacak.
/a3 dizinine geçip, bir dizin açıyoruz (ramdisk dizini) ve ramdisk dizinine giriyoruz:
# cd /a3
# mkdir ramdisk
# cd ramdisk
Bu dizine initrdyap isminde bir dosya açıyoruz ve bu dosyayı çalıştırılabilir bir dosya yapıyoruz:
# touch initrdyap
# chmod +x initrdyap
Sonra da bu dosyanın içine aşağıdakileri yazıyoruz:
#!/bin/bash
compress=1
target="/export/netlogon/autoboot/initrd.img"
rc=0
IMAGESIZE=12000
MNTIMAGE="/a3/ramdisk/initrd"
IMAGE="/a3/ramdisk/initrd.rd"
MNTPOINT="/a3/ramdisk/initrd.mnt"
dd if=/dev/zero of=$IMAGE bs=1k count=$IMAGESIZE 2> /dev/null || exit 1
LODEV=$(echo findlodev | /sbin/nash --quiet)
if [ -z "$LODEV" ]; then
echo "loopback aygıtlarının hepsi kullanılmış." >&2
exit 1
fi
/sbin/losetup ${LODEV} $IMAGE || exit 1
echo y | /sbin/mke2fs $LODEV $IMAGESIZE >/dev/null 2>/dev/null
/sbin/tune2fs -i0 $LODEV >/dev/null
if [ -n "$verbose" ]; then
echo "$LODEV aygıtı kullanılıyor"
fi
mount -t ext2 $LODEV $MNTPOINT || {
echo "Loopback aygıtı yok"
exit 1
}
(cd $MNTIMAGE; tar cf - .) | (cd $MNTPOINT; tar xf -) || exit 1
umount $MNTPOINT
/sbin/losetup -d $LODEV
if [ -n "$compress" ]; then
gzip -9 < $IMAGE > $target || rc=1
else
cp -a $IMAGE $target || rc=1
fi
exit $rc
Bu betiği adından da anlaşılacağı üzere initrd.img dosyasını oluşturmakta kullanacağız. Şimdi bu betiğin çalışması için gereken dizinleri oluşturalım:
# mkdir initrd
# mkdir initrd.mnt
Ramdiski oluşturacağımız dizin initrd dizini; initrd.mnt dizini boş kalacak. Orayı betik kullanacak.
Betiği şimdi çalıştıracağız ve betik 12000 kB'lık /a3/ramdisk/initrd.rd dosyası ile bu dosyanın sıkıştırılmış hali olan /export/netlogon/autoboot/initrd.img dosyasını oluşturacak:
Komut, herşey yolunda giderse konsolda hiçbir çıktı vermeyecek ve bahsettiğim 2 dosyayı oluşturacak. Konsola bir çıktı veriyorsa bu bir hata iletisidir. Birşeyleri eksik ya da yanlış yapmış olabilirsiniz. Bu betiği kendim yazmadım, /sbin/mkinitrd betiğinden bizim için gereksiz satırları temizledim ve kalan kodu biraz değiştirdim. (Amerika'yı yeniden keşfetmenin alemi yok). /sbin/mkinitrd'nin kullandığı yöntem bize /a3/ramdisk/initrd dizininde normal bir dizin gibi çalışma imkanı veriyor. Yani oraya yerleştireceğimiz ve kaldıracağımız dosyalar initrd.img dosyasında değişiklik bilgisi olarak görünmeyecek. Diğer yöntemlerde görünür ve dosya gereksiz yere şişer.