これからのPCは

  Linux(ubuntu)で行こう

ーーーー目次ーーーー

1.なぜ今、Linux

2.ubuntuをクリーンインストールしよう

3.Windowsのwslでubuntuをインストールする方法

4.WineHQをインストールしよう

5.ファイル共有できるようにしよう

6.Ubuntuソフトウェアでインストールする方法

7.binファイルのインストール方法

8.debファイルのインストール方法

9.RPMファイルのインストール方法

10.zipファイル、tarファイル、tar.gzファイル、tar.xzファイルの展開方法

11.GTK3でGUIプログラムを開発しよう

12.vncによるリモートデスクトップについて

13.CUDAでAIを実行しよう

14.その他の設定、不具合対策

ーーーーーーーーーー

1.なぜ今、Linux?

  2019年12月4日、久しぶりに新しいCPUを買いました! 昔はアンチIntelだった私が選ぶのはもちろん

   「AMDの第3世代Ryzen!」

 です。この10年ほどは、処理速度も消費電力もコストパフォーマンスも、インテルに大差をつけられて

 おり、AMDを選ぶ理由が全くなかったのが、今年発売したZen2アーキテクチャを採用した第3世代

 Ryzen(Ryzen3000シリーズ)で一気に逆転してしまいました。

  更に、CPUの性能だけでなく、第3世代Ryzenは、DDR4-3200の高速なメモリにも対応し、おかげで

 高速メモリの価格も大幅に安くなりました。実は、今回、システムを新しくしたのは「メモリが史上最安」

 になったことと、「5%ポイント還元」によるところが大きいです。ちなみにハード構成は、次の通り。

     CPU:Ryzen 5 3600

      (7nmプロセス、6コア12スレッド、3.6GHz(ブーストで4.2GHz)、キャッシュ384KB+3MB+32MB)

     マザーボード:GIGABYTE B450M S2H

     メモリ:CFD W4U3200CX1-16G(DDR4-3200 16GB x 2、CL16-18-18)

     グラフィック:AMD HD7750(家で余っていたグラボ)

     HDD:WD 1TB(家で余っていたHDD)

     ケース:なんと木製の自作ケース。電源は余っていた中国製の400W。

    

  で、新しいシステムは買ったものの、「Windows7はサポートが切れるし、Windows10マシンが2台

 あっても新しいことはできないなぁ。いっその事、Linuxインストールしてみようか!」という思い付き

 で、久しぶりにLinuxをインストールしてみました。

  ところがどっこい、Linuxが進んでいる! メジャーではないアプリのインストールには苦労しますが、

 Windowsを使う必要がないぐらいになってます。ポイントは次の通り。

 

  ・Windowsエミュレータのwineで、Windowsの64bitソフトでもインストールして動く!

   インストーラが使える。デスクトップにアイコンもできる。動作速度もほぼ同じ。

   但し、ゲームのように専用ドライバが必要なものは動きませんし、フォントが使えない

   ことがあったり、ソフトの一部機能が使えない場合があります。

  ・GUIもWindowsと同等に扱える。ドラッグアンドドロップもできる。

  ・フリーの定番ソフトは、Linux版も公開されている。

   また、自作ソフトをLinuxのgccでコンパイル(最適化オプションON時)したら、Visual

   Studio2017と比べ1.2ー1.5倍程度高速に処理できたことから、他のソフトもLinux版

   の方が性能が高いと思われる。

 

 よって、私が作ったYIMG64等のソフトも使えるし、Registax5.1(Registax6はなぜかファイル

 選択できない!)、Astrometrica、Arduino、anaconda等、普段使っている95%以上の作業は、

 Linuxで出来そうです。(現在、様々なソフトを試しているところ。ちなみに、このHPも

 ubuntu+wineを使って作成)

  更に、マイクロソフトも2016年からwsl(Windows Subsystem for Linux)を提供しており、

 Windows10及びWindows11でLinuxを実行することも可能となりました。その手順も下記

 に記載しました。

  LinuxをWindowsのように使えるようにするまでの手順を記載したいと思います。

 

