212 lines
7.6 KiB
HTML
212 lines
7.6 KiB
HTML
|
<html>
|
||
|
<head>
|
||
|
<title>JFS Root Boot HOWTO</title>
|
||
|
</head>
|
||
|
<body bgcolor="#FFFFFF">
|
||
|
<center><h1>JFS Root Boot HOWTO</h1></center>
|
||
|
Paul Larson <A HREF="mailto:plars@austin.ibm.com">plars@austin.ibm.com</A><br>
|
||
|
v1.0, May 22, 2001 - Copyright © International Business Machines Corp., 2001
|
||
|
<hr>
|
||
|
1. <A HREF="jfsroot.html#1">Introduction</A><br>
|
||
|
2. <A HREF="jfsroot.html#2">Assumptions/Prerequisites</A><br>
|
||
|
3. <A HREF="jfsroot.html#3">Converting an ext2 based system to JFS</A>
|
||
|
<li>3.1 <A HREF="jfsroot.html#3.1">Build the kernel with JFS support</A>
|
||
|
<li>3.2 <A HREF="jfsroot.html#3.2">Create the JFS filesystem</A>
|
||
|
<li>3.3 <A HREF="jfsroot.html#3.3">Copy the root filesystem</A>
|
||
|
<li>3.4 <A HREF="jfsroot.html#3.4">Final setup</A>
|
||
|
<li>3.5 <A HREF="jfsroot.html#3.5">Reboot</A>
|
||
|
|
||
|
<A NAME="1">
|
||
|
<h3>1. Introduction:</h3>
|
||
|
This HOWTO describes a method for converting an ext2 filesystem based
|
||
|
Linux system to one running entirely on IBM's Journaled File System (JFS).
|
||
|
For further information about JFS and to download the latest version of
|
||
|
JFS, please visit the JFS for Linux web site at
|
||
|
<A HREF="http://oss.software.ibm.com/developerworks/opensource/jfs/">http://oss.software.ibm.com/developerworks/opensource/jfs/</A>.
|
||
|
|
||
|
<A NAME="2">
|
||
|
<h3>2. Assumptions/Prerequisites:</h3>
|
||
|
Before we get started, there are two assumptions that will be made in
|
||
|
this document:
|
||
|
<li>You must already have Linux installed and running
|
||
|
<li>You must have an empty partition, partitioned as type 83 (Linux).
|
||
|
It doesn't matter if this partition is formatted or not, but we'll be
|
||
|
reformatting it as JFS so be prepared to lose anything you might already
|
||
|
have on it.
|
||
|
<p>
|
||
|
The examples in this document assume that you just have one big partition
|
||
|
for your root filesystem and don't have separate mounts for /home, /usr,
|
||
|
etc. It's ok if you do have separate partitions for those, but you'll
|
||
|
need to have enough free space to copy those to the new jfs partition,
|
||
|
and modify the /etc/fstab file to remove them or change the mount points as
|
||
|
necessary. Finally, my root filesystem is on /dev/hda5 and the new
|
||
|
partition that I'm going to format as JFS is /dev/hda6. This is system
|
||
|
specific though, so you'll need to substitute the right partitions from
|
||
|
your system.
|
||
|
<p>Something else to consider is that we will need to patch and recompile
|
||
|
the kernel to add support for JFS. This isn't hard to do, but if you've
|
||
|
never recompiled a kernel before, this probably shouldn't be your first
|
||
|
experience with it.
|
||
|
|
||
|
<A NAME="3">
|
||
|
<h3>3. Converting an ext2 based system to JFS</h3>
|
||
|
No commercial Linux distributions have picked up JFS yet, as it is still
|
||
|
in beta. Hopefully soon, building a pure JFS system will be as easy as
|
||
|
selecting to format your partitions as JFS when you install your
|
||
|
favorite Linux distribution, but for now this procedure is the easiest
|
||
|
way to create a system running on JFS.
|
||
|
<p>
|
||
|
The following sections describe the steps necessary to build a JFS root
|
||
|
filesystem and boot from it.
|
||
|
|
||
|
<A NAME="3.1">
|
||
|
<h3>3.1 Build the kernel with JFS support</h3>
|
||
|
Download the latest 2.4.x kernel from <A HREF="ftp://ftp.kernel.org">ftp.kernel.org</A>,
|
||
|
and the latest jfs-x.y.z-patch.tar.gz from the
|
||
|
<A HREF="http://oss.software.ibm.com/developerworks/opensource/jfs">JFS for Linux</A>
|
||
|
web site to /tmp. Extract them into separate subdirectories. Change
|
||
|
directory into the base directory of the kernel source and patch the kernel.
|
||
|
|
||
|
<pre>
|
||
|
#cd /usr/src
|
||
|
#rm linux
|
||
|
#tar -xvzf /tmp/linux-2.4.3.tar.gz
|
||
|
#mv linux linux-2.4.3
|
||
|
#ln -s linux-2.4.3 linux
|
||
|
#mkdir jfs
|
||
|
#cd jfs
|
||
|
#tar -xvzf /tmp/jfs-0.3.1-patch.tar.gz
|
||
|
#cd /usr/src/linux
|
||
|
#patch -p1 < ../jfs/jfs-2.4.0-v0.3.1-patch
|
||
|
#patch -p1 < ../jfs/jfs-common-v0.3.1-patch
|
||
|
</pre>
|
||
|
|
||
|
Configure the kernel using make config, make menuconfig, or make xconfig
|
||
|
(whichever you prefer). In the section labeled "Code maturity level
|
||
|
options", turn on the item that says "Prompt for development and/or
|
||
|
incomplete code/drivers." In the section labeled "File systems" turn on
|
||
|
the option for "JFS filesystem support." Make sure to turn on JFS support
|
||
|
so that it is compiled into the kernel, NOT as a module. Configure the
|
||
|
rest of the kernel as needed for your system. Build the kernel with a
|
||
|
<tt>make dep; make clean; make bzImage</tt> and if necessary,
|
||
|
<tt>make modules; make modules_install</tt>. Then, copy the new kernel into /boot.
|
||
|
|
||
|
<pre>
|
||
|
#make dep
|
||
|
#make clean
|
||
|
#make bzImage
|
||
|
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.0-jfs
|
||
|
</pre>
|
||
|
|
||
|
Now we need to build the JFS utilities. These are the tools for formatting
|
||
|
a JFS filesystem, checking it for errors, extending the size, and more.
|
||
|
|
||
|
<pre>
|
||
|
#cd fs/jfs/utils
|
||
|
#make
|
||
|
#make install
|
||
|
</pre>
|
||
|
|
||
|
Next, we need to add an entry for LILO so that we can boot with our new
|
||
|
kernel that can use a JFS filesystem.
|
||
|
Edit /etc/lilo.conf and add an entry for the new kernel similar to this:
|
||
|
<pre>
|
||
|
image=/boot/vmlinuz-2.4.0-jfs
|
||
|
label=jfsboot
|
||
|
read-only
|
||
|
root=/dev/hda5
|
||
|
</pre>
|
||
|
|
||
|
Run <tt>/sbin/lilo</tt> to to activate the new configuration and reboot
|
||
|
into the new kernel.
|
||
|
|
||
|
<A NAME="3.2">
|
||
|
<h3>3.2 Create the JFS filesystem</h3>
|
||
|
Now that we have JFS support in the kernel, it's time to format our
|
||
|
empty partition as JFS.
|
||
|
<pre>
|
||
|
#mkfs -t jfs /dev/hda6
|
||
|
|
||
|
mkfs.jfs development version: $Name: v0_3_1 $
|
||
|
|
||
|
Warning! All data on device /dev/hda6 will be lost!
|
||
|
|
||
|
Continue? (Y/N) y
|
||
|
\
|
||
|
|
||
|
Format completed successfully.
|
||
|
|
||
|
5120608 kilobytes total disk space.
|
||
|
</pre>
|
||
|
|
||
|
<A NAME="3.3">
|
||
|
<h3>3.3 Copy the root filesystem</h3>
|
||
|
This is an easy step and requires very little work on your part, but it
|
||
|
will take the most time to complete. First, unmount any NFS, SMB, or
|
||
|
cdroms that are mounted. Create a mount point for the new
|
||
|
JFS partition and mount it. There are a few things to remember before we
|
||
|
start copying files. Don't copy /proc over, but do create a mount point
|
||
|
for it after you are done. If you didn't or couldn't unmount some of your
|
||
|
NFS mounts or cdroms, remember to skip them when you do the copy. Copy
|
||
|
everything else using <tt>cp -a</tt>.
|
||
|
|
||
|
<pre>
|
||
|
#mkdir /jfsvol
|
||
|
#mount -t jfs /dev/hda6 /jfsvol
|
||
|
#cd /
|
||
|
#cp -a bin etc lib boot dev home usr var [...] /jfsvol
|
||
|
#mkdir /jfsvol/proc
|
||
|
</pre>
|
||
|
|
||
|
<A NAME="3.4">
|
||
|
<h3>3.4 Final setup</h3>
|
||
|
Before we reboot into our new root partition, there are a just a couple of
|
||
|
final things that need to be done. First, we need to change the /etc/fstab
|
||
|
entry for the root partition, but you need to be certain to change the
|
||
|
right one. Remember that the fstab file we want to work with is the one
|
||
|
under /jfsvol/etc. So edit this file, and look for the line describing
|
||
|
the root partition. Mine looks like this:
|
||
|
<pre>
|
||
|
LABEL=/ / ext2 defaults 1 1
|
||
|
</pre>
|
||
|
|
||
|
We want to change that to say:
|
||
|
<pre>
|
||
|
/dev/hda6 / jfs defaults 1 1
|
||
|
</pre>
|
||
|
|
||
|
You can now unmount /jfsvol.
|
||
|
|
||
|
Edit /etc/lilo.conf to point to the new root partition. I'm
|
||
|
paranoid, so I like to just copy and paste the one I already have for the
|
||
|
jfs kernel and modify the root= line to point to the new partition.
|
||
|
You'll also need to give it a new label. The new section on my system
|
||
|
looks like this:
|
||
|
<pre>
|
||
|
default=jfsboot2
|
||
|
...
|
||
|
image=/boot/vmlinuz-2.4.0-jfs
|
||
|
label=jfsboot2
|
||
|
read-only
|
||
|
root=/dev/hda6
|
||
|
</pre>
|
||
|
|
||
|
Make sure that you run 'lilo' again before you reboot.
|
||
|
|
||
|
<A NAME="3.5">
|
||
|
<h3>3.5 Reboot</h3>
|
||
|
Congratulations! If you followed these steps, your system is now
|
||
|
running completely on JFS. To verify this, type <tt>mount</tt> and you
|
||
|
should see output similar to this:
|
||
|
<pre>
|
||
|
/dev/hda6 on / type jfs (rw)
|
||
|
none on /proc type proc (rw)
|
||
|
none on /dev/pts type devpts (rw,gid=5,mode=620)
|
||
|
</pre>
|
||
|
|
||
|
Assuming everything works well, and you don't want or need to go back to
|
||
|
your old system, the old root partition can now be reformatted as JFS and
|
||
|
turned into a /home mount, or anything else you want.
|
||
|
</body>
|
||
|
</html>
|