banner
Yuzhen

Yuzhen's Blog

🇨🇳 13 y.o. / Student & Developer & OIer / HAM & BGP Player
telegram
tg_channel
github
mastodon
email
zhihu

[Legacy] Windowsを優雅にロールバックする方法

Arch Linux から Windows に優雅に戻る方法#

前情提要:Arch Linux への優雅な移行方法

データバックアップ#

そのままコピーしました。

微 PEDiskGenius ツールを使用してデータバックアップとパーティションクローンを行います。

PE 環境ではオンライン授業や問題集を解くことができない場合があるため、まず DiskGenius のパーティションイメージ機能を使用してパーティションイメージを外付けハードディスクに保存し、その後 Windows システムに戻って DeskGenius を使用してパーティションイメージを外付けハードディスクに復元します(これは、パーティションイメージが 4K / 順次読み取り順次書き込み操作であり、パーティション復元が順次読み取り 4K / 順次書き込み操作であるため、SSD の小ファイルの読み書き速度が機械式ハードディスクよりも著しく速いためです)。

  1. wepe 環境を作成する
  2. wepe 環境に入り、DiskGenius を使用してディスクイメージ操作を行う
  3. Windows をインストールした後、ハードディスクを復元する

システムのインストール#

自分でインストールします。

OI 環境の設定#

CP Editor#

CP Editor 公式サイト にアクセスし、インストーラーをダウンロードします。プラットフォームは Windows を選択し、バージョンは v6.10.1(2022 年 8 月 18 日現在) を選択し、対応アーキテクチャ-setup.exe を選択します。コンパイラを手動でインストールするためです。

MSYS2#

Clang-Format と Clangd を使用するために、MSYS2 を使用してそれらをインストールする必要があります。アーキテクチャ-setup-with-gcc-xxxx-llvm-xxxx.exe を選択すれば良さそうですが、私はテストしていません。

  1. MSYS2 ウェブサイト にアクセスし、下部の Installation の最初のステップ Download the installer を見つけ、後ろのボタンをクリックしてインストーラーをダウンロードします。
  2. MSYS2 をインストールします。
  3. MSYS2 Shell に入り、pacman -S msys2-keychain を入力してキー チェーンをインストールします。
  4. pacman -Syu を入力してパッケージを更新します。
  5. pacman -S mingw-w64-x86_64-toolchain mingw64/mingw-w64-x86_64-make mingw64/mingw-w64-x86_64-gdb mingw64/mingw-w64-x86_64-clang mingw64/mingw-w64-x86_64-clang-tools-extra を入力してコンパイラをインストールします。
  6. 環境変数を設定します。
    • MINGW_HOME を MSYS2 パス(デフォルトは C:\msys2)の mingw64(64 ビットコンピュータの場合)または mingw32(32 ビットコンピュータの場合)に設定します。例えば、64 ビットの場合は C:\msys2\mingw64 に設定します。
    • C_INCLUDE_PATH%MINGW_HOME%\include に設定します。
    • LIBRARY_PATH%MINGW_HOME%\lib に設定します。
    • %MINGW_HOME%\binPATH に追加します。

CP Editor の設定#

  1. CP Editor を開き、メニューバーの オプション -> 設定 をクリックします。

  2. 言語 -> C++ -> C++ コマンド を見つけ、自分の好みに応じて設定します。私の設定は CCF のコンパイルパラメータに対して g++ -Wall -Wextra -O2 -lm --std=gnu++14 です。

  3. 拡張 -> コードフォーマット -> Clang Format を見つけ、Clang Format プログラムclang-format に設定し、スタイルを自分の好みに応じて設定します。私の設定は以下の通りです:

    BasedOnStyle: Google
    IndentWidth: 4
    
  4. 拡張 -> Language Server -> C++ Server を見つけて有効にし、遅延を好みに応じて設定します。遅延が短すぎると使用できない可能性があります。私の設定は 1000ms です。

PowerShell 7 と oh-my-posh#

PowerShell のインストール#

PowerShell の GitHub ページ にアクセスし、最新の Release 内で自分のアーキテクチャに合ったインストーラーを見つけ、最新の PowerShell をインストールします。

Windows Terminal の設定#

MesloLGM NF フォントをダウンロードしてインストールします。

