Nasıl: Ubuntu’yu (Linux’u) ext4 dosya sistemiyle kullanmak/ext3′ü ext4′e çevirmek

08 Mar

Her ne kadar yaygın dağıtımlarda ext3 dosya sistemi öntanımlı olarak kullanılsa da, hızlı bir şekilde gelişen ext4 dosya sistemi şu anda Linux dağıtımlarında kullanabilir durumda. Bildiğimiz gibi ext3 dosya sisteminin ext2′ye göre en önemli avantajı, journaling, yani indeksleme özelliğine sahip olmasıydı. Ext4 dosya sistemi ise ext3′te varolan özelliklere yenilerini ekleyip, bulunan özelliklerin de gelişmiş şekilde kullanıldığı bir dosya sistemidir.

Ext4 dosya sisteminin yeni özelliklerini sırayalayacak olursak:

  • Extents
  • Multiblock allocation
  • Delayed allocation
  • Fast fsck
  • Journal checksumming
  • Online defragmentation
  • Inode related features
  • Persistent allocation

gibi özelliklerden bahsedebiliriz. Son kullanıcıya yansıyan yönleriyle ext4 dosya sistemi, bize daha stabil, üzerinde işlemler yaparken daha hızlı bir dosya sistemi sunuyor. Özellikle sistemin açılış hızında belirgin bir artış gözlemleniyor. Ben de deneyerek bunu gördüm. Yazdığım özellikler hakkında daha ayrıntılı bilgi için http://kernelnewbies.org/Ext4 adresine göz atmanızda fayda var. Ayrıca, şunu hatırlatmakta fayda var: “EXT4 dosya sistemi, yalnızca 2.6.28 serisi çekirdekler (kernel) tarafından kullanılabilmektedir”. Bu nedenle Ubuntu dağıtımı kullanıyorsak, sistemimize uygun bir 2.6.28 serisi çekirdek yüklü değilse yüklememiz gerekmektedir. Ubuntu 8.10 Intrepid Ibex sürümünde bu seride bir çekirdek mevcut değilse, 9.04 Jaunty sürümüne yükseltme yapmamız gerekebilir. Bunun için yine bu blogdaki şu yazıya göz atabilirsiniz.

Sistemimizin dosya sistemini, disk bölümlerimizi formatlamadan, veri kaybetmeden ext4 dosya sistemine çevirmemiz mümkün. Bunun için bir kaç hazırlık yapmanız gerekiyor. Öncelikle, Ubuntu ya da herhangi bir linux dağıtımının bağlı olduğu kök dizini dışındaki diğer ext3 dosya sistemlerinizi 2 komut ile kolayca çevirebilirsiniz. Fakat kök (/) dizini için, dizini ayırmanız gerektiğinden bunu sisteminizin üzerindeyken yapmanız olanaksız. Bu nedenle en basit yol, sistemi ext3-ext4 çevrimini yapabileceğimiz bir çalışan CD ile başlatmak.  Ben bunun için en uygun seçeneğin Parted Magic olduğunu düşünüyorum. Parted Magic, içinde gparted, testdisk gibi disk araçalrını barındıran, disk bölümleri üzerinde değişiklik yapmak için çok uygun bir çalışan linux dağıtımıdır. Üstelik 90 MB civarında büyüklüğüyle indirip kullanması oldukça hızlı olabilmektedir. Sitesindeki download bağlantısından en son sürüm Parted Magic imajını indirelim. Daha sonra K3b ya da başka bir yazılım kullanarak bu imajı bir CD’ye yakalım. Bunları yaptıktan sonra Parted Magic diskini takıp LiveCD’yi başlatarak  işlemlere başlayabiliriz. Bundan sonraki işlemler Gparted çalışan CD üzerinde gerçekleştirilecektir.

1. Yeni bir /boot bölümü oluşturmak