2.ubuntuをインストールしよう

  今回は、A.I.(Deep Learning)で使うtensorflowの推奨環境という事で、ubuntuを使いました。

 ubuntuの最新版は19.10だったのですが、ソフトを色々とインストールしてみると正常に動かな

 かったり非対応だったりして困ったので、結局「18.04.3LTS」(2023年にHDDが壊れたので

 20.04LTSに変更しました)にしました。LTSとは、Long Term Supportつまり長期サポート版で

 5年保証なので、安心して使えます。

 手順は次の通り。(あちこちのHPに紹介があるので、それも参考にしてください。)

 (1)ubuntu Japanese TeamUbuntuDesktop日本語Remixから「ubuntu-ja-18.04.3-desktop-amd64.iso」

   をダウンロードする。

 (2)(1)のISOファイルでライブUSBメモリを作成するか、右クリックしてc:\Windows\System32\isoburn

   で開きDVD-Rに書き込む。

 (3)新しいマシンに(2)のライブUSBメモリをつなぐか、DVDドライブを接続しDVD-Rから起動する。

 (4)「Install Ubuntu」を選択。その後、日本語を選び、キーボードを選択し、それ以降は希望に合わせ

   選択し、インストールを行ってください。

 (5)インストール終了後、HDDから立ち上がったら、ソフトウェアのアップデートを実行してください。

   これを行わないと、Firefoxなど一部ソフトが思った通りに動かないです。

 

3.Windowsのwslでubuntuをインストールする方法

  Windows10及びWindows11では、wsl(Windows Subsystem for Linux)を使うことでWindowsでLinuxの

 コマンドを実行することが可能です。私の場合、RISC-Vのgccを実行したり、Linuxのコマンドを使いたい

 場合に利用しています。手順は次の通り。

  (1)BIOSでCPUの仮想化機能がdisableになっている場合、enableにする必要があります。具体的には、

    BIOSのCPU設定で、SVM又はVT-d又はVirtualizationTechnologyと書かれている項目をenableにします。

  (2)管理者権限でPowerShellを実行。PowerShellの上で右ボタンを押し、「管理者として実行」を選ぶ。

  (3)次のコマンドを実行。

    >>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

    >>dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

  (4)再起動

  (5)次のコマンドを実行して、wsl2を有効にし、Ubuntu20.04をインストール。(Linuxのバージョンは各自選択)

    >>wsl --set-default-version 2

    >>wsl --list --online

    >>wsl --update

    >>wsl --install -d Ubuntu-20.04

  (6)Linuxのshellが立ち上がるので、最初の1回だけusernameとpasswordの入力が必要なので、好きな

    値を設定。以降は、アプリケーションに、Ubuntu20.04が追加されているので、それを実行すれば良い。

    なお、何もアプリケーションはインストールされていないので、

      >>sudo apt update

      >>sudo apt install gcc

    のように、gccなどを順にインストールして下さい。

  (7)WindowsからLinuxのファイルにアクセスする場合は、エクスプローラで「\\wsl$」と入力する。

  (8)異常が発生したり、アンインストールしたい場合はPowerShellで次のコマンドをうつ。

    >>wsl --unregister Ubuntu-20.04

 

