Linuxのサルマップ(2)Macで操れるようにLinuxの各種設定

Linuxというとなにかとハードルは高いような気がしますが、Macのターミナルで使うぶんには、慣れ親しんだ「Macで気軽にバイオインフォ解析」と何ら変わりません。摂南大芳本さん流のLinuxサルマップ、後編です。やることは
(1)sshの設定
(2)各種ドライブのマウント
(3)sambaの設定
の3点になります。

(1)sshの設定

前編でゲーム用ミニPCをLinuxマシンにするところまで行きましたが、無事に立ち上がると、こんな画面が出てきます。なんか新鮮!

Linux (Ubuntu)の初期画面

ところが、ところが、MacやWindowsに慣れていると、ここから先どうしたらよいかわからないんですよね。まずはネットワーク設定しようにも、設定関連がどこかわからない。。。適当にググると、左上の小さいActivitiesボタンから行くのが便利とのこと。

左上のActivitiesボタン(小さっ!)

検索窓にSettingと打ち込むと、アプリケーションの候補が下に出てきて、Settingを立ち上げて、

検索窓に入れればアプリケーションが下に出てくる。

有線LANであればWiredの設定歯車ボタンで設定することができます。

ネットワーク設定。このへんはMacとそんな変わらない感じです。

次はMacからsshで接続できるようにします。LinuxでもTerminalはTerminalなんですね。Terminalと検索してTerminalを立ち上げて、

TerminalのアイコンはMacと同じ!

以下のコマンドを打ち込みます。パスワード入力を求められたらLinuxインストールのときに作ったユーザーのパスワードを入力します。しかしこのsudoって、どう見ても須藤さんですよね。このコマンド打つたびに人生にこれまでであった須藤さんの顔が走馬灯のように蘇ります。sudoさん。superuser doの略だと知ったのはついこないだ。こんな事も知らずにぼーっと生きていたとは。

sudo apt update
sudo apt install openssh-server
hostname -I
whoami

LinuxのTerminalはMacよりカラフルでわかりやすい

最後のhostname -I(大文字のアイ)で出てきたアドレスと、先ほどwhoamiで確認したユーザー名をメモして、はい、短いお付き合いでしたが、これでLinuxとはお別れです。えっ?もうさよなら?というぐらいあっけないですが、そうなんですね。いいんです。短くても中身が濃ければ。ですので、はっきり言ってこのLinuxマシン用にモニターやキーボードを購入する必要は全く無く、そのあたりのPCについているのをちょっと拝借してここまでの設定するだけでオーケー。ここから先は慣れ親しんだMac、もしくはWindowsでの操作になります。

まずはMacのターミナルからのログインです。先ほど確認したユーザ名とホストIPアドレス(2つあれば左の方)を使って、ssh ユーザ名@IPアドレスでssh接続することができます。

ssh username@XXX.XXX.XXX.XXX

ssh接続してしまえばあとは手慣れたMacでの操作

(2)各種ドライブのマウント

次に、増設した解析用SSDをマウントし、Mac側からSamba接続できるようにします。こうすることで、Fastqなどのデータを解析用のSSDにDrag&Dropで移動したり、解析の結果出てきたbamやらtxtファイルを自分のMacに吸い出したり、を簡単に行うことができます。この設定、実は結構めんどくさくて今回は芳本さんに手取り足取り教えてもらいましたが、webをググるといろんなやり方が乗っていますし、多分今一番楽なのはChatGPTに聞くやり方だと思います。「UbuntuのLinuxにSSDをマウントして、外部のMacからSamba接続できるように設定しようとしています。どうしたら良いですか?」みたいに聞けば、懇切丁寧に教えてくれますし、エラーが出た場合はそれをコピペして「こんなエラーが出たんですけどどうしたら良いですか」と聞けば、解決策を提示してくれます。まさにラボ専属のSEがいてくれる感じ。

chsh -s /bin/bash    #shellをbashにする(初回のみ)
sudo fdisk -l         #SSDのデバイス名を取得する

たくさんディスクが出てきますが、サイズから見て増設HHDはこれですね。

この場合、デバイス名は/dev/sdaになります。次にこのデバイスをマウントするためのディレクトリを作成します。このあたりの概念がMacにないのでちょっと手惑いますが、デバイスとLinuxのファイルシステムを紐付けてやる、という感じでしょうか。

sudo mkfs.ext4 /dev/sda #フォーマット済みのSSDの場合は不要
sudo mkdir /mnt/SER6_DATA #SER6_DATAという名前のSSDでマウントするためのディレクトリ作成
sudo mount /dev/sda /mnt/SER6_DATA #とりあえずマウント
sudo blkid /dev/sda #次回以降システム起動時にマウントするためsdaのUUIDを取得する
sudo nano /etc/fstab #マウントの情報が入ったfstabファイルを書き換える
#nano editorを使って最後の行に先ほど取得したUUIDを使って以下の文を追加する
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/SER6_DATA ext4 defaults 0 0

