今回紹介する準備作業のうち、最も厄介なのがこの作業になるだろう。これからLinux環境を構築するのであれば、インストール時にパーティションを用意すればいいから特別苦労する必要はない。LFSで構築したい環境にもよるが、100Mbytesから1Gbytes程度の間で、ディスク容量と相談してパーティションを作ればいい。しかし、すでに構築済みの環境では、マウントポイントを割り当てていないパーティションなど用意していないだろう。新たにパーティションを捻出する方法はいくつか考えられるが、ここでは安全性と手軽さの高い順に紹介しておこう。
 いずれにしても、LFS用に作成したパーティションを既存のLinuxで「/mnt/lfs」にマウントする。マウントポイントは好きな名前で構わない(/mnt/lfsでなくてもよい)のだが、/mnt/lfsとすれば本稿やLFS BOOKと統一が図れる。マウントポイントを異なる名前にする場合は、適宜読み替えてほしい。 
- 新規インストール
 現状の環境に未練がなければ、Linuxをインストールし直すのが手っ取り早い。ソフトウェアの再インストールやデータの移し替えは必要になるが、最も手軽で安全性も高い。 
- ディスクの追加
 ディスクを追加すれば、当然新しいパーティションを作成できる。この方法は、安全性は高いものの、コストが掛かる点が手軽とはいい難い。具体的な手順は割愛する。 
- 既存のパーティションの統廃合
 最も現実的だが、手軽さや安全性に欠けるのがこの方法である。この方法は、既存のパーティションに格納されたデータを別のパーティションに移動する。そして、空になったパーティションをLFS用にマウントし直して再利用する。当然ながら、パーティションが1つしかない環境では統廃合しようがない。 
 既存のパーティションを統廃合する方法を概念図で表すと図2のようになるのだが、どれをどこに移動してもいいというわけではない。移動するパーティション(マウントポイント)の受け入れ先は、親子関係にあるマウントポイントに限定される。さらに、システム稼働中に移動可能なものを選ぶ必要がある。
図2 パーティションを統廃合し、LFS用のパーティションを作り出す 
 例えば、/homeを/usrのパーティションに移動しようにも、/usrがマウントポイントだから移動できない(図3)。/homeが移動できるのは、親ディレクトリである/のパーティションに限られる。/homeのサブディレクトリが独立したパーティションになっていれば強引に統合できなくもないが、手続きは面倒にならざるを得ない。
図3 パーティションの統廃合はどこでも可能というわけではない 
 いずれにしても、この作業は危険を伴うので、間違いは即事故につながる。データが消えてしまうどころか、最悪の場合は二度と起動できなくなるかもしれない。パーティションやマウントに関する知識が十分でないなら、詳しい人の助けを得た方がいいだろう。
 ここでは、/usr/localを/usrに移動して、空いたパーティションをLFS用とする例を紹介する(編注)。この手順を参考に、作業していただければいいだろう。
編注:ディスクを増設したり未使用だったパーティションを利用する場合は、パーティションを切ったうえで以下の「ファイルシステムの作成」から読んでいただければよい。
 
  
 パーティションの容量、空き具合などを確認する。移動される側の空き容量が十分か、移動する側のデバイス名は何かを特に確認しておきたい。万が一に備えて、全体をメモしておくくらいの慎重さが欲しい。
      
         
          # df -k 
            Filesystem           1k-blocks      Used Available Use% Mounted on 
            /dev/hda7              5162796    130916   4769624   3% / 
            /dev/hda1              8096152      4356   7680536   1% /boot 
            /dev/hda5             10325748     87428   9713800   1% /home 
            /dev/hdb1             10325748    184220   9617008   2% /mnt/lfs 
            /dev/hdb5              2071384        88   1966072   1% /tmp 
            /dev/hda8              4134900   1105528   2819324  29% /usr 
            /dev/hda6             10325748       452   9800776   1% /usr/local 
            デバイス名                                            マウントポイント | 
        
      
 df -kでは、デバイス名とマウントポイントのほかに容量もチェックできる。また、mountコマンドは容量はチェックできないが、マウントポイントとデバイスが簡単に確認できる。
