ArchLinuxにxrdpを入れてリモートデスクトップする

  1. AURヘルパーのインストール

    xrdpはAURのパッケージなので手動でやるとめんどくさい。AURヘルパーを導入する。
    AURヘルパーで検索するとyaourt入れてる人が多いがこいつはもうメンテされてないらしいので別のをいれる。
    ArchWikiのAURヘルパーのページを参考になんか名前がかっこいいtrizenを入れる。

    1
    2
    3
    $ git clone https://aur.archlinux.org/trizen.git
    $ cd trizen
    $ makepkg -sir
  2. xrdpのインストール
    バックエンドにxorgを使うつもりなのでxorgxrdpもインストール

    1
    $ trizen -S xrdp xorgxrdp
  3. そのほか必要なものインストール

    1
    $ sudo pacman -S xorg xterm xorg-twm
  4. 設定

    /etc/X11/Xwrapper.configを作成、中身は以下

    1
    allowed_users = anybody

    xinitrcをホームにコピー

    1
    $ cp /etx/X11/xinit/xinitrc ~/.xinitrc

    サービスの有効化

    1
    2
    $ sudo systemctl enable xrdp
    $ sudo systemctl enable xrdp-sesman

ラズパイでファイルサーバー構築2

前の続き
NFSサーバーのインストールと動作までできたけど、まだ問題があったのでメモ

問題その1 書き込めない

まずその前に前回のコマンドラインでの接続だとエクスプローラーで見れなかったので、
エクスプローラー開いて左PCを選択してメニューに出てくるネットワークドライブの割り当てでエクスプローラーに表示されるように。

んで試しにファイルをドラッグ&ドロップでなんかエラーが出て書き込めない。
新規作成でフォルダを作ってみる。
これはできた。

よくわからないのでサーバーの方を確認。
nfs rpc fragment too large ~ ってなのが流れてきてる。
ググってみると書き込みのサイズが大きすぎるっぽい。んで調べた結果windows側でnfsadminなるコマンドで設定を変えれるみたい
以下で現在の設定を確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> nfsadmin client config

localhost の設定

プロトコル : TCP+UDP
マウントの種類 : ソフト
大文字小文字を区別する : いいえ
再試行回数 : 1
タイムアウト : 8 秒
読み取りバッファー サイズ : 1024 KiloBytes
書き込みバッファー サイズ : 1024 KiloBytes
予約ポートを使用する : はい
セキュリティの種類 : sys,krb5,krb5i,krb5p

ファイルの設定
ユーザー : rwx
グループ : r-x
その他 : r-x

1024KBらしいとりあえず半分にしてみる.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#書き込み
> nfsadmin client config wsize=512
設定が正常に更新されました。
#読み込み
> nfsadmin client config rsize=512
設定が正常に更新されました。
#確認
> nfsadmin client config

localhost の設定

プロトコル : TCP+UDP
マウントの種類 : ソフト
大文字小文字を区別する : いいえ
再試行回数 : 1
タイムアウト : 8 秒
読み取りバッファー サイズ : 512 KiloBytes
書き込みバッファー サイズ : 512 KiloBytes
予約ポートを使用する : はい
セキュリティの種類 : sys,krb5,krb5i,krb5p

ファイルの設定
ユーザー : rwx
グループ : r-x
その他 : r-x

これで書き込みができるようになりました。
GUIでもWindows管理ツールにNFSの設定できるのがあったんでだけど変更できるのはプロトコルとか再試行回数とかで、
書き込み、読み込みサイズはCUIからしかできないみたい。

問題2 文字化け

よしできたってことmusicフォルダをドラック&ドロップでぶち込んで、Volumoの方でも一度初期化してネットワークドライブの設定して音楽ファイルのスキャンを実行。
なんだけどなぜか一部の曲しか認識されない、エクスプローラーで確認してもちゃんと全部書き込まれてるし、再生もできる。
なんでじゃ???って思ってたんだけどサーバ側でファイル見たら一発解決ファイル名がめっちゃ文字化けしてる!!!
文字コードはWindowsはShft-JISでLinuxはUTF8なんでそりゃそうだですよねー。
ってとでファイル名の文字コード変換コマンドで変換。

1
2
# cd /mnt/hdd1/music
# convmv -r -f shift_jis -t utf * --notest