nanoコマンドを入れると下図のような感じでnanoエディタが立ち上がってきます。カーソルを矢印キーで動かして、最後の行の所にblkidで取得したsdaのUUIDを入れ、マウントするディレクトリを指定し、あと、はChatGPTの指示通りext4 defaults 0 0を書き足してます。ハイライトしたところが追加した行です。エディタを使ってシステムのファイルを書き換えるというのはLinuxでは頻繁に出てくる操作で、このあたりをSystem PreferenceでやってくれているのがMacやWindowsみたいなOSなんでしょうが、コマンドラインでやらなければいけないところが、ちょっこっとハードルが高いのは事実。でも、慣れれば、そんなもんか、という感じ。最初のうちは、そもそもterminalの中で立ち上がるエディタというのがよく分からなくて、カーソルはマウスでポインタを移そうとしても動かないし、矢印キーで動かせることが分かっても、え、どうやって編集するの?どうやって保存するの?みたいな基本的なところから躓いていたのですが、困ったら聞けばいいんですね。芳本さんに聞きまくってなんとか進み、流石にもう寝てるだろうとか、ちょっとこんなことまで聞くのは申し訳ないなあとなったらChatGPTに聞く、で、なんとか設定できました。ChatGPTは本当に便利で、「Linuxのnanoでどうやって保存するんですか?」「スクロールするのが面倒くさいので最後の行にジャンプしたいんですけどどうすればいいんですか?」みたいな質問でも、ベイマックスのように教えてくれます。最初から付き合ってもらっているとコンテクストまで理解してくれるので、「聞きまくるといいことがある」という研究業界の鉄則を、まさに体感できます。nanoエディターの場合、書き換えたら^(コントロール)Xで終了、保存するかどうか聞かれるのでYを入力、ファイルの名前を聞かれるのでreturnを押せばオーケーです。

nanoエディタを使った設定ファイルの編集画面。terminal内で別のアプリケーションが立ち上がっているという状態が普段の感覚からするとだいぶ変。

(3)sambaの設定

さて、これでマウントできましたので、その中にSambaでアクセスできるためのフォルダshareを作成します。HDDまるごとシェアしてもよいのでしょうが、一応Linuxマシンからしかアクセスできないものと、Sambaを使って外部PCからアクセスできるものと分けておいたほうが良いとの芳本さんのアドバイスです。

sudo mkdir -p /mnt/SER6_DATA/share #DATA用SSDのSER6_DATAに共有用のshareというフォルダを作る
sudo chmod -R 777 /mnt/SER6_DATA/share #共有設定を一般ユーザーでもアクセスできるようにする

そしていよいよSambaで外部PCからアクセスできるようにします。そのためのアプリケーションがSamba。大学等だと部局のPCが丸見えなところもあって、外部からアクセスする際にログイン名とパスワードを要求するようにする必要がありますが、ユーザーごとに設定するのは面倒なので、Samba接続専用のアカウントser6_smbを作って設定する場合です。最後にsamba用の設定ファイルの書き換えをしています。

sudo apt update #おまじない
sudo apt install samba #sambaをインストール
sudo adduser ser6_smb #samba接続専用のアカウント"ser6_smb"を作成
sudo smbpasswd -a ser6_smb #smb用のユーザとしてser6/smbを登録しています
#パスワード設定を要求されるので適宜入力
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup #念の為現在の設定をバックアップ
sudo nano /etc/samba/smb.conf #おなじみnanoでの設定ファイルの変更

最後のコマンドを打つとnanoエディタが立ち上がってsamba用の設定ファイルの方を書き換えができます。

入れるべきテキストは以下のとおりです。

[SER6_DATA_share]
path = /mnt/SER6_DATA/share
read only = no
browsable = yes
valid users = ser6_smb
create mask = 0666
directory mask = 0777
force create mode = 0666
force directory mode = 0777

このあたりの権限の設定が大事で、ここを間違えるとアクセスできなかったり、アクセスされまくったりしてしまいます。困ったときは芳本さんがつかまれば芳本さんに、ということを都度やっていたら流石に申し訳ないので、エラーが出たりつながらなかったときは、マイSEさん、ChatGPTさんに聞けば、懇切丁寧に教えてくれます。最後に須藤さんにお願いしてSambaサービスを起動です。

sudo systemctl restart smbd

ついでに、うちのラボではゲノムのデータやらインデックスやらをNASに入れているので、このNASも自動的にマウントしてもらえるように設定します。このあたり冗長になるので、コマンドラインのところだけ。

sudo mkdir -p /mnt/NGS_DATA2 #NASをマウントするためのディレクトリを作る
sudo nano /etc/nas-credentials.txt #接続情報を保存するためのファイルを作成し、必要な情報を追加
#nanoが立ち上がるので以下の情報を入力、^XおしてYおしてenter押してファイル作成
username = XXXXXX #NAS接続に使っていたユーザー名
password = XXXXXX #NAS接続に使っていたパスワード
#nanoから戻ってきたら以下のコマンドを入力
sudo apt-get update #おまじない
sudo apt-get install cifs-utils #mount helper プログラムをインストール
sudo nano /etc/fstab #システム起動時にマウントするためファイルを書き換える
#nanoが立ち上がるので以下の情報を入力。先程作ったnas-credentials.txt を参照させている
//XXX.XX.XX.XX/share /mnt/NGS_DATA2 cifs credentials=/etc/nas-credentials.txt,file_mode=0660,dir_mode=0777,sec=ntlmssp,vers=1.0 0 0

あとは須藤さんに頼んでrebootしてもらうだけ。

sudo reboot

立ち上がったときには、/mnt/SER6_data/shareフォルダにLinuxマシンからもsambaから接続できて、NASの/mnt/SER6_data/NGS_DATA2フォルダにLinuxマシンから接続できているはず。つまり、Macのterminalを使って「Macを使ってお気軽インフォ」をする環境が整ったことになります!