質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

6597閲覧

Linuxでホームディレクトリを別のドライブに設定することはできますか?

noc

総合スコア73

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2020/04/12 02:36

編集2020/04/12 02:44

xubuntu を使用しています。
このパソコンは2つのSSDを持っているのですが、インストールしたドライブの容量が少ないので、もう片方のドライブを保存域として活用したいと存じます。
Windowsではユーザフォルダを丸ごと別のドライブに設定することができますし、そうでなくても環境変数HOMEを別のドライブの特定のディレクトリ下に設定することもできますが、
UNIX/Linuxではホームディレクトリはインストールしたドライブ内から別のドライブ内に設定し直す方法はないのでしょうか?
また、そうであるのならば、代わりにシステムドライブを節約するためにできることには何がありますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2020/04/12 04:49

既に回答がついていますが、、、 Unix/Linuxにドライブでアクセスするという概念はありません。ご存じですか? 全てのディレクトリ/ファイルは / (ルート)の下に置かれます。 物理的なドライブは、mountによってこのどこかのディレクトリに割り当てられます。 多分、それが分からないとすでにある回答は分からないと思います。
guest

回答2

0

ベストアンサー

【注意】各コマンドは何をしているのか理解の上で実行してください。1文字でも間違うと、ファイルが全て削除されたり、OSが起動しなくなったりして、OSインストールからやりなおさなければならない状況に陥ります。各コマンドを実行した際に発生する損失に対する責任は一切持ちません。

操作は全てrootで行います。


まず、新しいドライブをフォーマットしてfstabに追加してマウントしておいてください。

例えば、次のような操作です。

fdisk /dev/sdb (対話式で新しいパーティションを作成する、今回は/dev/sdb1を作るとします) mkfs.ext4 /dev/sdb1 mkdir /home2 echo "/dev/sdb1 /home2 ext4 defaults 0 0" >> /etc/fstab mount /home2

mountで正しくマウントされているかを確認してください。念のため、一度再起動して、マウントされているかを確認することをお勧めします。これで、新たに"/home2"が使えるようになりました。この領域は別のディスクになっています。この領域に、"user1"ユーザーのホームを移すという事で進めます。手段は、usermodコマンドで自動でするか、手動で行うかです。

※ SELinuxが有効の場合は、context等を設定する必要があります。AppArmorの場合は、必要に応じてプロファイルを書き換えておいてください。

usermodを使用(推奨)

※ 該当ユーザーがログインしているとうまくいかない場合があります。ご注意ください。

usermod user1 -d /home2/user1 -m

ホームにあったファイルはすべて新しいホームに移動しています。次回ログインから、新しいホームになっているはずです。(ファイルは移動のため、古いホームは削除されています。)

手動で/etc/passwdを変更

まずは、ホームの用意とコピーを行います。

cp -rip /home/user1 /home2/user1

つぎに/etc/passwdを操作しますが、vipwを使います。

vipw

"user1"のエントリーにある"/home/user1"というのを"/home2/user1"に書き換えます。

これで完了です。該当ユーザーでログインして、正常に動作することを確認してください。古いホームは残ったままです。問題なければ、削除しても構いません。

/home全体を新しいドライブにする(上級者向け)

一人のユーザーだけではなく、全体を変えたい場合は、/home自体を変えた方が速いです。

root以外にログインしたユーザーがいると失敗する場合があります。

古いホームから新しいホームへ全てのファイルをコピーしておきます。容量が多い場合、rsyncを使うことをお勧めします。(二回走らせることを前提にすれば、一回目の最中も作業ができるから)

rsync -av --delete /home/ /home2/

/home2をアンマウントします。

umount /home2

/homeを/home_oldに変更し、/home2を/homeに変更します。

mv /home /home_old mv /home2 /home

/etc/fstabについてマウント情報を書き換えます。

/dev/sdb1 /home ext4 defaults 0 0

/homeをマウントします。

mount /home

一般ユーザーでログインして、動作を確認します。一度再起動して、ログインできるかも確認しておいてください。問題が無ければ、/home_oldは不要なので、削除しておいてください。

投稿2020/04/12 03:07

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

usermodでホームディレクトリを変更する。

sh

1$ man usermod 2... 3 -d home_dir 4 新しいログインディレクトリ。 -m オプションを用いると、 現在の 5 ホームディレクトリの中身が新しいホームディレクトリに移動される 6 (後者が存在しない場合は新たに作成される)。 7 8$ su - 9$ usermod -d /ssd2/home/yourname -m yourname

別の手としては、シンボリックリンクを張る、という手もありますね。

sh

1$ su - 2$ mkdir /ssd2/home 3$ mv /ssd1/home/yourname /ssd2/home 4$ ln -s /ssd2/home/yourname /ssd1/home/

ssd2のマウントポイントを変更する手もありますね。

sh

1$ su - 2$ mv /home /home-save 3$ mkdir /home 4$ mount /dev/ssd2/... /home 5$ mv /home-save/* /home

バックアップはお忘れなく。

投稿2020/04/12 02:41

編集2020/04/12 02:50
shiketa

総合スコア3990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noc

2020/04/12 05:06

素早い回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問