GUI 設定付きの Windows Terminal を使用するには、Microsoft Store から Windows Terminal Preview をダウンロードする必要があります。

設定 -> プロファイル -> デフォルト -> その他の設定 -> 外観 -> テキスト -> フォント でデフォルトフォントを Fira Code に設定します。

oh-my-posh のインストールと設定#

  1. Microsoft Store で oh-my-posh を検索してインストールします。
  2. PowerShell を開き、$Home\[My ]Documents フォルダーに新しい Powershell フォルダーを作成し、その下に Microsoft.PowerShell_profile.ps1 を新規作成し、oh-my-posh init pwsh | Invoke-Expression を入力します。

WSL2#

Arch Linux のインストール#

  1. コントロールパネル -> プログラム -> Windows 機能の有効化または無効化 に入り、Linux 用の Windows サブシステム仮想マシンプラットフォーム にチェックを入れて OK をクリックします。

  2. コンピュータを再起動します。

  3. このリンク から WSL2 アップグレードパッケージをダウンロードしてインストールします。

  4. PowerShell を開き、wsl --set-default-version 2 を入力して WSL のデフォルトを WSL2 に設定します。

  5. LxRunOffline をダウンロードし、解凍して PATH に追加します。

  6. archlinux-bootstrap-x86_64.tar.gz をダウンロードします。

  7. 新しい PowerShell を開き、LxRunOffline i -n archlinux -f <bootstrap のパス> -d <保存場所> -r root.x86_64 を入力します。

  8. wsl --set-version archlinux 2 を入力します。仮想マシンプラットフォーム が有効になっていることを確認してください。システムが Hyper-V をサポートしている場合は、有効にしてください。

  9. wsl -d archlinux を入力して WSL に入ります。

  10. PowerShell 内で wsl --shutdown archlinux && wsl -d archlinux を入力して再起動し、WSL に接続します。

  11. WSL 内で cd /etc && explorer.exe . を入力してファイルエクスプローラーで /etc を開きます。

  12. pacman.conf を開き、multilib リポジトリのコメントを外し、archlinuxcn リポジトリを追加します:

    [archlinuxcn]
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
    
  13. pacman.d/mirrorlist を開き、国内ミラーリポジトリのコメントを外します。

  14. WSL 内で以下のコマンドを入力します。

    pacman -Syy
    pacman-key --init
    pacman-key --populate
    pacman -S archlinuxcn-keyring
    pacman -S base base-devel nano git wget
    
  15. WSL 内で passwd を入力して root パスワードを設定します。

  16. 一般ユーザーを新規作成し、パスワードを設定します。

    useradd -m -G wheel -s /bin/bash <ユーザー>
    passwd <ユーザー>
    
  17. EDITOR=nano visudo を入力し、%wheel ALL=(ALL:ALL) NOPASSWD: ALL のコメントを外し、Ctrl+O Enter で保存し、Ctrl+X で終了します。

  18. id -u <ユーザー名> を入力して新規作成したユーザーの ID を確認します。最初のアカウントは 1000 である必要があります。

  19. exit を入力して WSL を終了します。

  20. PowerShell で LxRunOffline su -n archlinux -v <アカウント ID> を入力します。

  21. 管理者権限で PowerShell を開き、net stop LxssManager && net start LxssManager を入力して WSL サービスを再起動します。

  22. Microsoft® Update Catalog にアクセスし、最新の Windows Subsystem for Linux Update5.10.102.2 2022 年 8 月 18 日現在)をダウンロードします。

  23. 更新をインストールし、管理者権限で PowerShell を開き、wsl --shutdown && wsl -d archlinux を入力して WSL を再起動し、WSL に入ります。uname -a を入力してカーネルバージョンを確認します。

zsh と oh-my-zsh のインストールと設定#

  1. WSL に入ります。
  2. pacman -S zsh を入力して zsh をインストールします。
  3. chsh を入力し、パスワードを入力してシェルを /bin/zsh に切り替えます。
  4. sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)" を入力して oh-my-zsh をインストールします。
  5. git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k を入力して powerlevel10k テーマをインストールします。
  6. git clone https://ghproxy.com/https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git clone https://ghproxy.com/https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting を入力してプラグインをインストールします。
  7. nano ~/.zshrc を入力し、ZSH_THEME="powerlevel10k/powerlevel10k"plugins=(git zsh-autosuggestions zsh-syntax highlighting) を設定します。
  8. WSL を終了し、再起動します。

