Linuxで/ホームディレクトリをパーティションに変換する方法


このトピックは少し奇妙に思えるかもしれません。つまり、なぜホームディレクトリを別のパーティションに変換する必要があるのでしょうか。

Linuxをインストールするときはいつでも、インストーラーはデフォルトで「ガイド付き」パーティショニングをすでに選択しています。このオプションを使用すると、インストーラーはホームディレクトリと他のすべてのシステムディレクトリをルート(/)パーティションの下に配置します。

この設定は非常にうまく機能しますが、大きなリスクがあります。システムがクラッシュしたり、ルートパーティションが破損したりすると、ホームディレクトリにあるすべての個人ファイルが失われます。

このため、インストール時に別のホームパーティションを作成することが重要です。これにより、オペレーティングシステムの再インストール中、またはルートパーティションがクラッシュした場合に、個人ファイルの安全性が保証されます。

すべてのディレクトリがルートパーティションに分類されるようにハードドライブをパーティション分割するときにデフォルトのオプションを受け入れた場合は、このガイドが役立ちます。

このガイドでは、ホームパーティションにしたい追加のHDDを転送します。

さぁ、始めよう!

ステップ1:追加された新しいドライブを特定する

リムーバブルドライブを接続する前は、ホームフォルダとすべてのシステムパーティションが/またはルートパーティションにマウントされたハードドライブ(/ dev/sda)が1つだけあります。

dfコマンドを使用したハードドライブ構成の概要は次のとおりです。

$ df -Th

次に、8GBのリムーバブルUSBドライブを接続します。これは/dev/sdb として識別され、/media/tecmint/USBマウントポイントにマウントされます。

これを確認するために、lsblkコマンドを実行します。

$ lsblk

パーティションとマウントポイントは、セットアップによって異なる場合があります。たとえば、3番目のドライブは/dev/sdc として示され、4番目のドライブは/dev/sddとして示されます。

ステップ2:Linuxで新しいパーティションを作成する

2番目のドライブをシステムに新たに追加しましたが、ホームディレクトリの個別のパーティションとして使用するには、その上にパーティションを作成する必要があります。新しいドライブであるため、現時点ではありません。

fdiskコマンドは、示されているようにそれを確認します。

$ sudo fdisk -l

強調表示されたセクションでは、/dev/sda1 /dev/sda2、を持つ最初のドライブとは異なり、新しいドライブにパーティションが関連付けられていないことがわかります。および/dev/sda5

次に、次のコマンドを使用してパーティションを作成します。

$ sudo fdisk /dev/sdb

プロンプトが表示されたら、 nを押して新しいパーティションを作成します。次に、 p を押してプライマリパーティションの作成を指定し、 1を押してパーティション番号を指定します。次の2つのプロンプトでは、「ENTER」を押して、最初と最後のセクターを指定する際のデフォルトを受け入れます。

リムーバブルドライブにはNTFSファイルシステムが付属しているので、 Yを押して削除します。加えられたすべての変更を保存するには、 w を押します。これにより、パーティションに加えられたすべての変更が書き込まれます。

加えられた変更を確認するには、もう一度次のコマンドを実行します。

$ sudo fdisk /dev/sdb

プロンプトが表示されたら、 pを押して印刷します。これにより、パーティションの情報が出力されます。出力から、ファイルシステムタイプとしてLinuxを使用して新しいパーティション/dev/sdb1が作成されたことがわかります。次のセクションで行うext4ファイルシステムタイプにフォーマットする必要があります。

ステップ3:Linuxで新しいパーティションをフォーマットする

次のステップは、ext4ファイルシステムフォーマットを使用して/dev/sdb1パーティションをフォーマットすることです。リムーバブルドライブである/dev/sdb ではなく、/dev/sdb1 (パーティション)をフォーマットしていることに注意してください。

$ sudo mkfs.ext4 /dev/sdb1

ステップ4:Linuxで新しいパーティションをマウントする

ドライブにシステムからアクセスできるようにするには、ドライブをシステムのファイルシステムにマウントする必要があります。ただし、最初に、パーティションをマウントするマウントポイントを作成します。

$ sudo mkdir -p /srv/home

次に、次のようにマウントポイントにパーティションをマウントします。これにより、事実上、システムでドライブを使用できるようになります。

$ sudo mount /dev/sdb1 /srv/home

これを確認するには、次のようにdfコマンドを実行します。

$ sudo df -Th

手順5:ホームディレクトリファイルを新しいパーティションにコピーする

ここで、ホームディレクトリの内容をドライブにあるマウントポイントにコピーする必要があります。したがって、次のコマンドを実行します。

$ sudo cp -aR /home/* /srv/home/

すべてが完了したことを確認するために、ホームディレクトリの内容を確認します。

$ ls -l /srv/home/tecmint

出力から、ホームディレクトリにあると予想されるすべてのデフォルトディレクトリが存在することがはっきりとわかります。

手順6:新しいホームディレクトリを作成してドライブをマウントする

次に、ホームパーティションをマウントする別のホームディレクトリを作成する必要があります。混乱を避けるために、現在のホームディレクトリの名前を /home.bakに変更します。

$ sudo mv /home /home.bak

次に、新しいホームディレクトリを作成します。

$ sudo mkdir /home

次に、/dev/sdb1 ファイルシステムをアンマウントし、新しく作成されたホームディレクトリにマウントします。

$ sudo umount /dev/sdb1
$ sudo mount /dev/sdb1 /home

/home ディレクトリにデフォルトのディレクトリが含まれていることを確認するために、次の場所に移動してその内容を一覧表示します。

$ cd /home
$ ls -l tecmint

さらに、次のようにdfコマンドを使用して、ファイルシステムが/homeマウントポイントにマウントされていることを確認できます。

$ sudo df -Th /dev/sdb1

出力は、ドライブ上の/dev/sdb1ファイルシステムが/homeパーティションにマウントされていることを確認します。ただし、これは再起動後も存続しません。これを永続化するには、追加の手順が必要です。これは、ファイルシステム情報を使用して/ etc/fstabファイルを変更することです。

ステップ7:Linuxでの永続的なパーティションマウント

システムの起動時にファイルシステムが毎回マウントされるように、/ etc/fstabファイルを変更します。ただし、最初に、ファイルシステムのUUIDを次のように取得しましょう。

$ sudo blkid /dev/sdb1

UUIDをコピーして、テキストエディタのどこかに貼り付けます。これは、次の手順で使用されます。

次に、/ etc/fstabファイルを開きます。

$ sudo vim /etc/fstab 

図のように、この行をファイルに追加します。角かっこ内のuidを、テキストエディタで以前にコピーして貼り付けた/dev/sdb1ファイルシステムの実際のUUIDに置き換えます。

UUID=[ uid ]     /home	   ext4	   defaults	0	2

変更を保存してファイルを閉じます。次に、次のコマンドを実行して、すべてのパーティションをマウントします。

$ sudo mount -a

これで、システムの起動時に毎回/homeパーティションにドライブがマウントされます。

$ df  -h /dev/sdb1

これらすべての手順を実行しないように、インストール中に残りのシステムパーティションとは別のホームパーティションを作成して、個人ファイルをシステムファイルから分離することを常にお勧めします。これにより、問題が発生した場合にデータを簡単に回復できます。