再度Volummioでスキャンしてみると全曲認識された。
で解決したとおもいきや、今度はWindows側で文字化け。
ですよねーってことでどうするか?

Linuxはmountコマンドのオプションで文字コード指定とかできるみたいだけど、Windowsはできないらしい。
クライアント側でどうにかできないならサーバー側でどうにかするしかないってことで調べるとfuse-convmvfsなるものが使えそう。

https://ja.osdn.net/projects/sfnet_fuse-convmvfs/
これは 1 つの文字セットから別にファイル名を変換するファイルシステムです。それはヒューズ (ユーザランドファイルシステム) を使用して実装されます。

これでsjisでマウントしたものをWindowsようにエクスポートすればいい。
ここでまた問題CentOSはこれのパッケージがない。。。
自分でビルドしなきゃなんだけどサーバー運用するマシンにビルド環境いれるのはなんか気持ち悪い。
なのでrpm作ってインストールしよう。

別のSDカードにもっかいCentOS焼いてラズパイにさしてそっちで作業。
http://rpmfind.net/linux/RPM/fedora/devel/rawhide/x86_64/f/fuse-convmvfs-0.2.6-16.fc28.x86_64.html
幸いfedora向けのrpmパッケージはあるみたいののでfuse-convmvfs-0.2.6-16.fc28.src.rpmをもらってくる。

1
# curl -O -L https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/source/tree/Packages/f/fuse-convmvfs-0.2.6-16.fc28.src.rpm

展開

1
2
3
4
5
6
7
8
# rpm -ivh fuse-convmvfs-0.2.6-16.fc28.src.rpm
warning: fuse-convmvfs-0.2.6-16.fc28.src.rpm: Header V3 RSA/SHA256 Signature, key ID 429476b4: NOKEY
Updating / installing...
1:fuse-convmvfs-0.2.6-16.fc28 ################################# [100%]
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root

ビルドに必要なパッケージのインストール

1
# yum install gcc gcc-c++ make fuse-devel libattr-devel rpm-build

ビルド

1
2
3
4
5
6
7
8
9
10
11
12
# cd ~/rpmbuild
# rpmbuild -bb SPECS/fuse-convmvfs.spec
...
...
...
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd fuse-convmvfs-0.2.6
+ rm -rf /root/rpmbuild/BUILDROOT/fuse-convmvfs-0.2.6-16.el7.centos.armv7hl
+ exit 0
# ls RPMS/armv7hl/
fuse-convmvfs-0.2.6-16.el7.centos.armv7hl.rpm fuse-convmvfs-debuginfo-0.2.6-16.el7.centos.armv7hl.rpm

fuse-convmvfs-0.2.6-16.el7.centos.armv7hl.rpm
こっちをいったん別マシンに引き上げて、またNFSサーバをインストールしたSDカードにいれかえて持ってきます。

インストール

1
2
3
# yum localinstall fuse-convmvfs-0.2.6-16.el7.centos.armv7hl.rpm
# ls /bin | grep convmvfs
convmvfs

/binの下にインストールされました~。

使ってみる。

1
2
# mkdir /mnt/hdd1_sjis
# convmvfs -o ocharset=cp932,srcdir=/mnt/hdd1 /mnt/hdd1_sjis

これだと一回こっきりなので/etc/fstabに追記で自動マウントするように

1
2
3
4
5
UUID=29b74cbb-382b-49ea-91c8-f1dcb9cae36c  / ext4    defaults,noatime 0 0
UUID=FE5A-B773 /boot vfat defaults,noatime 0 0
UUID=b0c2039d-218d-47ba-9c9f-dffb7df77228 swap swap defaults,noatime 0 0
UUID=cefbb8c2-ae53-4223-b6c2-77d386a70cca /mnt/hdd1 ext4 defaults,noatime,nofail 0 0
convmvfs /mnt/hdd1_sjis fuse ocharset=cp932,srcdir=/mnt/hdd1 0 0

/etc/exportsに追記

1
2
/mnt/hdd1 192.168.0.0/24(rw)
/mnt/hdd1_sjis 192.168.0.0/24(rw,fsid=1)

エクスポートもとがfuseだとfsidの指定が必要らしい。

これでようやく目的の環境が完成。

ラズパイでファイルサーバー構築1