KDE Plasma#

基本インストール#

sudo pacman -Syu plasma

基本使用#

GWSL を使用して Plasma に接続することをお勧めします。Microsoft Store で GWSL を検索するだけです。中国地域の GWSL は有料ですが、試用版と有料版には違いがなく、時間制限もなく、支払いを求められることもありませんが、作者をサポートすることをお勧めします。

ダウンロード後、GWSL を開き、タスクバーのアイコンをクリックすると Dashboard が表示されます。GWSL Distro Tools をクリックし、Display/Audio Auto-Exporting を有効にします。GWSL は Linux プログラムのウィンドウを Windows デスクトップに配置することをサポートしていますが、私は全体の Plasma を配置するために別の仮想デスクトップを使用することを好みます。

そのためには、次の操作を行う必要があります:

  1. 新しい仮想デスクトップを作成します。
  2. 新しい仮想デスクトップで GWSL を開きます。
  3. タスクバーの GWSL アイコンを右クリックし、上部の XServer Profiles を選択し、Fullscreen Mode を選択します。
  4. 仮想デスクトップに全画面の黒いウィンドウが表示されますが、操作は必要ありません。別の仮想デスクトップに切り替えます。
  5. タスクバーの GWSL アイコンを左クリックし、Shortcut Creator を選択します。
  6. ポップアップウィンドウで、Shortcut LabelKDE PlasmaShortcut Commanddbus-launch startplasma-x11 を入力します。複数の WSL コンテナがある場合は、Run Inarchlinux(つまり、あなたのコンテナ名)に選択します。
  7. 検索ツールを使用して KDE Plasma on archlinux を検索し、フォルダーを開いてショートカットをデスクトップにコピーして Plasma を起動します。
  8. ショートカットをダブルクリックします。
  9. 全画面 GWSL の仮想デスクトップに戻ると、Plasma が起動していることがわかります。

一部のトリック#

このように設定した後、次の問題が発生します:

  • 仮想デスクトップを切り替えると GWSL ウィンドウが最小化されます。

まず、Python 3.x 環境を適切にインストールし、python -m pip install pywin32 pyvda を使用して Win32 API と仮想デスクトップを操作するモジュールをインストールする必要があります。

もう一つの問題#

この時点で、仮想デスクトップを切り替えると GWSL ウィンドウが最小化されることがわかります。Windows 11 の新機能のおかげで、複数の仮想デスクトップに異なる壁紙を設定できますが、デスクトップ上のアイコンは分離できません。私の方法は、デスクトップにファイルを置かないことです。

解決策#

GWSL ウィンドウを非最小化状態にするスクリプトを作成することができます。Python の Win32 API と強力な pyvda ライブラリを使用して実現できます。

from pyvda import VirtualDesktop
import win32gui, win32con
import asyncio

hwnd_title = {}
WINDOW_NAME = 'VcXsrv Server - Display 秦玉振的笔记本:0.0' # ここをあなたのウィンドウ名に変更してください
GWSL_VD_NUM = 2 # ここをあなたの仮想デスクトップ番号に変更してください
DEBUG = False # デバッグ情報を表示

def get_all_hwnd(hwnd, mouse) -> dict:
    global hwnd_title
    hwnd_title = {}
    if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
        hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

async def main():
    while True:
        if VirtualDesktop.current().number != GWSL_VD_NUM:
            await asyncio.sleep(0.1)
            continue
        win32gui.EnumWindows(get_all_hwnd, 0)
        hwnd = win32gui.FindWindow(None, WINDOW_NAME)
        win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
        if DEBUG:
            print('Unminimized', hwnd)
        await asyncio.sleep(0.1)
  
if __name__ == '__main__':
    asyncio.run(main())

このコードは AsyncIO を使用してウィンドウを非最小化にし、各間隔を 0.1 秒に設定します。

参考資料:Python でウィンドウを最前面に表示する、著者:DG 息。

ウィンドウを切り替える際にそれほど目立たないようにするために、デスクトップの背景を Plasma と同じに変更することができます。

WSA#

Windows Subsystem for Android をすでにインストールしている場合は、まずアンインストールしてください。