4.WineHQをインストールしよう

  WineHQは、Lunuxで動作するWindowsエミュレータです。Windowsの32bitアプリだけでなく64bitアプリ

 もLinux上で動作します。

  エミュレータとは言え、CPUは共通なので、動作速度にほぼ影響はなく、CINEBENCH15でもWindows10

 でベンチマークテストを行ったものとほぼ同じ数字が出ています。

  インストーラにも対応しています。普通に、C:ProgramFilesにインストールすると、HDDの適当な場所に

 インストールされ、デスクトップにアイコンもできます。うーん、すごい...

  インストール方法は次の通りで、詳細はこちらを参照ください。

   >>sudo dpkg --add-architecture i386

   >>wget -nc https://dl.winehq.org/wine-builds/winehq.key

   >>sudo apt-key add winehq.key

   >>sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

    (注意.Linuxのバージョンによってコマンドが異なるのでこちらを参照)

   >>sudo apt update

   >>sudo apt install --install-recommends winehq-stable

 その後、

   >>winecfg

 でWineの設定を確認します。ここの、画面ー画面解像度に「10ポイントのTahomaによる見本です」

 が正しく表示されない場合、次の方法でフォントを追加します。

  ・最初にwinetricksをインストール!

   >>sudo apt install -y winetricks

  ・英字が化ける場合

   >>winetricks allfonts

  ・日本語が化ける場合

   >>winetricks

     Select the default wineprefixを選んでOK

     Install a fontを選んでOK

     fakejapanese_ipamonaとipamonaの2つだけを選んでOK

     (韓国語フォントが選ばれているのが悪いかもしれないので、チェックを外したほうが安全)

     キャンセルを押して終了

 後は、

   >>wine 実行ファイル.exe

 で、プログラムを実行できます。インストーラも同様に実行できます。

  デスクトップには最初、名前だけでアイコンは表示されません。しかし、一度クリックして、「信頼して起動」

 を選ぶと、ソフトが起動されると共にアイコンが表示されます。

  その他、使用上の注意点は次の通り。

   ・Cドライブは、/home/ユーザー名/.wine/drive_cフォルダに作られています。

   ・バッチファイルなどコマンドラインで実行したい時は、 >wine cmd を実行。

 

5.ファイル共有できるようにしよう

  LinuxとWindowsでファイル共有する場合は、Sambaを使います。ネットには色々書かれていますが、

 結局、次の手順で動いたようです。

  まず、sambaをインストールします。

   >>sudo apt update

   >>sudo apt install samba

 設定ファイル/etc/samba/smb.confを書き換えます。

   >>sudo vi /etc/samba/smb.conf

    workgroup = WORKGROUP

    interfaces = 127.0.0.0/8 192.xxx.yyy/24

  左のアイコンの ファイル を起動し、共有するフォルダーを作成するか、既存のフォルダーで右ボタンを

 押します。そこで ローカルネットワーク共有 を選び、 このフォルダーを共有する にチェックを入れ

 その他の項目は好みで設定下さい。その時、「共有サービスがインストールされていません」などと出た

 場合は、指示に従ってインストールして下さい。

  次にLinuxマシンのIPアドレスを、次のコマンドで確認します。

   >>ifconfig

 もし、コマンドが無いというようなメッセージが出たら、指示に従ってコマンドをインストールして下さい。

  Windowsマシンからアクセスする場合、エクスプローラで「\\192.xxx.yyy.zzz\フォルダ名」と打つと、

 Linuxマシンの共有フォルダーにアクセスできます。

  Linuxマシンからアクセスする場合、 左のアイコンの ファイル を起動し、「他の場所」のサーバーの

 アドレスに

   smb://192.xxx.yyy.aaa

 のようにWindowsマシンやLinuxマシン(RaspberryPiも含む)のIPアドレスを入力すると共有フォルダに

 アクセスできます。

 

6.Ubuntuソフトウェアでインストールする方法

  これが最も簡単な方法です。注目アプリケーションやお勧めのアプリケーションはここからインストール

 して下さい。検索は、分かり難いですが、上のタイトルバーの虫眼鏡を押すと、検索窓が開きます。

 使い方は、アプリを選んで、インストールボタンを押し、パスワードを入力するだけです。

 

7.binファイルのインストール方法

  実行ファイルやインストーラがそのままバイナリで提供されている場合、端末を開いてコマンドを

 打つ必要があります。詳細はアプリ毎に異なるので、それぞれの説明を読んで下さい。

  基本的な操作は、次の通り。

   >>cd ~/ダウンロード

   >>sudo chmod +x ファイル.bin

   >>sudo ./ファイル.bin

 インストール出来たら、どこからでも起動できるように設定します。好きなエディタで「~/.bashrc」を

 開きます。ここでは、viを使用します。

   >>sudo vi ~/.bashrc

    適当な行に、

      export PATH=実行ファイルのあるフォルダー:$PATH

    を追加し、実行ファイルが存在するフォルダーにPATHを通す。

   >>source ~/.bashrc

   >>実行ファイル

 以降は、端末を開いて、好きなフォルダーで、実行ファイルだけで実行できるはずです。

 