Sistemimiz, /boot dizininde yer alan çekirdeğin yüklenmesi ile başlar. Sistem başlangıcını sağlayan çekirdek sürümleri ve ilgili dosyalar bu dizinde bulunur. Normalde, ve ayrıca bir bölümleme yapmadıysak, /boot dizinimiz kök (/) dizinimizin bulunduğu aynı disk bölümü üzerinde bulunur.  Fakat sistemi ext4 dosya sistemi ile kullanacaksak, /boot dizinimizin ext3 dosya sistemine sahip olması daha doğru olur. Çünkü bir çok zaman grub, yani önyükleyici  eğer /boot dizini ext4 dosya sistemine sahip ise çekirdeği okumakta sorun çıkarabilmektedir. Bunu engellemek için, /boot dizinini ayrı bir disk bölümüne bağlamamız yerinde olur. Boot için en fazla 250 MB boyutunda bir bölüm yeterli olmaktadır. Bunun için Gparted bölümleme programını kullanırız. Parted Magic üzerinde Partition Editor kısayoluyla gparted’ı çalıştırırız. İster boş bir bölümü küçülterek, ister kök dizinimizi formatlamaya gerek kalmadan küçülterek ext3 dosya sistemi tipinde yeni bir 250 MB’lık bölüm oluşturalım. Burada dikkat etmemiz gereken tek şey eğer verilerimizi kaybetmek istemiyorsak, seçtiğimiz bölümü küçültürken format ibaresini eklemediğimize dikkat etmektir. Bunun dışında bu işlem bir  kaç saniyemizi alacaktır. “Apply” diyerek değişliklikleri uygulayalım. Artık /boot dizini olarak kullanacağımız disk bölümümüz hazır durumdadır. Terminal uygulamasını açalım.

mkdir /mnt/ubuntu

mount /dev/sda2 /mnt/ubuntu

Bu komutlar ile yeni bir dizin oluşturup Ubuntu bölümümüzü bu dizine bağlıyoruz. Dikkat edilmesi gereken, ben burada Ubuntu bölümüm /dev/sda2 yani birinci diskimin “sda2″, yani ikinci bölümümde yüklü olduğu için bu bölümü bağladım. Siz de kendi bölümünüze uygun komut vermelisiniz.

blkid

komutu ile bölümleriniz hakkında ayrıntılı bilgi alabilirsiniz. Şimdi de boot bölümümüzü içeriği içine kopyalamak için başka bir dizine bağlayalım:

mkdir /mnt/boot

mount /dev/sda1 /mnt/boot

Bu şekilde boot dizinimizi de bağlamış olduk. Demin belirttiğim gibi siz kendi boot bölümünüze uygun komutu vermelisiniz. Şimdi masaüstündeki “Mount” kısayolu ya da başka bir kısayoldan dosya yöneticimize ulaşalım. Buradan öncelikle /mnt/ubuntu/boot dizinine gidelim. “Show hidden files” diyerek gizli dosya var ise onları da gördükten sonra tüm dosyaları seçelim ve “cut” diyerek keselim. Daha sonra /mnt/boot dizininin içine kestiğimiz içeriği yapıştıralım. Artık yeni oluşturduğumuz boot dizinimizin içeriği de olmuş oldu.

 

2. Kök dizinimizi ext3′ten ext4 formatına dönüştürmek

Sıra geldi ext4′e dönüştürme işlemine. Dönüştürme işlemi oldukça basit, yalnızca 2 komuttan ibaret. Ancak şunu belirtmekte fayda var, ext4′e dönüştürdüğümüz bölümü tekrar ext3 formatına dönüştürmemiz olanaksız. Ext3′ten ext4′e hiç bir veri kaybı riski olmadan dönüştürebiliriz. Ancak ext3′e tekrar dönme işlemini disk bölümünü formatlamadan yapamayız. Bunu da hatırlattıktan sonra terminalde komtuları veriyoruz:

umount /dev/sda2

tune2fs -O extents,uninit_bg,dir_index /dev/sda2

e2fsck -pf /dev/sda2