MagiskOnWSA と GApps#

その名の通り、これにより Windows Subsystem for Android 上で Magisk(root 権限)と GApps(Google サービスフレームワークや Google Play など)を実行できます。

残念ながら、この記事が書かれる前に LSPosed/MagiskOnWSA はすでに禁止されていました。しかし、私たちは LSPosed/MagiskOnWSALocal が提供するスクリプトを使用して Linux でコンパイルすることができます。

GitHub Actions を使用する(推奨)#

GitHub アカウントを持っていて、GitHub 操作に少し慣れている場合は、この方法をお勧めします。厳密には GitHub Actions の規約に違反し、オープンソースリポジトリを利用して無料で構築する権利を乱用していますが、WSL コンテナから GitHub にアクセスできる場合は手動でコンパイルすることをお勧めします。

具体的な手順は以下の通りです:

  1. LSPosed/MagiskOnWSALocal をフォークします。

  2. .github フォルダー内に workflows フォルダーを新規作成します。

  3. workflows フォルダー内に任意の名前の .yml ファイルを新規作成し、Workflow を貼り付けます。Workflow はすでに洛谷云剪贴板 に置かれています。

  4. ウェブページの Actions タブをクリックし、Actions を有効にします。

  5. 以下の 8~14 の手順に従って必要な設定を選択し、Workflow を実行します。

    img

手動コンパイル(推奨しない)#

この方法は **「良好なネットワーク環境」** を必要とします。

具体的な手順は以下の通りです:

  1. wsl --install -d Ubuntu を使用して新しい Ubuntu コンテナを作成します。

  2. 新しいウィンドウでユーザー名とパスワードを設定します。

  3. 次のスクリプトを入力して Tuna ソースを変更します:

    wget https://gitee.com/weizy1983/CNSolutions/raw/master/ubuntu/tunasource/UbuntuTunaSource.sh
    sudo chmod 777 UbuntuTunaSource.sh
    sudo ./UbuntuTunaSource.sh ubuntu20.04
    
  4. sudo apt-get install python3-pip winetricks -y を入力して依存関係をインストールします。

  5. WSL でディレクトリを開きます。例えば、$Home\Documents です。

  6. Git リポジトリをクローンし、git clone https://ghproxy.com/https://github.com/LSPosed/MagiskOnWSALocal を入力します。

  7. リポジトリディレクトリに入り、scripts/run.sh を実行し、bash scripts/run.sh を入力します。

  8. Build arch 選択ページが表示されるので、デフォルト設定のまま Enter で確認します。

  9. WSA release type が表示されるので、自分で選択します。私は insider slow/Beta Channel を選択しました。上下キーで移動し、スペースで選択、Enter で確認します。

  10. 次に Magisk version が表示されるので、自分で選択します。私は Beta Channel を選択しました。

  11. Do you want to install gapps? と尋ねられるので、Yes を選択し、Enter で確認します。

  12. Variants of gapps が表示されるので、OpenGApps が公式に Android 12 をサポートしていないため、Pico を選択します。

  13. Do you want to keep amazon appStore? と尋ねられるので、No を選択し、Amazon アプリストアを保持しないようにします。

  14. Root solutionMagisk を root ソリューションとして選択します。

  15. その後、ターミナルにあなたの選択肢が表示され、完了を待つだけです。

    ARCH=x64
    RELEASE_TYPE=insider slow
    MAGISK_VER=beta
    GAPPS_VARIANT=pico
    REMOVE_AMAZON=remove
    ROOT_SOL=magisk
    

インストール#

  1. 設定 -> プライバシーとセキュリティ -> 開発者オプション -> 開発者オプションを有効にする を選択します。
  2. あなたの MagiskOnWSALocal ディレクトリを開きます。GitHub Actions を使用している場合は、Artifact をダウンロードしてフォルダーに解凍します。
  3. Install.ps1 を右クリックし、PowerShell で開き、完了を待ちます。
  4. Microsoft Store で WSATools を検索してインストールします。
  5. Android SDK Platform Tools をインストールします。
  6. お好きなプロキシソフトウェアをインストールします(良好なネットワーク環境がない場合)。私は Clash for Android を使用し、設定します。
  7. Google Play Store にアクセスし、アカウントにログインして Microsoft Desktop をインストールします。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。