8.debファイルのインストール方法

  debファイルはDebian系のLinux用のインストールファイルですが、ubuntu系にも

 インストールできます。通常はdpkgコマンドでインストールするのですが、依存関係

 などで困ることもあるようなので、GDebiのが良いようです。

  まずは、GDebiをインストールします。

   >>sudo apt install gdebi

 その後、次のコマンドでdebをインストールできます。

   >>sudo gdebi ファイル.deb

 

9.RPMファイルのインストール方法

  RPMファイルは、Redhat系のLinux用のインストールファイルで、私が試したところ、

 プラグイン等のライブラリが異なる場所にインストールされ動作しない場合がありました

 が、アプリケーションはインストールできました。

  alienコマンドでdebに変換してインストール可能です。

 まずは、alienをインストールします。

   >>sudo apt-get -y install alien

 その後、次のコマンドで、RPMをインストールできます。

   >>sudo alien -i ファイル.RPM

 

10.zipファイル、tarファイル、tar.gzファイル、tar.xzファイルの展開方法

  圧縮ファイルですので先ずは展開し、その後、上記の操作を行ってください。

 zipファイルの場合

   >>unzip ファイル.zip

 tarファイル

   >>tar xvf ファイル.tar

 tar.gzファイルの場合

   >>tar zxvf ファイル.tar.gz

 tar.xzファイルの場合

   >>tar Jxvf ファイル.tar.xz

 

11.GTK3でGUIプログラムを開発しよう

  Windows用ソフトは上記のwineで動作しますが、色々とC言語でプログラムを作ってみると

 VisualStudioで作ったWindowsソフトより、gccで作ったLinuxネイティブのソフトの方が、

 20%程度高速に動作することが判明しました。こうなると、やはりLinuxネイティブのGUIを

 使ったソフトを開発したい!

 私はWindows用ソフトを、昔ながらのC言語で開発しています。それと親和性が高いという

 ことで、GTK3を使うことにしました。

 (1)開発環境のインストール

   >>sudo apt update

   >>sudo apt install libgtk-3-dev

   >>sudo apt install pkg-config

   >>sudo apt install glade

 (2)コーディング

  プロジェクトのHPは、The GTK Projectなのですが、必要な情報がなかなか見つかりません。

  コードディング方法についてはこちらを参考にしました。紹介されているコードは、ここから

  ダウンロードすることができました。(右上にDownloadのボタンがあります。)

  日本語のページで、一番役に立ったのは、こちらのページです。

  その他、ネットに色々とサンプルが紹介されているのですがGTK2用に書かれたものが多く、

  GTK3と互換性がなくて、非常に苦労しています。

  なお、コンパイルは次のように行います。(-lmは算術関数を使う時に必要。)

   >>gcc ファイル.c -o 実行ファイル名 -lm $(pkg-config --cflags --libs gtk+-3.0)

  最適化を行う場合は、次の通り。これにより、ソフトによっては2倍程度処理速度が早くなります。

   >>gcc ファイル.c -o 実行ファイル名 -lm -O3 $(pkg-config --cflags --libs gtk+-3.0)

  マルチスレッドのプログラムを作成する時は、次のようなオプションにします。

   >>gcc ファイル.c -o 実行ファイル名 -lm -lpthread -O3 $(pkg-config --cflags --libs gtk+-3.0)

 

12.vncによるリモートデスクトップについて

  (1)VNC viewer

    RaspberryPi3BRaspberryPi4Bに記載しているとおり、RaspberryPiでvncのサーバーを

    たてて、ubuntuで画面を表示する場合、左下のアプリケーションボタンの中に標準で

    VNC Viewerがインストールされていますので、問題なく動作します。

 

  (2)VNC Server

    本当は、逆にubuntuが入ったメインマシンでサーバーを立ち上げ、各RaspberryPiを

    Viewerにすれば、マシンパワーを皆で共有できて便利なはずです。(ネットではこのような

    使い方は見つかりませんが...)

    しかし、色々と試しましたが、結論として、「デスクトップ版ubuntuで複数のデスクトップは

    起動できないのでは?」と感じています。サーバー版ubuntuならできそうですが、試して

    いません。

    一応、調べた結果を記載しておきます。

    <課題>

      ・ubuntuでvnc serverを立ち上げ、RaspberryPiからアクセスしたが、灰色の画面と

       マウスカーソルだけ表示され、何も操作できない。(端末さえ開けない!)

      ・ファイルマネージャだけ表示できたが、今度はubuntu側でファイルマネージャが

       使えず、リモートデスクトップ側でしか操作できなくなった。

    <試したこと>

      ・vnc4serverとtigervncを試したが、動作は変わらず。(vnc serverの問題ではない!)

      ・デスクトップではGNOMEを使っているので、GNOMEのデスクトップを指定したがダメ。

       xfceを入れると、vncで接続するとエラーが出る。(デスクトップを2つ開くの禁止?)

      ・上記のファイルマネージャの動作の通り、メインのデスクトップと、vncのデスクトップが

       1つのものとして扱われているように思われる。つまり、vncがマルチディスプレイの

       扱いなので、メニューがメインのデスクトップに表示されていると、vnc側にはメニュー

       が表示できないようだ。

 