Bu komutlardan ilki bağladığımız Ubuntu bölümünü ayırır. İkinci komut ile dönüştürme işlemi gerçekleşir. Son komut ise disk bölümünü denetler, yeniden düzenler ve birleştirir. Son komutu uygulamadan, dönüştürme gerçekleşmez. Dİsk bölümünün boyutuna göre biraz zaman alabilir (1-2 dakika en fazla). İşlem bittikten sonra ext4 dosya sistemine sahip oluyoruz. Şimdi gerekli diğer düzenlemeleri yapmaya sıra geldi.

 

3. Boot dizinimizi bağlamak ve chroot ile sisteme girmek

1. adımda oluşturduğumuz ve içeriğini aktardığımız boot bölümümüzü, Ubuntu altındaki /boot dizinine bağlamamız gerekiyor. Bunun için terminale geçiyoruz:

umount /dev/sda1

mount /dev/sda2 /mnt/ubuntu

mount /dev/sda1 /mnt/ubuntu/boot

Gördüğünüz gibi önce geçici olarak bağladığımız boot dizinini ayırdık. Daha sonra Ubuntu bölümünü tekrar bağladık ve boot bölümünü Ubuntu altındaki /boot dizinine son komutu vererek bağlamış olduk. Şimdi grub, yani önyükleyici ile ilgili bazı işlemler gerçekleştireceğiz. Bunun için chroot uygulamasını kullanarak Ubuntu sistemine bir çeşit giriş yapacağız ve Ubuntu komutlarını kullanma olanağına sahip olacağız. Bu şekilde istediğimiz işlemleri rahatça gerçekleştireceğiz.

mount -o bind /dev /mnt/ubuntu/dev

mount -o bind /proc /mnt/ubuntu/proc

cp /proc/mounts /mnt/ubuntu/etc/mtab

Bu komutlar ile gerekli bazı bölümleri şu anda bulunduğumuz Livecd içinden geçici olarak Ubuntu altına bağlamış olduk. Bu bölümler reboot işleminden sonra yenilenecektir. Şimdi de sisteme giriyoruz:

chroot /mnt/ubuntu /bin/bash

Şu an artık Ubuntu komutlarımızın bir çoğu geçerlidir. “apt-get” komutlarını verebiliriz örneğin. Ancak bizim işimiz grub ile.

sudo grub

komutu ile grub komut sistemine giriyoruz (eğer sudo ile hata alırsanız, sudo koymadan komutu verin). Şimdi bir dizi komut vereceğiz.

find /grub/stage1

Komut bize “(hd0,0)” gibi bir çıktı verecek. Boot dizininin hangi disk bölümünde olduğuna göre bu çıktı değişir. Benim boot bölümüm diskin ilk bölümü, /dev/sda1 olduğu için bu çıktıyı aldım. Şimdi bu çıktıyı kullanacağız.

root (hd0,0)

Bu komutta kullandığımız ibare ilk komutta aldığımız çıktıdır. Benim durumumda bu (hd0,0) idi. Şimdi grubı kuracağız:

setup (hd0)

Bu komut oldukça açık. Eğer bir adet diskimiz var ise ya da Ubuntu kurduğumuz bölüm birinci diskimizde ise bu komutu veriyoruz. İşlem tamamlandı. Çıkmak için:

quit

komutunu veriyoruz. Yapacak son bir işimiz kaldı, o da /etc/fstab’ı düzenlemek.

 

4. Son düzenlemeler ve /etc/fstab

Anladığınız gibi yeni bir boot bölümü oluşturduk ve disk bölümlerinin bağlanma şeklinde bir değişiklik oldu. Bunun için bu işi yapan fstab dosyasını uygun şekilde düzenlemeliyiz ki, sistem açıldığında bölümlerimiz hatasız bir şekilde bağlansın. Bu nedenle dosya yöneticisinden /mnt/ubuntu/etc/ dizinine gidiyoruz ve fstab dosyasını metin editörü ile açıyoruz. Sonra terminale geçip şu komutu verelim:

sudo blkid

Aldığımız çıktıda “UUID” parametreleri önemli. Ubuntu bu parametrelere göre diskleri bağlıyor. Şimdi metin dosyamıza geri dönüyoruz:

 

# /etc/fstab: static file system information.
#
#               

