Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今どきのLinux事情

4241bfe2a981350a7950f3875d9f441a?s=47 tokida
June 29, 2022

 今どきのLinux事情

とりとめない話ですが、今どきのLinuxのパッケージングの種類とSteamDeckから一気に改善されたDirectX 周りの話です。社内の勉強会で共有した資料

4241bfe2a981350a7950f3875d9f441a?s=128

tokida

June 29, 2022
Tweet

Other Decks in Technology

Transcript

  1. 知見共有会 今どき Linux事情 サーバサイドじゃないデスクトップLinux 話 2022/6/30

  2. なんか沢山読まれているよな で・・ 2022/07/02 • 誤ったままだと申し訳ない で指摘を受けている場所を修正(加筆)してあります(特に固有名詞 部分)。記憶が薄れているところ まぁそ ままにしている

  3. UNIXと 出会い 1994年頃 FreeBSD(Windows/DOS環境で TCP/IPスタックが有料ソフト(ChameleonTCP/IP使っていた)だったころ)(※Linuxが登場した、RedHatも)大学が AIX(UNIX)だった(SP1という巨大な集中型 ハードウェアで結構衝撃だったなぁ) X Window System

    (XFree86) をMake Worldすると1日かかっても終わらない 1996年頃 Linux ドライバが少なくてろくに動かず入れたけど消した。FreeBSD最高!Linux 確かこ 頃ペンギンになった。 研究室が電子科AIX、機械科HPUX、生物科Macというカオス状態だった。グローバルIPが教室に配られていた。Firewall設置反対!謎 通信 頻繁 にあった。ハッキングを受けると電話でクレームが来るという良き時代(商用インターネット 開始した かり) 2000年前後 入社した で会社 PCにFreeBSD入れた(VMWAREが登場した、ESX Tarだった、こ ためにLinuxに変えた) 会社 Firewallとかいうも が邪魔だった でDMZに自分 Debian設置してリモートで入っていた(きっと夢だ ) 家 PC BeOSとKondara Linux( りでできた国産Linuxディストロ)2002年頃に解散・・ LibraOfficeがメジャーな巨大系、Make World終わらない(C++ 遅い/勝手な印象) 2005年頃 家 PC ずっとLinuxだった(こ 頃 WineでDiablo2 Privateサーバ運用していた気がするが、ボロアパートへ 落雷でマザーボードごと飛んだ。 サージ 必要だ)確かディストロ Debianだったなぁ。 だんだん会社 規制が厳しくなった。会社 PC Macbook(久しぶりにUNIX、正式になった も少しあとかな?)に変えた 2007年頃 iPhone(とうかTouch)が登場、こ あと数年 アプリ作ったり色々してモバイル っかり(BSDUNIXだな) 会社 PCがWindowになるし(Mac 返された)、自由がなくなってきた。こ 頃 もうクラウドが出てきた もあるし、自分 家でサーバ起動したくない で色々フラフラしていた 2020年頃 ずっとMacだった が急にPC−Unixにもどった。ずっと入れたりして遊んでいたけどメインマシンとして使っている ここ3,4年かな ArchLinux ローリングでいい感じ、し らくMintを使っていたけどいま POP_OSが一番おすすめ(NvidiaGPU持っている人 特に) 長い時間がかかったけどようやくWindows/Mac並にデスクトップが使えるようになってきた。
  4. おじさんむけ豆知識 UNIX じめて高水準言語Cで 書かれたOS。初めて キャラクタ 端末 ゲームRogue UNIX ゲーム(DEC UNIX)

    いま もうSystemVとかBSDとか 言わなくなってすっかり「Linux」 派閥 話 かりなんだけどOS シェアからいえ 「macOSとiOS」 がUNIXを牽引していると言えま す ぇ 学生時代NextStepがほしかっ た。
  5. 今日 話題 きっと誰も興味ないが適当に話したい話題を選んだ 特にまとめとかない。 • Linuxパッケージ事情 • Game業界がもたらしたWine 互換性向上 影響とX周り

    最新情報
  6. 基本にもどってWhat is Linux? こ あと 話 流れもある で • Linux

    、POSIX準拠 オープンソース OS • Linux カーネル部分 Linuxカーネル が「Linux」でGNU ライセンスで配布 • モジュラー型 モノリシックカーネル設 計(対抗 マイクロカーネル。ただ昨今 モジュールロードできる でマイクロ カーネルチック) • SMP/NUMA対応並列コンピュータ • 仮想メモリ管理、プロセス間通信 • OSレベルで 仮想化、準仮想化、HW 仮想化など • デバイス カネールスペースで実行さ れる、昨今で GPU Direct Rendering Manager(DRM)で動く
  7. What is Distribution ? Kernelだけじゃ使えない で周辺 コマンドやインストー ラーを取り揃えたも が「ディストリビューション」。RedHat社 提供する「RHEL」やOpensourceで提供される「Arch

    Linux」など。 乱立しているけど派閥 ある。BSDとSystemV ように • RPM派:代表 RHEL強い • DEB派:Debianから 派生でUbuntuが有名どころ https://distrowatch.com/?language=JP
  8. おじさんむけ豆知識 • 最近流行り キーワード 「ディストロレス」システム ◦ コンテナ 時代によく利用されるディストロ →AlpineLinux ◦

    更に小さくするために Kernel+最小限 ライブラリ+実行処理プログラムだけで動作している Linuxシ ステム こと。Shellとかそういったも も入れない ◦ AlpineとGoogleがやっている ◦ https://github.com/GoogleContainerTools/distroless ◦ https://github.com/chainguard-dev/apko ◦ フットプリントが小さけれ 小さいほど Kubernetesなどで 起動も早くなる(※正確に 起動以上に Imageを実行NodeにNetwork Copyする時間が削減される)、余計なも がない で脆弱性にも強 い
  9. おじさんむけ豆知識 • コンフィグ ~/.xxx 時代遅れ • いま 、~/.config/(APPName)/各種ファイル が基本 • 個人

    アプリ .local に入れる が正しい( /usr(opt)/localとか入れない • 例え デスクトップ上 アイコン 定義 、 .local/share/application/xxx.destopに 保管されていて中身 記述定義も共通化されている(なんとなく)。でGTKもQtも同 じも を見るようになっている でど Window ManagerでもDesktopにアイコンが 表示される ◦ 当たり前 ようなことだけど、 OSS 集合体でこ ように企画が徐々に統一されてきて互換性が高 まっている 素晴らしい事。一昔前 カオスだった。
  10. パッケージ配布 遷移 • 従来・・APT/DEBといったディストリビューションで決められたパッケージ配布が基 本だった ◦ ディストリ 派閥が「パッケージ種類で呼 れるように」非常に大事なポイントだった(何が標準で使 えるかがディストリに依存していた)

    • 昨今・・コンテナ化されたアプリケーション配布が登場(特にユーザが利用するアプ リ こ 形式で配布される。ディストリビューションを考慮する必要が最低限で済む 様になった。専用 ストア/Repoも登場している) ◦ 今日 題材 現在有名な3つ ▪ AppImage ▪ Snap ▪ Flatpak ◦ 個人的に 、iPhoneから 流れも強く感じる(コンテナ+ストア)
  11. 代表的な特徴 Snap AppImage Flatpak Install 必要 不要 必要 共有ランタイ ム

    ベーシック ない フル サンドボック ス AppArmorと密結合 カスタム(Firejailや AppArmorなど) Bubblewarpと密結合 リポジトリ ある ない ある 中央リポジト リ ある ない ない アップデート 自動 手動 自動
  12. 代表的な特徴 Snap AppImage Flatpak テーマがシ ステムとマッ チ しない する する

    サンドボック ス化しないで 実行 可能 可能 不可能 サイズ例 VLC 204MB 53.2MB 78M 触発された 概念 Ubunt Touch パッケージ .dmg内 macOS.appなど kilk(以前 AppImage) 起動 度 3 1 2 http://baker-street.jugem.jp/?eid=25から 抜粋
  13. 今どき ? • アプリを入れるならFlakpakが便利 • 以前と 違ってアプリ FlakpakやAppImageなどで 入れる時代になっている •

    複雑な依存関係があるようなも Snapだとまるごと 入る(ただサイズがでかい で注意) • FlakpakもSnapも、ごにょごにょとローカル環境を見る ことができる でなぜか動作側 IME(日本語入力)も うごくし、下手すれ テーマも一緒に変わってくれる • コンテナ化 利点でシステムを汚さずに入れることが できる が最大 メリット
  14. おじさんむけ豆知識 • 似たようなも これまであんまりなかった • Mac 昔から1バイナリ形式(中身 Zipで圧縮されていてユーザから 見えない) →

    iOSでもこれ 同じ • iOS アプリ これら ヒントになった感じで完全に「サンドボックス化」されたアプリ を身近に感じた ず(不便な点も)、アプリ間で通信するために 何らか 許可等 が必要。iOS こ あたりこ 10年でめっちゃこなれてきた。 ◦ アプリが完全にサンドボックス化して、ユーザモードで実行されている。 ◦ カーネルモードやシステムコールに近いところを変更できるアプリ 長い間登場してなかった(な でVPNや、日本語変換 なかなか出てこなかったです 。特に日本語変換 すべて アプリから 動く でかなり「危険」度 高いアプリ)
  15. None
  16. Game on Linuxが急 に変化 Valve(バルブ)社が、LinuxOS(ArchLinuxBase) SteamOSを搭載した、携帯端末 SteamDeckを発表。大手PCゲーム Steamプラットフォーム 携帯ゲームとして登場。 •

    本来 Windows用 ゲームを実行 ◦ Steam 対応OS 分類 、Windows/macos/Linuxに分類される ◦ Linuxに対応していないWindowsゲームもSteamDeckで 実行可能 • アクティブユーザ1億2000万、SteamOS 1%(120万) Linuxユーザって正直あんまり普及することに興味がないと思っているけど、 SteamDeckでちょっとシェアが伸びているし使う人が増えると良くなっていく で純粋に 嬉しい
  17. 本来 Windows用 ゲームを実行するWINE 単純に考えれ エミュレーション・・な ですが、 Linux上で Winowsアプリケー ション 実行に

    長い歴史がある です。 wine is not an emulator WINE 、Windowsバイナリを直接Linux上で実行するため プログラム。 wine notepad.exe ように使う エミュレーションで なく互換レイヤー。、 notepad.exeに必要なWindows Dllや システム ファイル群などすべて 独自に用意されている。 例え .wine/drive_c/windows/system32/**.dll など ようになっている。実行ア プリごとに「サンドボックス」として .wineを使うことができるため安全にアプリケー ションをインストールして利用することができる。 互換性を上げるために、実際 dllを利用(Override)して実行することも可能。 Hardware Kernel Module X Window system (graphics system) Wine (win32api) Windows application
  18. Steamが一気に進歩させた領域 - 3D環境 Windows ゲーム 主流 、Microsoft DirectX。 • DirectX12/11/10/9

    をWINE 上で実装が必要 ◦ Direct3D12 実装 ▪ vkd3dライブラリを利用して実装されている ▪ vkd3d Valkan上 3DグラフィックAPI ◦ DirectX9/10/11 ▪ DXVKを利用して実装(DirectXon Valkan) ▪ DXVK Valkan上 3DグラフィックスAPI ◦ ちなみみに実態 Wine用 d2d10.dllなどで提供される • Linux側で Vulkanが利用されている ◦ これ以外にもOpenGLなどにも対応 OpenGL DirectX/Diu rect3D Linux/Unix Windows WineD3D Wine D3D12 Vulkan vkd3d Wine DXVK
  19. Valve Direct3D12と 互換性を向上 • 互換性を向上させた、VKD3D−ProtonというWineから フォークした環境を利用 • これまで動かないWindows系 ツール含めてかなり 精度

    で普通に動く(Easy Anti-Cheat/BattlEyeが入っていると動 かない) • オーバーヘッド無い でWindowsとパフォーマンス 落ちな い。場合によって 早い。 • そもそもDirectXよりもVulkanが高 • NVIDIA Vulkanをサポート • Vulkan自体 マルチプラットフォーム 対応 APIな でそもそも普及が じまっている OpenGL DirectX/Diu rect3D Linux/Unix Windows WineD3D Wine D3D12 Vulkan vkd3d Wine DXVK Intel vukulan-intel NVIDIA nvidia AMD vulkan-redeon amdvlk vauklan=amgpu-p ro Linux 世界 WINE 世界 EACとBattlEye 最近 バージョンで Linux, Macに対応 するうになったそうです!
  20. おじさんむけ豆知識 ここ10年位きっと知らないと思う で整理 OpenGL もともとIrisGLな。クロスプラットフォームでスタンダードな位置づけVersion5でVulkanに生 まれ変わる DirectX Microsoft Windows向け API。最新

    DirectX12。最も多く タイトルが作られている。 主流なんだけどモバイル 中で 使ってない が欠点 GNM/GNMX/GNM++ プレステ用 API NVN スイッチ用 API Metal macOS M1/M2チップに最適化されたApple謹製API ちょっと命令が少ないようでDirectXとか でラッピング出来たりしない でここ数年macOS ゲーム 壊滅したが、なにせiOSがある でMetal自体 かなり普及しているも 一つ (だと思う)※iOS それまで OpenGL ESだった Vulkan クロスプラットフォーム 本命(ちなみにAndroid(Google)がVulkan開発に 関わってい る)。これでモバイル Vulkan vs Metalになった。
  21. macOSでWINEって? • 動く、動く だが、M1チップ アーキテクチャが違う • WINE あくまでもそ OS アーキテクチャ上で動かすため

    ライブラリに過ぎな い。 • つまり、M1チップでWINE 動くが、動くWindowsバイナリ ARM版である必要が ある。(ARM向けWindowsであれ サクサク動くな) • チップセットをエミュレーションするに 例え Qemuなどで仲介する • 商用 CrossOver20(Wine)で Win32/64 Windowsアプリが動く • が!macbookなどに NVIDIA 乗ってない でDirectXが動かない! • Vulkan-metal MoltenVKがあるんだけど、逆があれ DirectXもうごくかも? BOX86 WINE Windows Application macOS
  22. XとWayland レッドハットに在籍してたXorg エンジニアが開発したX11 代替。なんだったんだけど あんまりにも安定しなかったりしてさほど普及してない(ように見えてじわじわと知らない うちにWaylandがディフォルトになっている)互換性確保 ために、XWaylandという Waylandクライアントがあり利用者として 体感的に なにも違いを感じることなく利用

    することができている。 が!Gamingユーザに ちょっと不評(解像度が変えれないとか諸々) しかし、現在 主力OS すべてコンポジット型ウィンドウマネージャーな でいつまでも Xorgを使っているわけにも行かない。近いうちに Waylandがメインになるし、Xなし アプリも出てくるだろう
  23. XとWayland 違い https://wayland.freedesktop.org/architecture.html 「XServer」っていう が中央集権で邪魔 スタック型Window Mangaer コンポジット型Window Mangaer 代表的なやつ

    ・WindowsVista以降 ・MacOSX Quartx以降
  24. None
  25. みんな 大好きなWSLでXアプリを動かすと? ここまで 説明で何となく分かる ず。 「Wayland+XWaylandが入ったコンテナ が内部で1つ起動しています」、ユーザ コンテナ そ コンテナを描画サーバと

    して通信を行い画面を表示している。 WSLg Westonコンポジッタを動かして いる CBL-MarinerというMS ディス トロ。いわゆるContainer Linux(旧 CoreOS)と似た構   https://github.com/microsoft/CBL-Mari ner https://devblogs.microsoft.com/commandline/wslg-architecture/
  26. ChromeOSでXを動かすと? ChromebookでWineを使ってWindowsプログラム を動かす(参考にゲームDiablo2を動作) - Qiita • 基本的に 、WSLもChromeOSもアプローチ 同じ •

    Linux ディストロ 個別に導入されてX み を別 コンテナやOS側 機能から中継して 描画することで実装している。 • ChromeOS 場合に ソムリエがよろしく やっている(らしい)
  27. おじさんむけ豆知識 • X Window SystemとX.org ◦ 今 若い人 絶対知らないと思うけど、有料 X

    Window System もあった(記憶が曖昧だが、な んで買ったんだろう?)多分家にまだ CDがある ◦ だいぶ前からLinuxとか Xorgに移行している。 /etc/X11/xorg.confgだから ◦ X11 X Window system バージョン11 略(もう30年くらい前に開発止まっている) ◦ 最後 X11 Release 7 ? ◦ X MITで開発されていたX コンソーシアムだったけど、 The Open Groupに映った。最終的に X.org Fundationという団体になった。 ◦ Xorg X11 オープンソース実装 ◦ グラフィックドライバが鬼門な 今も昔も同じ。いま GPU問題が勃発している。 ◦ ど メーカーも互換性がある OSSも出ているが基本 メーカー プロプライエタリドライバを使う が主流(な でDebianとか 辛い )。dkmsで提供されるも など色々 Nvidia つい最近技術的 に競争力にならないという判断?でついに OSSとしてドライバを公開した(これでディストロ 組み 込みやすくなった ず)
  28. ここまでわかったところでもう少し 現在 Xアプリ 、代表的なGTKとQt ツールキット上で作られているも が大半で す。ちょっと言葉だけ説明しておくと GTK系 Qt系 代表的なWindow

    Manager GNOME KDE ツールキット GUIフレームワーク GTK/GTK+ C言語 Qt C++言語 備考 そもそもPhotoShop クローンで あるGIMPを作るため ツール キットがベース Nokia社 ライブラリ、商用ライブ ラリだけ合って最初から安定して 利用ができた。組み込み系 今で もQtベースが多い( ず) Nokia 10年前に Qt を手放し ており、現在 The Qt Company というフィンランド 会社が Qt 開発や販売してい ると こと
  29. ツールキット いろいろな言語でラップされている UIツールキット 昔から沢山やま ようにある。 • Tck/TK・・TKツールキット • Python GTK・・・GTKをPythonから使う

    最近出てきた だと • Flutter ・・これもGoogle製 ツールキット(SDK)と言えるも ◦ SonyとかもFlutterに移行するらしい(組み込み系で 、 AndroidやLinuxが主流な で) ◦ Flutter 、ネイティブアプリ化で Snapアプリとしてパッケージして配布できる(もう何言っている か わかるよ ?)
  30. 「Desktop」Linuxを色づける Window Manager 話を最初からすると長くなる だが、最終的な UI Window Managerが担ってる。Window Mangaer ツールキット

    、GTK+とQtが2大 巨頭。近年ツールキット間 動作上 互換性 強くなってきてる。 WindowManager 、Window ボタンだった りツールバーやデスクトップ アイコンなど UI コントロール部分を構成しているアプリケー ション。Themeを買えることでmac風になった りWindows風にしたりと色々できる。 https://learning.lpi.org/en/learning-materials/102-500/106/106.1/106.1_01/
  31. 延々とテーマを変える無限地獄 もうLinuxデスクトップユーザ 延々とこ 遊び をやっている • GNOMEだろうがKDEだろうがテーマが すべて • テーマ

    「ツールキットベース」提供され る→GNOME用で なくてGTK用。同じ ツールキットを使っているとそ アプリ 全部そ テーマになる(基本) • 最近 VimとかTerminalとかトータルで 変更できるテーマなども出てきていて楽 しい遊び 一貫
  32. おじさんむけ豆知識 • そういえ 、32bit x86 a.out サポートが削除! ◦ ちなみに gcc

    hello.c すると a.out が出てくるけど、いつ 間にか ELFフォーマットやんけ! • ちなみにKernel 第2言語(?)にRustが採用される見込み! ◦ あちこちでプチバズっているけど Rustが入ってくるみたい(まず Kernel Module周りから 模様)
  33. おじさんむけ豆知識 • 日本語 入力 、Input method framwork 、iBUSかFctix 2択。 ◦

    Fctix ほうが利用されているが Waylandサポートされていない ◦ Fcitx4で 使えます ! • 漢字変換 、Anthy、Canna(!)、Mozc(これがGoogle日本語IME オープンソー ス実装なんだけど辞書が違う→な で精度 劣る) • fcitx-mozcなど セットで利用することになる • 生コンで使いたい場合に 昔ながら fbtermとかKonとか現役。日本語入力も昔な がらに uim使えるuim-mozcとかある • ちなみにXで アンチエリアシングとかTrueTypeとか当たり前な で普通にmacos 並に フォントとかきれいに描画される(昔と 違う) •
  34. おわり 特 まとめ ない で、ここで終わり 最後に、個人的におすすめ ディストロ POP OS! •

    Ubuntuを超えているUbuntuクローン • Nvidiaをネイティブサポート • Gaming用途(マルチインストーラー Lutis,Steam,各種エミュ)最適 ◦ 独自 OSスケジューラ、GPU利用に際して最適化、 WINE環境強い • 日本語利用問題なく利用(特に複雑な設定不要) ◦ 一部英語がある で適当に翻訳してたまに PullReqしておく で問題ない? • 独自ローダで起動が早い • 老舗HWメーカ System76社が作っている • Wayland 無効になっている(hiDPIとか共有とか動か ぇ・・・) ここまで書いて、なんなんですが、Linuxデスクトップ 全く流行る気もしない でメジャーに ならないと 思います ;-p
  35. おまけ - 憧れ UNIX O2 IRIX 当時コンピュータグラフィックといえ SGI。教授 口利きで就職してもいいか なと思ったけどそ

    後倒産した で行かなくてよかったと思った記憶がある。 でも行け よかった。どこぞ 大学で 100台くらい買ったというニュースを聞い てマジかと思ったが。研修室に 1台だけ買ってもらった。インストーラーが GUI でグリグリ動く謎仕様でそこで感動した。特にこ マシンで何かをなし得たと いう記憶 皆無だが所有欲を満たしてくれたな。今 GPU 原型になる、 IrisGL(OpenGL) ハードウェアアクセラレーション用 基盤が付いていた (多分) まぁ動いたあと 普通 UNIXな で3Dソフトで遊 ない限り 特になん 変哲もなかった記憶しかない。
  36. おまけ - 憧れ UNIX NeXTSTEP(OPENSTEP) マジで欲しかった。いとこ にーちゃんが会社で使っていて楽しそう だった。現在 macOSに連なる原型。画面がDisplay TypeScript

    というも で描画されていて当時から画期的に DPIとか色も含めて 正確に出ていた。すごい。カーネルが Machとかどうでも良くてデザ インセンス抜群だったな。オブジェクト志向型って言われていて他 社も真似したりJava クラス設計も参考にされているという。世界 初 ブラウザ NeXT上 WorldWideWeb。初 商用Webサー バ WebObjectsというWebアプリケーションサーバが動いたけど クソ高くて見たこと ない。今でも macos ライブラリ 名前 先頭 にNS_っていう がある。デザインが良過ぎで OpenSTEPとかWM でカスタマイズとか色々やった記憶が(※本物 触った程度)更に そ 10年以上あとにObjectiv-CをiPhoneで触ると 思わなかっ た。
  37. おまけ - 憧れ UNIX(もどき) BeOS 突然出てきて消えていった。アイコンがかわいい。デザイン がいけている。そして「早かった」。当初 PowerPC BeBOXっていうハードだったけど最終的に x86アーキテク

    チャで動くも が開発された。マルチタスクとかジャーナル ファイルシステムとか画期的だった。同時にアプリを動かし ても平気!コピーが並列でっていうデモが沢山やっていた。 Appleに買収を持ちかけていたが結局 NeXTに持ってい かれた。余裕ぶっこいて適当にやった結果だと言われてい る(ほんまか?) 結局事業的に ボロボロで終わったんだけど OS自体 OSSとしてHaikuという名前で今も続いている。好きなんだ けど 、ソフトがない。結局 VIM使っているだけやん!って なる。ちなみに未だR1/Beta3
  38. おまけ - 記憶にあるUNIX Scalable POWER Parallel(通称SP) 大学に設置されていた。何ノード構成か記憶にない。基本的に YelloPageと呼 れるNISとストレージで環境が構成されててど ノードに

    Telnetしても/home/tokida 同じ内容が見える(これが当たり前だと思っていた)。例え Internetに抜ける事がで きるNode、計算が早いNodeなど役割に分かれていて移動しながらプログラム動か したり、Mosicでネット見たりしていた。端末 100台くらい IBMワークステーション で構成されていてすべて X Window System端末。情報処理教室 今みたいに画面 切り替えとかが出来て集中でコントロールされていた。クラスターソフトが合って複数 台で計算ができた。Perl製?とりあえずひたらすら早いこ 億くらいしそうなコン ピューターでやりたいこと CD エンコーディングだった が泣ける。対戦ゲームと かランキングとか学生全員共通だった で結構盛り上がった。 AIX3? 4? 会社に入ってSP2を数十台全国に導入した いい思い出(半年以上家に帰れな かった...) まさかOS導入からすることになると な。