タイトル通り,Windows Server 2019上のWSL (Windows Subsystem for Linux)でUbuntu18.04を使えるようにした際の備忘録です.
Windows Server 2019でWSLやHyper-V上のUbuntu18.04にCUDA環境を構築しようとして断念
の,WSL部分(Ubuntuのインストール)です.
ほとんどの部分がWindows 10でも共通で,試しにWin10に入れてみた際のメモも所々にあります.
はじめに
主に,Windows Serverならではの部分で
- WSL を Windows Server 2019 にインストールする方法
- WSL その110 - Windows ServerでLinuxがインストール可能に・Windows Server 2016にUbuntuをインストールするには
を,設定周りで
辺りを参考にインストールしました.
以降,Administratorで作業しているので元々管理者ですが,Windows 10でやるなら普通は権限付いてこないので管理者権限付きPowerShellで行なう必要あり.
WSLの有効化
とりあえずTask ManagerのUserか
> query user
で誰か使ってないか&弄くり回して大丈夫か確認.
そして,
> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
でWSLを有効化.
GUIなら「役割と機能の追加ウィザード」の「機能」にある「Windows Subsystem for Linux」からでも良い.
(Win10のGUIならコントロールパネルの「プログラムと機能」の「Windowsの機能の有効化または無効化」)
Path :
Online : True
RestartNeeded : False
というメモがあるので,おそらくサーバ自体の環境構築中に無意識にGUIでインストール済みだったと思われる.
そして,
> Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
で
FeatureName : Microsoft-Windows-Subsystem-Linux
DisplayName : Windows Subsystem for Linux
Description : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実行するためのサービスと環境を提
供します。
RestartRequired : Possible
State : Enabled
CustomProperties :
ServerComponent\Description : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実
行するためのサービスと環境を提供します。
ServerComponent\DisplayName : Windows Subsystem for Linux
ServerComponent\Id : 1033
ServerComponent\Type : Feature
ServerComponent\UniqueName : Microsoft-Windows-Subsystem-Linux
ServerComponent\Deploys\Update\Name : Microsoft-Windows-Subsystem-Linux
のように「State: Enabled」ならOK.
いちいち確認しなくても,駄目ならインストール時に怒られるのでわかりますが.
Ubuntu18.04のインストールと設定
めちゃ簡単です.
インストール
大抵の場合ググると「Microsoft Store(旧Windows Store)からサクッとインストール」な記事が出てきますが,Windows Serverにそんなものは無いので…
参考記事に従って Ubuntu 18.04 から「CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc.Appx」をDownload.
せっかくサクサク動くGUI付きサーバなので普通にブラウザで落としました.
そしてこれまたGUIでエクスプローラから探してzipとして解凍,中にある「ubuntu1804.exe」を実行.
ちなみにココはCUIからの実行でもGUIでのダブルクリックでも良いし管理者権限も要らない模様.
インストール自体はUNIX usernameとUNIX passwordを聞かれる程度で終了.
起動
wslと叩けば
> wsl
$
Ubuntuのコンソールに突入.
起動方法は
こんな差があるそうですが,自分はwslとしか叩いてないです.
インストール中のコンソールはウィンドウのアイコンがUbuntuのマーク(ubuntu1804.exeのアイコン)だったけど,これを今後どう呼び出すのかは不明.Windows 10でMicrosoft Store経由ならどっかにショートカットとか出来上がるのかも?
→試しに1903なWin10の手元のノートへMicrosoft Store経由で入れてみたらスタートメニューに追加されてました.
Microsoft Store,初めて触りました(^_^;)
初期設定
この後色々入れるため,参考記事に「ダウンロード速くなるよ」って書いてあったのでそのまま従って以下のようにRepositoryを日本サーバへ.
$ cd /etc/apt
$ sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list
そのまま参考記事通りに更新と時刻設定.
$ sudo apt update && sudo apt upgrade -y
$ sudo dpkg-reconfigure tzdata
更新は日本サーバになっててもそれなりに時間がかかる.
タイムゾーンに関しては↓のように画面で「Asia→Tokyo」を選ぶだけ.
Japanとかは経由せずに地域→都市名(タイムゾーン)です.
ちゃんと設定されると
$ sudo dpkg-reconfigure tzdata
Current default time zone: 'Asia/Tokyo'
Local time is now: Wed Jun 12 12:14:15 JST 2019.
Universal Time is now: Wed Jun 12 03:14:15 UTC 2019.
こうなります.
→試しに1903なWin10にMicrosoft Store経由で入れた場合は初めからTokyoになっていました.
あとこれも参考記事通りに
$ sudo apt install build-essential
でgccとかをとりあえず入れておく.
ただ,nvidiaのドライバを手動で頑張って入れようとするとKernelのコンパイラバージョンと合わせるだの何だのが出てきて依存関係等々厄介な事になるので,そういう可能性があるならその辺も見越して自分で個別に入れていった方が良い.
(自分はココは解決したものの結局別の部分で断念した)
まぁ,そもそも使えないので関係ないのですが.
WslFsへ
やってもやらなくても良いと思うけど,lxfs→wslfsな作業.
--upgrade
オプションでいけます.
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs lxfs 976197628 177239700 798957928 19% /
none tmpfs 976197628 177239700 798957928 19% /dev
none tmpfs 976197628 177239700 798957928 19% /run
none tmpfs 976197628 177239700 798957928 19% /run/lock
none tmpfs 976197628 177239700 798957928 19% /run/shm
none tmpfs 976197628 177239700 798957928 19% /run/user
C: drvfs 976197628 177239700 798957928 19% /mnt/c
D: drvfs 1953497084 8864984 1944632100 1% /mnt/d
こんな感じでdefaultはlxfsで,
$ exit
logout
> wslconfig /l
Windows Subsystem for Linux ディストリビューション:
Ubuntu-18.04 (既定)
> wslconfig /upgrade Ubuntu-18.04
とすると
> wslconfig /upgrade Ubuntu-18.04
アップグレードしています...
アップグレードが正常に完了しました。
> wsl
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs wslfs 976197628 177359424 798838204 19% /
none tmpfs 976197628 177359424 798838204 19% /dev
none tmpfs 976197628 177359424 798838204 19% /run
none tmpfs 976197628 177359424 798838204 19% /run/lock
none tmpfs 976197628 177359424 798838204 19% /run/shm
none tmpfs 976197628 177359424 798838204 19% /run/user
C: drvfs 976197628 177359424 798838204 19% /mnt/c
D: drvfs 1953497084 9065128 1944431956 1% /mnt/d
という感じでwslfsになります.
ちなみに確認用に手元のWin10で同じ操作をやろうとしたら,
コマンドが無い!
> wslconfig --help
Linux 用 Windows サブシステムの管理操作を実行します
使用法:
/l、/list [/all] - 登録されたディストリビューションを一覧表示します。
/all - すべてのディストリビューションを一覧表示します (オプション)。
現在インストールまたはアンインストール中のものも含まれます。
/s、/setdefault <DistributionName> - 指定のディストリビューションを既定として設定します。
/u、/unregister <DistributionName> - ディストリビューションの登録を解除します。
よく見たら1803でした,そりゃ無いですわ(´・ω・`)
1809以降であれば
terminateなど色々使えます.
> wslconfig --help
Linux 用 Windows サブシステムの管理操作を実行します
使用法:
/l, /list [/all]
登録されたディストリビューションを一覧表示します。
/all - すべてのディストリビューションを一覧表示します (オプション)。
現在インストールまたはアンインストール中のものも含まれます。
/s, /setdefault <ディストリビューション名>
ディストリビューションを既定として設定します。
/t, /terminate <ディストリビューション名>
ディストリビューションを終了します。
/u, /unregister <ディストリビューション名>
ディストリビューションの登録を解除します。
/upgrade <ディストリビューション名>
ディストリビューションを WslFs ファイル システム形式にアップグレードします。
こうなります.
そこで手元のノートにも試して気付いたのですが,1903ならwslconfig使わなくても
wslのオプションに統合された模様.
> wsl --help
Copyright (c) Microsoft Corporation. All rights reserved.
使用法: wsl.exe [Argument] [Options...] [CommandLine]
Linux バイナリを実行するための引数:
コマンド ラインを指定しないと、wsl.exe は既定のシェルを起動します。
--exec, -e <コマンド ライン>
指定したコマンドを、既定の Linux シェルを使用しないで実行します。
--
残りのコマンド ラインをそのまま渡します。
オプション:
--distribution, -d <ディストリビューション名>
指定したディストリビューションを実行します。
--user, -u <ユーザー名>
指定したユーザーとして実行します。
Windows Subsystem for Linux を管理するための引数:
--export <ディストリビューション名> <ファイル名>
ディストリビューションを tar ファイルにエクスポートします。
標準出力の場合は、ファイル名を - にできます。
--import <ディストリビューション名> <インストール場所> <ファイル名>
指定した tar ファイルを新しいディストリビューションとしてインポートします。
標準入力の場合は、ファイル名を - にできます。
--list, -l [Options]
ディストリビューションを一覧表示します。
オプション:
--all
現在インストール中またはアンインストール中のものを含めて
すべてのディストリビューションを一覧表示します。
--running
現在実行中のディストリビューションのみを一覧表示します。
-setdefault, -s <ディストリビューション名>
ディストリビューションを既定として設定します。
--terminate, -t <ディストリビューション名>
ディストリビューションを終了します。
--unregister <ディストリビューション名>
ディストリビューションの登録を解除します。
--upgrade <ディストリビューション名>
ディストリビューションを WslFs ファイル システム形式にアップグレードします。
--help
使用法を表示します。
つまり,
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs lxfs 248915528 160652060 88263468 65% /
none tmpfs 248915528 160652060 88263468 65% /dev
none tmpfs 248915528 160652060 88263468 65% /run
none tmpfs 248915528 160652060 88263468 65% /run/lock
none tmpfs 248915528 160652060 88263468 65% /run/shm
none tmpfs 248915528 160652060 88263468 65% /run/user
cgroup tmpfs 248915528 160652060 88263468 65% /sys/fs/cgroup
C:\ drvfs 248915528 160652060 88263468 65% /mnt/c
D:\ drvfs 1932902396 1461197200 471705196 76% /mnt/d
$ exit
> wsl -l
Windows Subsystem for Linux ディストリビューション:
Ubuntu-18.04 (既定)
> wsl --upgrade Ubuntu-18.04
アップグレードしています...
アップグレードが正常に完了しました。
> wsl
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs wslfs 248915528 160877036 88038492 65% /
none tmpfs 248915528 160877036 88038492 65% /dev
none tmpfs 248915528 160877036 88038492 65% /run
none tmpfs 248915528 160877036 88038492 65% /run/lock
none tmpfs 248915528 160877036 88038492 65% /run/shm
none tmpfs 248915528 160877036 88038492 65% /run/user
cgroup tmpfs 248915528 160877036 88038492 65% /sys/fs/cgroup
C:\ drvfs 248915528 160877036 88038492 65% /mnt/c
D:\ drvfs 1932902396 1461304468 471597928 76% /mnt/d
でいけました.
GUI操作設定
要らないんじゃないかという気もしたけど,試してみたかったので
を参考にxfce4の設定.
ちなみに
xfce4-terminal: After this operation, 69.2 MB of additional disk space will be used.
The following NEW packages will be installed:
adwaita-icon-theme at-spi2-core dbus-user-session dconf-gsettings-backend dconf-service exo-utils fontconfig
fontconfig-config fonts-dejavu-core glib-networking glib-networking-common glib-networking-services
gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme libatk-bridge2.0-0
libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcairo-gobject2
libcairo2 libcolord2 libcroco3 libcups2 libdatrie1 libdbus-glib-1-2 libdconf1 libepoxy0 libexo-2-0 libexo-common
libexo-helpers libfontconfig1 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgraphite2-3
libgtk-3-0 libgtk-3-bin libgtk-3-common libharfbuzz0b libice6 libjbig0 libjpeg-turbo8 libjpeg8 libjson-glib-1.0-0
libjson-glib-1.0-common liblcms2-2 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libproxy1v5
librest-0.7-0 librsvg2-2 librsvg2-common libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libstartup-notification0
libthai-data libthai0 libtiff5 liburi-perl libvte-2.91-0 libvte-2.91-common libwayland-client0 libwayland-cursor0
libwayland-egl1 libx11-xcb1 libxcb-render0 libxcb-shm0 libxcb-util1 libxcomposite1 libxcursor1 libxdamage1
libxfce4ui-2-0 libxfce4ui-common libxfce4util-bin libxfce4util-common libxfce4util7 libxfconf-0-2 libxfixes3 libxi6
libxinerama1 libxkbcommon0 libxrandr2 libxrender1 libxtst6 ubuntu-mono x11-common xfce4-terminal xfconf
0 upgraded, 96 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.3 MB of archives.
After this operation, 69.2 MB of additional disk space will be used.
Do you want to continue? [Y/n]
xfce4: After this operation, 437 MB of additional disk space will be used.
The following additional packages will be installed:
dbus-x11 desktop-base desktop-file-utils dictionaries-common emacsen-common gconf-service gconf-service-backend
gconf2 gconf2-common greybird-gtk-theme gstreamer1.0-plugins-base gtk2-engines-murrine gtk2-engines-xfce gvfs
gvfs-common gvfs-daemons gvfs-libs libart-2.0-2 libasound2 libasound2-data libasound2-plugins libasyncns0
libatasmart4 libatkmm-1.6-1v5 libauthen-sasl-perl libavahi-glib1 libblockdev-crypto2 libblockdev-fs2
libblockdev-loop2 libblockdev-part-err2 libblockdev-part2 libblockdev-swap2 libblockdev-utils2 libblockdev2
libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libcairomm-1.0-1v5 libcanberra-gtk3-0
libcanberra-gtk3-module libcanberra0 libcdparanoia0 libdata-dump-perl libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2
libdrm-radeon1 libegl-mesa0 libegl1 libegl1-mesa libencode-locale-perl libevdev2 libexif12 libexo-1-0
libfile-listing-perl libflac8 libfont-afm-perl libfontenc1 libgail-common libgail18 libgarcon-1-0 libgarcon-common
libgbm1 libgck-1-0 libgconf-2-4 libgcr-base-3-1 libgl1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 libglapi-mesa
libglibmm-2.4-1v5 libglu1-mesa libglvnd0 libglx-mesa0 libglx0 libgnome-2-0 libgnome-keyring-common libgnome-keyring0
libgnome2-common libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0
libgnomevfs2-common libgpgme11 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libgtkmm-3.0-1v5 libgudev-1.0-0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl
libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
libhttp-message-perl libhttp-negotiate-perl libical3 libimobiledevice6 libinput-bin libinput10 libio-html-perl
libio-socket-ssl-perl libjack-jackd2-0 libjpeg-turbo-progs libkeybinder-3.0-0 libllvm7 libltdl7
liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmtdev1 libnet-http-perl libnet-smtp-ssl-perl
libnet-ssleay-perl libnotify-bin libnotify4 libnspr4 libnss3 libogg0 libopus0 liborbit-2-0 liborc-0.4-0
libpangomm-1.4-1v5 libparted-fs-resize0 libpciaccess0 libplist3 libpoppler-glib8 libpoppler73
libpulse-mainloop-glib0 libpulse0 libpulsedsp libsamplerate0 libsecret-1-0 libsecret-common libsensors4
libsigc++-2.0-0v5 libsndfile1 libspeexdsp1 libtdb1 libtheora0 libthunarx-2-0 libtimedate-perl libtry-tiny-perl
libtumbler-1-0 libudisks2-0 libupower-glib3 libusbmuxd4 libvisual-0.4-0 libvolume-key1 libvorbis0a libvorbisenc2
libvorbisfile3 libwacom-bin libwacom-common libwacom2 libwayland-server0 libwebrtc-audio-processing1 libwnck-3-0
libwnck-3-common libwnck-common libwnck22 libwww-perl libwww-robotrules-perl libxatracker2 libxaw7 libxcb-dri2-0
libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxfce4panel-2.0-4
libxfce4ui-1-0 libxfce4ui-utils libxfont2 libxft2 libxkbfile1 libxklavier16 libxmu6 libxpm4 libxres1 libxshmfence1
libxss1 libxt6 libxv1 libxvmc1 libxxf86dga1 libxxf86vm1 miscfiles notification-daemon orage pavucontrol
perl-openssl-defaults poppler-data pulseaudio pulseaudio-utils rtkit sound-theme-freedesktop tango-icon-theme thunar
thunar-data thunar-volman tumbler tumbler-common udisks2 upower usbmuxd x11-apps x11-session-utils x11-utils
x11-xkb-utils x11-xserver-utils xbitmaps xfce4-appfinder xfce4-notifyd xfce4-panel xfce4-pulseaudio-plugin
xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-base xfonts-encodings xfonts-scalable xfonts-utils
xfwm4 xinit xinput xorg xorg-docs-core xscreensaver xscreensaver-data xserver-common xserver-xorg xserver-xorg-core
xserver-xorg-input-all xserver-xorg-input-libinput xserver-xorg-input-wacom xserver-xorg-legacy
xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev
xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-qxl xserver-xorg-video-radeon
xserver-xorg-video-vesa xserver-xorg-video-vmware xubuntu-icon-theme
Suggested packages:
ispell | aspell | hunspell gconf-defaults-service gvfs-backends alsa-utils libdigest-hmac-perl libgssapi-perl
libbonobo2-bin libcanberra-gtk0 libcanberra-pulse gnome-keyring gnome-icon-theme libgnomevfs2-bin libgnomevfs2-extra
gamin | fam gnome-mime-data libvisual-0.4-plugins gstreamer1.0-tools libusbmuxd-tools jackd2 libcrypt-ssleay-perl
opus-tools libparted-dev lm-sensors libauthen-ntlm-perl sox poppler-utils ghostscript fonts-japanese-mincho
| fonts-ipafont-mincho fonts-japanese-gothic | fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-nanum
pavumeter paman paprefs ubuntu-sounds avahi-daemon kdelibs-data thunar-archive-plugin thunar-media-tags-plugin
tumbler-plugins-extra exfat-utils f2fs-tools libblockdev-mdraid2 nilfs-tools reiserfsprogs udftools udisks2-btrfs
udisks2-lvm2 mesa-utils nickle cairo-5c xfce4-goodies xfce4-power-manager gtk3-engines-xfce fortunes-mod pm-utils
menu xfwm4-themes xorg-docs xfonts-100dpi xfonts-75dpi x11-xfs-utils xfishtank xdaliclock xscreensaver-data-extra
xscreensaver-gl xscreensaver-gl-extra fortune qcam | streamer gdm3 | kdm-gdmcompat xfonts-100dpi | xfonts-75dpi
firmware-amd-graphics xserver-xorg-video-r128 xserver-xorg-video-mach64 firmware-misc-nonfree
Recommended packages:
perl5
The following NEW packages will be installed:
dbus-x11 desktop-base desktop-file-utils dictionaries-common emacsen-common gconf-service gconf-service-backend
gconf2 gconf2-common greybird-gtk-theme gstreamer1.0-plugins-base gtk2-engines-murrine gtk2-engines-xfce gvfs
gvfs-common gvfs-daemons gvfs-libs libart-2.0-2 libasound2 libasound2-data libasound2-plugins libasyncns0
libatasmart4 libatkmm-1.6-1v5 libauthen-sasl-perl libavahi-glib1 libblockdev-crypto2 libblockdev-fs2
libblockdev-loop2 libblockdev-part-err2 libblockdev-part2 libblockdev-swap2 libblockdev-utils2 libblockdev2
libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libcairomm-1.0-1v5 libcanberra-gtk3-0
libcanberra-gtk3-module libcanberra0 libcdparanoia0 libdata-dump-perl libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2
libdrm-radeon1 libegl-mesa0 libegl1 libegl1-mesa libencode-locale-perl libevdev2 libexif12 libexo-1-0
libfile-listing-perl libflac8 libfont-afm-perl libfontenc1 libgail-common libgail18 libgarcon-1-0 libgarcon-common
libgbm1 libgck-1-0 libgconf-2-4 libgcr-base-3-1 libgl1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 libglapi-mesa
libglibmm-2.4-1v5 libglu1-mesa libglvnd0 libglx-mesa0 libglx0 libgnome-2-0 libgnome-keyring-common libgnome-keyring0
libgnome2-common libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0
libgnomevfs2-common libgpgme11 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libgtkmm-3.0-1v5 libgudev-1.0-0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl
libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
libhttp-message-perl libhttp-negotiate-perl libical3 libimobiledevice6 libinput-bin libinput10 libio-html-perl
libio-socket-ssl-perl libjack-jackd2-0 libjpeg-turbo-progs libkeybinder-3.0-0 libllvm7 libltdl7
liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmtdev1 libnet-http-perl libnet-smtp-ssl-perl
libnet-ssleay-perl libnotify-bin libnotify4 libnspr4 libnss3 libogg0 libopus0 liborbit-2-0 liborc-0.4-0
libpangomm-1.4-1v5 libparted-fs-resize0 libpciaccess0 libplist3 libpoppler-glib8 libpoppler73
libpulse-mainloop-glib0 libpulse0 libpulsedsp libsamplerate0 libsecret-1-0 libsecret-common libsensors4
libsigc++-2.0-0v5 libsndfile1 libspeexdsp1 libtdb1 libtheora0 libthunarx-2-0 libtimedate-perl libtry-tiny-perl
libtumbler-1-0 libudisks2-0 libupower-glib3 libusbmuxd4 libvisual-0.4-0 libvolume-key1 libvorbis0a libvorbisenc2
libvorbisfile3 libwacom-bin libwacom-common libwacom2 libwayland-server0 libwebrtc-audio-processing1 libwnck-3-0
libwnck-3-common libwnck-common libwnck22 libwww-perl libwww-robotrules-perl libxatracker2 libxaw7 libxcb-dri2-0
libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxfce4panel-2.0-4
libxfce4ui-1-0 libxfce4ui-utils libxfont2 libxft2 libxkbfile1 libxklavier16 libxmu6 libxpm4 libxres1 libxshmfence1
libxss1 libxt6 libxv1 libxvmc1 libxxf86dga1 libxxf86vm1 miscfiles notification-daemon orage pavucontrol
perl-openssl-defaults poppler-data pulseaudio pulseaudio-utils rtkit sound-theme-freedesktop tango-icon-theme thunar
thunar-data thunar-volman tumbler tumbler-common udisks2 upower usbmuxd x11-apps x11-session-utils x11-utils
x11-xkb-utils x11-xserver-utils xbitmaps xfce4 xfce4-appfinder xfce4-notifyd xfce4-panel xfce4-pulseaudio-plugin
xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-base xfonts-encodings xfonts-scalable xfonts-utils
xfwm4 xinit xinput xorg xorg-docs-core xscreensaver xscreensaver-data xserver-common xserver-xorg xserver-xorg-core
xserver-xorg-input-all xserver-xorg-input-libinput xserver-xorg-input-wacom xserver-xorg-legacy
xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev
xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-qxl xserver-xorg-video-radeon
xserver-xorg-video-vesa xserver-xorg-video-vmware xubuntu-icon-theme
0 upgraded, 261 newly installed, 0 to remove and 0 not upgraded.
Need to get 80.8 MB of archives.
After this operation, 437 MB of additional disk space will be used.
Do you want to continue? [Y/n]
VcXsrv Windows X Serverのインストール
SourceForgeの
https://sourceforge.net/projects/vcxsrv/
からVcXsrv Windows X Serverを落としてきてインストールしておく.
xfce4のインストール
WSLで
$ sudo apt install xfce4-terminal
$ sudo apt install xfce4
と打ってxfce4をインストール.
ちなみにServerでどうだったか覚えてませんが,1903なWin10でテストしていたらxfce4
入れてる最中にUnable to fetch some archivesが出たので
こうしました.
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
$ sudo apt update
$ sudo apt install xfce4
環境変数の設定
$ vi ~/.bashrc
で
export DISPLAY=localhost:0.0
export LIBGL_ALWAYS_INDIRECT=1
とか書いておく.
前者はぶつかるようなら適宜別の値で.後者はlibGL周りのエラー回避がしやすいらしい.
いざ,起動
先程インストールしたXLaunchを起動し,適当にOne large windowか何かでDisplay numberを0(DISPLAYに設定したもの)に設定し,「Select how to start clients」はStart no client,「Extra settings」はそのまま(ここのNative openglに先程のLIBGL_ALWAYS_INDIRECTが効く模様)で,一応楽なように「Configuration complete」でSave configurationしておく.
(今後は保存した設定ファイルをダブルクリックすればOK)
新しくTerminalを立ち上げるか
$ source ~/.bashrc
を行なうかして設定が反映された状態で
$ startxfce4
とすればVcXsrv Serverの真っ黒画面にXfce Desktop Environmentが表示される.
自分はとりあえずUse default configを押した.
sudoしてしまった場合
なお,下手にstartxfce4を
$ sudo startxfce4
sudoとかしてしまうと
「you may harm your system」と忠告され,
さらに次回普通に起動しようとすると
$ startxfce4
/usr/bin/startxfce4: X server already running on display localhost:0.0
xfce4-session: Unable to access file /home/(user_name)/.ICEauthority: Permission denied
$ ls ~/ -a -l
total 136
drwxr-xr-x 1 (user_name) (user_name) 512 Jun 20 10:36 .
drwxr-xr-x 1 root root 512 Jun 17 15:02 ..
-rw------- 1 root root 3552 Jun 20 10:25 .ICEauthority
のように.ICEauthority
がrootのものになって起動できなくなるので注意.
$ sudo chown (user_name):(user_name) ~/.ICEauthority
すれば起動します.
文字化け対応
ここでFilesystem rootとかから/mnt/c/などを辿ってWindowsのファイルシステムが見える事を確認すると,日本語が文字化けしている事に気付く.
$ sudo apt install fonts-takao
としてあげると直る.日本語フォントなら何でも良いと思われる.
$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo fc-cache -fv
で直接Windowsのフォントにリンク,でもおそらくOK.
→Win10で試した結果,日本語フォントのインストールなし,Windowsフォントへのリンクのみ,でOKでした.
あと,Command promptから入ると大丈夫なんだが,PowerShellからだとこれまた文字化けする.
こちらはまぁcmdで問題ないし,そもそも日本語ファイル名にぶつかる事がほぼ無いので放置中.
ちなみに
$ sudo apt -y install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF8
$ sudo apt -y install manpages-ja manpages-ja-dev
$ exit
> wslconfig /t Ubuntu-18.04
> wsl
などとして日本語化してしまっても良いが,そうすると鬱陶しいところまで日本語化されて
$ sudo apt install xdg-user-dirs-gtk
$ LANG=C xdg-user-dirs-gtk-update
とかしないといけない.
WSLは主にCUIで使うものだと思われるので,日本語化は要らないと思う.
あと,文字化け問題はどの道残るのでフォント関連の処理は要る.
WARNINGを減らす
コンソール上に大量に現れる
Unable to locate theme engine in module_path: "pixmap",
は
$ sudo apt install gtk2-engines-pixbuf
で消える.それでもまだエラーは出るけど,↑だけでかなり減るのでとりあえず放置.
ブラウザのインストール
せっかくGUI操作出来るようにしたので,ブラウザを入れてみる.
を参考に
$ curl https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
$ sudo apt update
$ sudo apt install google-chrome-stable
で入れてみる.
これでXfceに「Applications→Internet→Google Chrome」が登場.
しかしエラーが出て起動できない,もしくは映らない.
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied
どうも
$ sudo google-chrome --no-sandbox
で起動しないと駄目らしい.
「大人しくFirefoxとか入れた方が良いんじゃないか」となった時点で「そもそもブラウザ要らないよね」~~「そもそもGUI要らないよね」~~とここでストップ.
クリップボード共有はされるので,マルチディスプレイ環境なら1画面をX,残りをWindowsで使ってWindows側のブラウザを使えば良いし,ファイルのダウンロードなんかもそちらで落として/mnt/c/
などからアクセスすれば良い.
シングルディスプレイ環境なら快適に動作するようにしておいた方が便利と思われる.