linux poison RSS
linux poison Email

Ext4 support on OpenSuse 11.1

Kernel 2.6.28 Released

Torvald released the final version of Linux Kernel 2.6.28. It's not a big change since RC 9, but it finally appeared as final after lots of discussion on LKML whether to postpone the release or release earlier and make the merge window longer as the developers goes on long holidays.

Here's some summary of Kernel 2.6.28 (taken from KernelNewbies): Linux 2.6.28 adds the first version of Ext4 as a stable filesystem, the much-expected GPU memory manager which will be the foundation of a renewed graphic stack, support for Ultra Wide Band (Wireless USB, UWB-IP), memory management scalability and performance improvements, a boot tracer, disk shock protection, the phonet network protocol, support of SSD discard requests, transparent proxy support, several new network drivers, controlable IO CPU affinity, high-resolution poll()/select(), support of a minimal "dummy" policy in SELinux, tracing improvements, x86 x2APIC support, a fb driver for VIA UniChrome devices, Mitac Mio A701 ARM-based smartphone support, some new drivers, improved device support, and many other small improvements and fixes.

More on the detailed can be viewed at KernelNewbies. The official announcement are here and here

Kernel Compilation:

1) Make sure you have all the required lib for kernel compilation
2) Download the latest kernel from www.kernel.org (2.6.28)
3) Untar the kernel source and move the folder (linux-2.6.28) under /usr/src/
4) Fire Following commands from /usr/src/linux-2.6.28 folder

# make xconfig

This will open a window where you can search for "ext4", select the ext4 options and save the changes (shown below)


# make rpm

5) This is will take some time for source compilation and making rpm file
Now go to — /usr/src/packages/RPMS/i386 where you will find the rpm file, install this rpm file using following command...

# rpm -ivh  kernel-2.6.289pae-1.i386.rpm
[DO NOT UPGRADE YOUR EXISTING KERNEL BY USING rpm -Uvh, instead install the new kernel using rpm -ivh]

This will install all the required files like  vmlinuz,system.map, etc .. into your /boot folder 

# mkinitrd -- This will create /boot/initrd-2.6.28-9-pae file which is required during booting of new kernel and you should see something like ...
Kernel image:   /boot/vmlinuz-2.6.28-9-pae
Initrd image:   /boot/initrd-2.6.28-9-pae
Root device:    /dev/disk/by-id/ata-ST3802110A_9LR2AE39-part2 (/dev/sda2) (mounted on / as ext3)
Resume device:    /dev/disk/by-id/ata-ST3802110A_9LR2AE39-part7 (/dev/sda7)
Kernel Modules:    scsi_mod libata sata_sil hwmon thermal_sys processor thermal pata_atiixp ata_generic ide-core atiixp ide-pci-generic fan jbd mbcache ext3 edd crc-t10dif sd_mod usbcore ohci-hcd uhci-hcd ehci-hcd hid usbhid
Features:       block usb resume.userspace resume.kernel
Bootsplash:    openSUSE (1024x768)
51347 blocks
6) Go to and edit the following file to add the new kernel to boot menu
# vi /boot/grub/menu.lst and add the following lines to it
title openSUSE 11.1 (2.6.28)
root (hd0,5)
kernel /boot/vmlinuz-2.6.28-9-pae root=/dev/sda2 vga=0×317 resume=/dev/sda7 splash=silent showopts
initrd /boot/initrd-2.6.28-9-pae
You can also install new kernel using Yast tool (system -> Boot Loader).



7) Now install the grub using following command
# grub-install /dev/sda
[Check you drive here or install it using YAST tool]

How to use Ext4

One very important thing to keep in mind is that there is NOT Ext4 GRUB support. Well, that wasn't exactly true: There is grub support, but the grub versions used by your current distro don't support it. There's support in the GRUB2 development branch, but only from this commit and ahead. There're available grub2 packages in Ubuntu and debian-derived distros as the grub-pc package. In the 0.9x branch, there's not official support, but there's a Google SoC project that developed support for it, and Google finds patches. So choose yourself. The next release of distros based in Linux 2.6.28 will probably have support in one way or another. The safe option is to keep your /boot directory in a partition formatted with Ext3.

You also need an updated e2fsprogs tool, of course, the latest stable version -1.41.3- is recommended.

Creating a new Ext4 filesystem from the scratch
The easiest one, recommended for new installations. Just update your e2fsprogs package to Ext4, and create the filesystem with mkfs.ext4.

Migrate existing Ext3 filesystems to Ext4
You need to use the tune2fs and fsck tools in the filesystem, and that filesystem needs to be unmounted. Run:

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

After running this command you MUST run fsck. If you don't do it, Ext4 WILL NOT MOUNT your filesystem. This fsck run is needed to return the filesystem to a consistent state. It WILL tell you that it finds checksum errors in the group descriptors - it's expected, and it's exactly what it needs to be rebuilt to be able to mount it as Ext4, so don't get surprised by them. Since each time it finds one of those errors it asks you what to do, always say YES. If you don't want to be asked, add the "-p" parameter to the fsck command, it means "automatic repair":

       fsck -pf /dev/yourfilesystem

There's another thing that must be mentioned. All your existing files will continue using the old indirect mapping to map all the blocks of data. The online defrag tool will be able to migrate each one of those files to a extent format (using a ioctl that tells the filesystem to rewrite the file with the extent format; you can use it safely while you're using the filesystem normally)

Finally do not forget to modify /etc/fstab.


4 comments:

Post a Comment

Related Posts with Thumbnails