第1章 Ubuntu一般

第1章 Ubuntu一般

ユーザー管理

rootユーザーの初期設定

Ubuntuの初期ではrootユーザーが使えない. これは初期設定ではrootのパスワードが未設定であるためだ. したがってsuコマンドでrootユーザーを使えるようにするためには, 初めにrootユーザーのパスワードを設定する必要がある.

sudo passwd root

これでパスワードを設定すれば,以降suコマンドでrootユーザーになることができる.

rootのシェルを使うだけであれば, 以下のようにOSインストール時に作成したユーザー(というかsudoでroot権限が使えるユーザー)でsudoを使い,root権限のシェルを使えるようになれる.

sudo -s

ユーザーの一覧

登録されているユーザー名を確認するには, 以下のようにして「/etc/passwd」の中身を確認する.

cat /etc/passwd

ユーザー名とともに付随情報も列挙される.

付随情報なしでユーザー名のみを取り出したい場合は 次のようにする.

cut -d: -f1 /etc/passwd

ユーザーの切り替え

su <username>

カーネル起動時の出力表示

起動に時間がかかるなど,起動において異常がある際の参考になる.

dmesg

出力が多い場合は,以下のようにしてlessやmoreで見ることも可能.

dmesg | less

ネットワーク

IPアドレスの確認

  ip a

これでIPアドレスを表示できる.

接続の確認

  ping <IP address>

接続先のIPアドレスを引数に与えることで,通信が可能か確認できる.

ssh鍵の登録

マウント

外付けディスク

一般ユーザーによる書き込み権限の付加

そのままマウントすると,一般ユーザーでディスクに書き込みできない. マウント時に次のように設定することで書き込み可能にできる.

  id
  sudo mount -o uid=<userid>,gid=<groupid>

idコマンドで確認したid番号を,mountコマンドに与える. ネットではマウント後にchownコマンドで権限付加できるという記述があったが, そのコマンド自体が権限で拒否されて失敗した.

NASのマウント

  sudo apt-get install cifs-utils 

  sudo mkdir /mnt/nas(他の名前でも可)
  sudo mount -t cifs //172.17.26.172/disk1 /mnt/nas -o username=<name>,password=<pw>

GUIでNASに接続するのは容易であるが,CUIでもNASに接続できる. cfi-utilsをインストールしていなければインストールする. usernamepasswordはあらかじめNASに登録したユーザーIDとパスワード.

OneDriveのマウント

クラウドにはGoogle Driveもある. しかし大学のライセンスではOneDriveの方が容量が大きいため, ここではOneDriveのマウントを試みた.

Rcloneの準備

作業時参照サイト(2024.2.7):
https://www.fujimiya-san.com/archives/2439

まずはcurlとRcloneをインストールする.

sudo apt install curl
sudo -v ; curl https://rclone.org/install.sh | sudo bash

続いてRcloneの設定を行う.

rclone config

次のように「n」で新リモートを作成し,名前を指定する.

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Enter name for new remote.
name> onedrive_utokyo

続いて赤と緑の文字でストレージの種類を尋ねられるため, ここでOneDriveを探してその番号を入力する. 以下の例では34番.

...
33 / Microsoft Azure Files
   \ (azurefiles)
34 / Microsoft OneDrive
   \ (onedrive)
35 / OpenDrive
   \ (opendrive)
...
Storage> 34

クライアント関連は未入力.

Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>

その次はregionの設定. ほとんどの場合は1.

Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own string value.
Press Enter for the default (global).
1 / Microsoft Cloud Global
\ (global)
2 / Microsoft Cloud for US Government
\ (us)
3 / Microsoft Cloud Germany
\ (de)
4 / Azure and Office 365 operated by Vnet Group in China
\ (cn)
region> 1

高度な設定はNo.

Edit advanced config?
y) Yes
n) No (default)
y/n> n

ブラウザーが開き,Microsoftアカウントへのログインが求められる. 希望のアカウントを入力しログインする. 自動でブラウザの画面が送られてきたが, フリーズしていたため何度か繰り返して待つと動くようになった.

2024/02/07 20:08:40 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=CXNFxfxcx7kFU0xTNmRlig
2024/02/07 20:08:40 NOTICE: Log in and authorize rclone for access
2024/02/07 20:08:40 NOTICE: Waiting for code...
2024/02/07 20:13:44 NOTICE: Got code

入力すると最後の行のように直ちにGot codeと表示され次へ進む.

1を選ぶ.

Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
Press Enter for the default (onedrive).
 1 / OneDrive Personal or Business
   \ (onedrive)
 2 / Root Sharepoint site
   \ (sharepoint)
   / Sharepoint site name or URL
 3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite
   \ (url)
 4 / Search for a Sharepoint site
   \ (search)
 5 / Type in driveID (advanced)
   \ (driveid)
 6 / Type in SiteID (advanced)
   \ (siteid)
   / Sharepoint server-relative path (advanced)
 7 | E.g. /teams/hr
   \ (path)
config_type> 1

ドライブを選ぶ.1つしかないので1を選択.

Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (b!B6VhbJMLPUO0uUYMDaOGBLuNH5pR9adBsJsyk5sSt3cZ9VcKJQa-Sreej4jO7Oeq).
 1 / OneDrive (business)
   \ (...)

ドライブが見つかり,表示内容で良ければy.

Drive OK?

Found drive "root" of type "business"
URL: ...

y) Yes (default)
n) No
y/n> y

最後の確認.良ければy.

...
- drive_type: business
Keep this "onedrive_utokyo" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

完了すると以下のトップ画面になる. 先ほどのドライブが登録されている. qで終了する.

Current remotes:

Name                 Type
====                 ====
onedrive_utokyo      onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