proc            /proc           proc    defaults        0       0
# /dev/sda2
UUID=91892ca1-34bb-4705-9268-999403c719a0 /               ext4    relatime,errors=remount-ro 0       1
# /dev/sda3
UUID=9bdd5f8c-e63a-47c6-84bc-bff4e461d9fc /mnt/sda3       ext4    relatime        0       2
# /dev/sda1
UUID=4bd3ba87-24b3-41b8-a2ed-41c25622c0b9 /boot      ext3    relatime        0       2
# /dev/sdb1
UUID=dc780174-b588-4092-a367-2cd1279b0e77 /mnt/depo  ext4    relatime         0       2
# /dev/sda5
UUID=3832dca9-5589-40a3-9958-b24d2e96c787 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0
/dev/scd1       /media/cdrom1   udf,iso9660 user,noauto,exec,utf8 0       0

 

Bu benim düzenlediğim kendi fstab dosyam. Buna göre sizin burada yapmanız gerekenler şunlar:

-Kök (/) dizininizi bağladığınız dosya sistemini ext3 yerine bendeki gibi ext4 yapın. Çünkü bu bölümü dönüştürdük ve ext4 olarak bağlanması gerekiyor. Diğerlerine dokunmanıza gerek yok, yalnızca ext4′e dönüştürdüğünüz Ubuntu bölümünü ext4 olarak bağlayın.

-Yeni bir boot bölümü oluşturmuştuk. Bu bölümü fstaba benim yaptığım gibi aynı şekilde ekleyin. Bendeki boot bölümü /dev/sda1. Siz de ona göre düzenlemelisiniz.

# /dev/sda1
UUID=4bd3ba87-24b3-41b8-a2ed-41c25622c0b9 /boot      ext3    relatime        0       2

Buradaki UUID değerini blkid komutu ile verdiğiniz çıktıdan alın. Aynısını yazın. Hata yaparsanız bölüm bağlanamaz.

-Son kontrolleri de yaptıktan sonra dosyayı kaydedin ve çıkın. Bölüm numaralarında yani sda1 ve sda2 gibi değişkenlerde, bölümleme yaptıktan sonra bir değişklik olmuş ise bunları da düzenleyin.

 

5. Bölümleri ayırmak ve sistemi başlatmak

Artık Parted Magic’ten çıkıp sistemi başlatmaya sıra geldi. Dosya yöneticilerini ve açık dosyaları kapayalım. Terminalde chroot ile girdiğimiz Ubuntu sisteminden exit komutu ile çıkalım. Yeni bir terminal açıp ona geçelim:

umount /dev/sda1

umount /dev/sda2

komutları ile sırasıyla boot ve Ubuntu dizinlerini ayıralım. Sonra reboot ederek Parted Magic CD’sini çıkararak Ubuntu’yu başlatalım:

Hatalardan Doğabilecek Sorunlar

-Eğer grub başlarken hata alıyorsanız, error number (15, 17 gibi) kaç ise ona göre araştırma yapabilirsiniz. /boot/grub/menu.lst dosyasındaki UUID satırı yanlış olabilir. Kernel yolu yanlış belirtilmiş olabilir. Bunları araştıracağınız gibi bu başlık altında da sorabilirsiniz.

-Grub’dan sonra sistem başlıyor fakat bir hata alıp shelle düşüyorsanız (boot ettikten sonra), büyük olasılıkla /etc/fstab dosyasındaki disk bağlama bilgilerinde hata yapmışsınızdır. UUIDleri tekrar kontrol edin ve düzeltin. Parted Magic diski bu konuda yardımcı olacaktır.

Kolay gelsin.

Yararlanılan Kaynaklar

http://www.cyberciti.biz/tips/linux-convert-ext3-to-ext4-file-system.html

http://kernelnewbies.org/Ext4

http://ext4.wiki.kernel.org/index.php/Ext4_Howto


Etiketler: , , , , , , , , ,

Paylaşmak için:
  • del.icio.us
  • Technorati
  • Identi.ca
  • Twitter

Yorum yapın