うちにラズパイ2と3の2台あって、2の方はVolumio入れて運用してたんだけど3は去年買ったままずっと放置してたんでこの前ようやくファイルサーバーとして使いだしたのでその構築メモ。

結構四苦八苦した。

すでにファイルサーバは普通のマシン上で構築してて、そこに音楽ファイルをおいてVolumioから接続して使っておりました。
けど適当に組んだマシンなんで結構ファンとかうるさい、なのでラズパイで運用すれば静かになるかなーと。

Debian系になれてないのでCentOSを入れてみた。
なんか調べるとCentOSだとwifi使うのにgithubからファームウェアとってきてカーネルアップデートしてとかめんどくさいこと書いてあったんだけど、はその辺必要なくなったらしい。
ここの”Minimal image for RaspberryPi 2/3”をとってきて焼いてみてネットワークインターフェース確認してみた結果

1
2
3
4
5
6
7
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether b8:27:eb:f0:3e:72 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DORMANT group default qlen 1000
link/ether c6:51:8d:96:4d:d0 brd ff:ff:ff:ff:ff:ff

wlan0いるじゃん!!

てわけでwifiつないでみる&固定ip設定。

1
2
# nmcli d wifi connect aterm-******-g password ************ 
# nmcli c modify aterm-******-g ipv4.method manual ipv4.address 192.168.0.100 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.1

このために新しく買った4TBのUSBポータブルHDDをつないでみるNTFSでフォーマットされてるみたい、NTFSのマウントにはntfs-3gなるパッケージが必要らしい。

1
2
3
4
5
# yum install ntfs-3g
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package ntfs-3g available.
Error: Nothing to do

いない。
調べたらepelにはいってるらしい

1
2
3
4
5
# yum install epel-release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package epel-release available.
Error: Nothing to do

いない。
調べたらarm向けのepelリポジトリはないらしい。
じょうがないので新しくext4でフォーマット,blkidでUUID調べる

1
2
3
4
5
6
7
# mkfs.ex4 /dev/sda1
# blkid
/dev/mmcblk0p1: UUID="FE5A-B773" TYPE="vfat"
/dev/mmcblk0p2: LABEL="_swap" UUID="b0c2039d-218d-47ba-9c9f-dffb7df77228" TYPE="swap"
/dev/mmcblk0p3: LABEL="_/" UUID="29b74cbb-382b-49ea-91c8-f1dcb9cae36c" TYPE="ext4"
/dev/mmcblk0: PTTYPE="dos"
/dev/sda1: UUID="cefbb8c2-ae53-4223-b6c2-77d386a70cca" TYPE="ext4" PARTLABEL="PHDD" PARTUUID="1def00cc-6ab0-4c01-8a5b-6d45d28ae7c4"

/etc/fstabに追記

1
2
3
4
UUID=29b74cbb-382b-49ea-91c8-f1dcb9cae36c  / ext4    defaults,noatime 0 0
UUID=FE5A-B773 /boot vfat defaults,noatime 0 0
UUID=b0c2039d-218d-47ba-9c9f-dffb7df77228 swap swap defaults,noatime 0 0
UUID=cefbb8c2-ae53-4223-b6c2-77d386a70cca /mnt/hdd1 ext4 defaults,noatime,nofail 0 0

ファイルサーバのソフトをインストール前はsambaを使ってたので今回は勉強がてらnfsを使ってみる。

1
# yum install nfs-utils

/etc/exportsに追記

1
/mnt/hdd1 192.168.0.1/24(rw)

公開したいディレクトリ 公開対象(オプション)
の形式らしい。
公開対象の部分は家のネットワークにいるマシンみんなから繋ぎたいのでネットマスクで範囲指定

とりあえずファイヤーウォールを切る

1
# systemctl stop firewalld

nfsの起動

1
# systemctl start nfs

Windowsから繋いでみるぞ!
コントロールパネルのプログラムのWindousの機能の有効化または無効化
から
NFS用サービスのNFSクライアントと管理サービスを有効化

1
2
3
4
>mount \\192.168.0.100\/mnt/hdd1 X:\
X: は \\192.168.0.100\/mnt/hdd1 に正常に接続しました

コマンドは正常に終了しました。

できた。

この後まだまだ色々めんどくさかったけどとりあえずここ迄。