rcloneのリモートのマウント

ドライブを登録できたらそれをマウントする. マウントもrcloneのコマンドで行う.

–vfs-cache-mode writesというオプションをつけないと

NOTICE: "onedrive_utokyo" refers to a local folder, use "onedrive_utokyo:" to refer to your remote or "./onedrive_utokyo" to hide this warning

というメッセージが出る. またマウント先のディレクトリの権限を775にしないと

2024/02/07 20:57:31 mount helper error: fusermount3: user has no write access to mountpoint /mnt/onedrive
2024/02/07 20:57:31 Fatal error: failed to mount FUSE fs: fusermount: exit status 1

のようなエラーが出た.

–daemonオプションをつけるとバックグラウンドでつないでくれる.一方でこのオプションがないと新しくターミナルを開かないと作業できなくなるので注意.

rclone mount onedrive_utokyo:/ /mnt/onedrive/ --vfs-cache-mode writes --daemon

最後に今後自動でマウントするために設定ファイルに書き込む.

storage_name: <マウント先> rclone rw,noauto,nofail,_netdev,x-systemd.automount,args2env,vfs_cache_mode=writes,config=<rclone config file で表示されるパス>,cache_dir=/var/cache/rclone 0 0

マウント先とconfigファイルのパスを適宜入れること.

アンマウント

sudo umount <マウント先>

オプション:

  • -f: 強制アンマウント
  • -l: -fでアンマウントできない場合でも強制的にアンマウント

LVMの構成

単純な例

LVMは複数のディスクをまとめて一つのストレージとして扱う技術である. 複数のディスクにまたがるほど大容量のデータを保存したいときに役立つだろう.

まずは必要なライブラリをインストールする.

sudo apt install lvm2
sudo apt install xfsprogs

続けて,ここで自動でディスクがマウントされた場合はアンマウントする:

sudo umount <disk>

すでにパーティションが作成されている場合(lsblkなどで確認), それも削除する.

sudo wipefs -a <partition; e.g. /dev/sda>

ここから作業.

sudo pvcreate <e.g. /dev/sda>
sudo vgcreate <hdddGroup> </dev/sda /dev/sdb ...>
sudo lvcreate -l 100%FREE -n lv0 <hddGroup>

sudo mkfs -t xfs </dev/hddGroup/lv0>
sudo mount -t xfs </dev/hddGroup/lv0> <mount先>

次にgeditなどで/etc/fstabに追記する. これは自動でmountが行われるようにするための作業である.

sudo gedit /etc/fstab

追記内容は以下:

/dev/mapper/hddGroup-lv0 <mount先> /hdd xfs defaults 0 0

ストライプ化する例

ストライプ化によりデータを細かく分割して分散保存する. これにより高速化が期待される.

事前準備として,必要なライブラリをインストールする.

sudo apt install lvm2
sudo apt install xfsprogs

続けて,ここで自動でディスクがマウントされた場合はアンマウントする:

sudo umount <disk>

すでにパーティションが作成されている場合(lsblkなどで確認), それも削除する.

sudo wipefs -a <partition; e.g. /dev/sda>

ここからが本筋の作業である. まずはまとめたいディクスにLVMのラベルを付与する.

sudo pvcreate </dev/sda /dev/sdb ...>

これらをボリュームグループにまとめる.

sudo vgcreate <vg name> </dev/sda /dev/sdb ...>

ストライプ化した論理ボリュームを作成する. -iはストライプ数で,まとめたいディスクの数にすればよい. -Iはストライプサイズ.適切な値はよくわからない.

sudo lvcreate -l 100%VG -i <ディスク数> -I 64 -n <lv name> <vg name>

最後に論理ボリュームにファイルシステムを作成する.

sudo mkfs.xfs -f /dev/<lv name>/<vg name>

これで/dev/<lv name>/<vg name>を通常のディスクのようにマウントできるようになる.

LVMの認識

LVM構成のディスクを指しているにもかかわらず,LVMが認識されない場合, LVMを認識する作業が必要である.

以下のようにボリュームグループ (vg) のスキャンとアクティブ化,論理ボリューム (lv) のスキャンを行う.

sudo vgscan
sudo vgchange -ay
sudo lvscan

これでLVMをマウントできるようになるはず.

上記のコマンドを使用するにはlvm2のインストールが必要である.

dpkg -l | grep lvm

をしてインストールされていないことがわかれば,

sudo apt install lvm2

でインストールする.

プロセス

プロセスの確認

ps -<option>

ps -xなど.実行中のプロセスを表示する.

または,

top

でリアルタイムでプロセスを確認できる. Windowsでいうタスクマネージャーのような感じ.

バックグラウンドプロセス

出力の確認

出力は/proc/\<process ID>/fd/1に格納されている. したがって

cat /proc/<process ID>/fd/1

で確認可能.プロセスIDはpsなどで調べておく. 実行コマンド名や実行時間などをもとに目的のプロセスを探すこと.

シャットダウン・再起動

shutdownコマンドの引数でシャットダウン, シャットダウンの場合 (–poweroff):

shutdown -P now

マシンの電源を切る.shutdownコマンドのデフォルトがこれなので,オプションはなくてもよさそうだ. なお「-h」引数でも同じである.

ただし,オプションを「-H」とした場合はCPUのみ停止し,マシン自体の電源は切らないので注意.

再起動の場合 (–reboot):

shutdown -r now

最後にはnowのみならず任意の時刻を指定できる. 5分後であれば「shutdown -h +5」,3時であれば「shutdown -h 03:00」のようにする.

なお,時刻指定をした場合は次のコマンドでシャットダウン/再起動の予定をキャンセルできる:

shutdown -c