13.CUDAでAIを実行しよう

   ここ数年、画像識別、分類、骨格推定、超解像、音声認識、そしてChatGPTをはじめとする

  LLMなど様々なAIが現れ、高い効果を上げています。但し、演算量が非常に多く、CPUだけ

  では、十分な処理速度が得られません。nVidiaのGPUを持っていてLinuxを使うなら、CUDA

  を活用しない手はありません。

   CUDAでtorchを実行できるようにしておけば、tensorflowなどもGPUで動くようなので、

  torchでCUDAを使う方法について記載します。注意点は、torchは特定のバージョンの

  CUDAでしか動かないことです。

   (1)PyTorchで使えるCUDAバージョンを確認:PyTorchのHPで、CUDAのバージョンを確認。

     2024年4月では、11.8と12.1です。

 

   (2)nVidiaのドライバのインストール:nVidiaのHPでお持ちのGPUやOSを選択し、「探す」を押し、

     「ダウンロード」を押す。端末から、ダウンロードしたファイルを実行する。

        >>sudo apt update

        >>sudo chmod +x NVIDIA-Linux-x86_64-xxx.run

        >>sudo ./NVIDIA-Linux-x86_64-xxx.run

        >>reboot

        >>nvidia-smi

 

   (3)CUDAツールキットのインストール:nVidiaのHPからtorchがサポートしているバージョンの

     Toolkitを選び、OS等を選択するとコマンドが表示されるので、それに従ってインストールする。

     InstallerTypeは、runfile(local)をお勧めします。

     driverのエラーが発生した場合は、driverのXをspaceキーを押して、消してから実行下さい。

     11.8の場合は次の通り。

       >>wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

       >>sudo sh cuda_11.8.0_520.61.05_linux.run

 

   (4)PyTorchをインストールする:PyTorchのHPで、OSやCUDAのバージョンを選ぶとコマンドが

     表示されるので、そのコマンドを端末で実行。例えば次の通り。

       >>pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

 

   Githubやhuggingfaceに様々なAIのサンプルがありますので、色々なAIモデルを実行すると良いでしょう。

 

14.その他、不具合対策

  (1)ブラウザを起動したり、ブラウザで動画や音楽を再生すると音が割れたように異常になる。

    ネットで調べても正確な情報が全く見つからないが、Ubuntu20.04以前で、ブラウザで音声再生を

    起動した時にサウンド再生のバッファーが異常となり、過去と音と干渉している模様。現状、次の

    設定が最も効果があったが、Ubuntu20.04では完全には解決できなかった。

    Ubuntu22.04では、最初から不具合は発生しなかった。

    エディタで、「/etc/modprobe.d/alsa-base.conf」を開き、 最終ラインに、次の設定を追加。

      options snd-intel-dspcfg dsp_driver=2

 

  (2)複数のHDD,SDDを接続している場合に、起動直後に他のドライブが見えない(マウントされていない)。

    自動マウント機能を設定する必要があります。手順は次の通り。

      1. ドライブのUUIDとTYPEを確認

        >>sudo blkid

      2. ドライブのUUID、マウントポイント、TYPEなどを追加する

        >>sudo vi /etc/fstab

        記入例:UUID=abcd-1234 /home/user/hdd ext4 defaults 0 0