編注:以下、/dev/hda6にインストールするという前提で話を進める。インストール先デバイス名は、自分の環境に合わせて読み替えてほしい。
 
  
 パーティションを削除する前に、データをtarで圧縮して確保しておく。マウントポイント以下を、ディレクトリごと圧縮するのがポイント。当然ながら、作業はrootユーザーで行い、/ディレクトリに保存しておくと展開も楽にできる。
         
          # tar -cvf /backup.tar /usr/local/ 
            tar: Removing leading `/' from member names 
            usr/local/ 
            usr/local/lost+found/ 
            usr/local/bin/ 
            usr/local/doc/ 
            usr/local/etc/ 
            usr/local/games/ 
            usr/local/include/ 
            usr/local/lib/ 
            usr/local/libexec/ 
            usr/local/sbin/ 
            usr/local/share/ 
            usr/local/share/info/ 
            usr/local/share/man/ 
            usr/local/share/man/man1/ 
            usr/local/share/man/man2/ 
            usr/local/share/man/man3/ 
            usr/local/share/man/man4/ 
            usr/local/share/man/man5/ 
            usr/local/share/man/man6/ 
            usr/local/share/man/man7/ 
            usr/local/share/man/man8/ 
            usr/local/share/man/man9/ 
            usr/local/share/man/mann/ 
            usr/local/src/ 
            usr/local/man/ 
            usr/local/man/man1/ 
            usr/local/man/man1/appletviewer.1 
            usr/local/man/man1/extcheck.1 
            usr/local/man/man1/jar.1 
            usr/local/man/man1/jarsigner.1 
            usr/local/man/man1/java.1 
            usr/local/man/man1/javac.1 
            usr/local/man/man1/javadoc.1 
            usr/local/man/man1/javah.1 
            usr/local/man/man1/javap.1 
            usr/local/man/man1/jdb.1 
            usr/local/man/man1/keytool.1 
            usr/local/man/man1/native2ascii.1 
            usr/local/man/man1/rmic.1 
            usr/local/man/man1/rmid.1 
            usr/local/man/man1/rmiregistry.1 
            usr/local/man/man1/serialver.1 
            usr/local/man/man1/tnameserv.1 
             
            # ls -la backup* 
            -rw-r--r--    1 root     root       327680  8月 29 18:35 backup.tar | 
        
      
 データを保存したら、対象のパーティションをアンマウントする。アンマウントしてもディスク上のデータが消えるわけではないが、OSから見えない状態になる。
      
         
          # umount /usr/local 
            # df -k 
            Filesystem           1k-blocks      Used Available Use% Mounted on 
            /dev/hda7              5162796    130916   4769624   3% / 
            /dev/hda1              8096152      4356   7680536   1% /boot 
            /dev/hda5             10325748     87428   9713800   1% /home 
            /dev/hdb1             10325748    184220   9617008   2% /mnt/lfs 
            /dev/hdb5              2071384        88   1966072   1% /tmp 
            /dev/hda8              4134900   1105528   2819324  29% /usr 
            # ls -la /usr/local 
            drwxr-xr-x    2 root     root         4096  8月 29 18:27 ./ 
            drwxr-xr-x   18 root     root         4096  8月 29 18:02 ../ | 
        
      
 データがOSから見えない状態になったところで、保存しておいたデータを移動される側のパーティションに展開する。この場合、/usr/localを/usrに移動するため、ディレクトリなどを特に作成せずにそのまま展開すればよい。展開できたら、データが見えていることを確認する。
      
         
          # tar -xvf /backup.tar 
            usr/local/ 
            usr/local/lost+found/ 
            usr/local/bin/ 
            usr/local/doc/ 
            usr/local/etc/ 
            usr/local/games/ 
            usr/local/include/ 
            usr/local/lib/ 
            usr/local/libexec/ 
            usr/local/sbin/ 
            usr/local/share/ 
            usr/local/share/info/ 
            usr/local/share/man/ 
            usr/local/share/man/man1/ 
            usr/local/share/man/man2/ 
            usr/local/share/man/man3/ 
            usr/local/share/man/man4/ 
            usr/local/share/man/man5/ 
            usr/local/share/man/man6/ 
            usr/local/share/man/man7/ 
            usr/local/share/man/man8/ 
            usr/local/share/man/man9/ 
            usr/local/share/man/mann/ 
            usr/local/src/ 
            usr/local/man/ 
            usr/local/man/man1/ 
            usr/local/man/man1/appletviewer.1 
            usr/local/man/man1/extcheck.1 
            usr/local/man/man1/jar.1 
            usr/local/man/man1/jarsigner.1 
            usr/local/man/man1/java.1 
            usr/local/man/man1/javac.1 
            usr/local/man/man1/javadoc.1 
            usr/local/man/man1/javah.1 
            usr/local/man/man1/javap.1 
            usr/local/man/man1/jdb.1 
            usr/local/man/man1/keytool.1 
            usr/local/man/man1/native2ascii.1 
            usr/local/man/man1/rmic.1 
            usr/local/man/man1/rmid.1 
            usr/local/man/man1/rmiregistry.1 
            usr/local/man/man1/serialver.1 
            usr/local/man/man1/tnameserv.1 
             
            # ls -la /usr/local 
            drwxr-xr-x   14 root     root         4096  8月 26 21:59 ./ 
            drwxr-xr-x   18 root     root         4096  8月 29 18:38 ../ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 bin/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 doc/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 etc/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 games/ 
            drwxr-xr-x    2 root     root         4096  6月 23  2001 include/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 lib/ 
            drwxr-xr-x    2 root     root         4096  6月 23  2001 libexec/ 
            drwx------    2 root     root         4096  8月 26 21:57 lost+found/ 
            drwxr-xr-x    3 root     root         4096  8月 26 21:59 man/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 sbin/ 
            drwxr-xr-x    4 root     root         4096  8月 26 21:58 share/ 
            drwxr-xr-x    2 root     root         4096  2月  7  1996 src/ | 
        
      
 データの移動が確認できたら、アンマウントしておいたパーティションをフォーマットする。ここでは、mke2fsコマンド(編注)で行う。その際、ボリュームラベルを付けておくと、後で自動マウントの設定を行うときに便利である。フォーマットせずにデータを消すだけでも構わないのだが、その場合はボリュームラベルが残ってしまう。ここではそれを嫌ってフォーマットしているが、各自の判断で行えばいいだろう。
 もしパーティションの再編成を望むなら、ここでfdiskを使ってもよい。
      
         
          # mke2fs -L /mnt/lfs /dev/hda6 
            mke2fs 1.26 (3-Feb-2002) 
            Filesystem label=/mnt/lfs 
            OS type: Linux 
            Block size=4096 (log=2) 
            Fragment size=4096 (log=2) 
            1311552 inodes, 2622603 blocks 
            131130 blocks (5.00%) reserved for the super user 
            First data block=0 
            81 block groups 
            32768 blocks per group, 32768 fragments per group 
            16192 inodes per group 
            Superblock backups stored on blocks: 
                    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 
             
            Writing inode tables: done 
            Writing superblocks and filesystem accounting information: done 
             
            This filesystem will be automatically checked every 23 mounts or 
            180 days, whichever comes first.  Use tune2fs -c or -i to override. | 
        
      
編注:mke2fsコマンドの「-L」は、ボリュームラベルを付けるためのオプション。必須ではないが、ボリュームラベルを付けておくと分かりやすくなる。
 
  
 フォーマットしたパーティションを/mnt/lfsにマウントしてみる。マウントポイントはOS側にあらかじめ作成しておく。
      
         
          # mkdir -p /mnt/lfs 
            # mount /dev/hda6 /mnt/lfs | 
        
      
 マウントできることを確認したら、OS起動時に/mnt/lfsが自動でマウントされるようにする。古いマウントポイント(/usr/local)へのマウントが残っているので、それを新しいマウントポイント(/mnt/lfs)へマウントするように編集する。このとき、フォーマット時に付けたボリュームラベルかデバイス名が必要になる。
 OS起動時に自動でマウントする設定は/etc/fstabに記述されているので、それを開いて編集する。一番左の項目がデバイス名かボリュームラベル、2番目がマウントポイントだ。ほかは特に修正する必要はないだろう。以下は、既存パーティションをLFSに転用する場合の例だ(ほかのパーティションについては、環境によって異なる)。新規にパーティションやハードディスクを追加した場合は、LFS用のパーティションの設定を追記するだけでよい。
      
         
          LABEL=/            /                ext2    defaults        1 1 
            LABEL=/boot        /boot            ext2    defaults        1 2 
            LABEL=/home        /home            ext2    defaults        1 2 
            /dev/fd0           /mnt/floppy      auto    noauto,owner    0 0 
            LABEL=/tmp         /tmp             ext2    defaults        1 2 
            LABEL=/usr         /usr             ext2    defaults        1 2 
            LABEL=/usr/local   /usr/local       ext2    defaults        1 2 
            none               /proc            proc    defaults        0 0 
            none               /dev/pts         devpts  gid=5,mode=620  0 0 
            /dev/hdb6          swap             swap    defaults        0 0 
            /dev/cdrom         /mnt/cdrom       iso9660 noauto,owner,kudzu,ro 0 0 | 
        
         
          |  /etc/fstab編集前 | 
        
      
      
         
          LABEL=/            /                ext2    defaults        1 1 
            LABEL=/boot        /boot            ext2    defaults        1 2 
            LABEL=/home        /home            ext2    defaults        1 2 
            /dev/fd0           /mnt/floppy      auto    noauto,owner    0 0 
            LABEL=/tmp         /tmp             ext2    defaults        1 2 
            LABEL=/usr         /usr             ext2    defaults        1 2 
            LABEL=/mnt/lfs     /mnt/lfs         ext2    defaults        1 2 
            none               /proc            proc    defaults        0 0 
            none               /dev/pts         devpts  gid=5,mode=620  0 0 
            /dev/hdb6          swap             swap    defaults        0 0 
            /dev/cdrom         /mnt/cdrom       iso9660 noauto,owner,kudzu,ro 0 0 | 
        
         
          |  /etc/fstab編集後 | 
        
      
 これでLFSのためのパーティションの作成は終了である。ディスク容量の都合や使い勝手を意識するのであれば、/mnt/lfs/usrや/mnt/lfs/sbinなどを別のパーティションに作成してもよい。本連載では、LFSのためのパーティションは1つだけで進めることとする。