Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

git checkout がうまくいきません

解決したいこと

WSL2にUSB通信の機能を追加するために、
https://contentsviewer.work/Master/WSL/Tips/WSL2-USB/WSL2-USB#SectionID_2
を参考に作業を進めています。
/proc/config.gz が見つからないのですが、なぜでしょうか。

4.19.104-microsoft-standard4.4.0-19041-Microsoft に、v4.19.104linux-msft-wsl-4.19.y に読み替えましたが、読み替え方はあっているでしょうか?

an@DESKTOP-HGVMRCT:~$ uname -v -r
4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021

発生している問題・エラー

cp: cannot stat '/proc/config.gz': No such file or directory   

該当するソースコード

an@DESKTOP-HGVMRCT:~$ sudo git clone https://github.com/microsoft/WSL2-Linux-Kernel.git /usr/src/4.4.0-19041-Microsoft                                                                                                                              
an@DESKTOP-HGVMRCT:~$ cd /usr/src/4.4.0-19041-Microsoft                                                                 
an@DESKTOP-HGVMRCT:/usr/src/4.4.0-19041-Microsoft$ sudo git checkout linux-msft-wsl-4.19.y                              
[sudo] password for an:                                                                                                 
Updating files: 100% (64227/64227), done.                                                                               
Branch 'linux-msft-wsl-4.19.y' set up to track remote branch 'linux-msft-wsl-4.19.y' from 'origin'.                     
Switched to a new branch 'linux-msft-wsl-4.19.y'                                                                        
an@DESKTOP-HGVMRCT:/usr/src/4.4.0-19041-Microsoft$ sudo cp /proc/config.gz config.gz                                    
cp: cannot stat '/proc/config.gz': No such file or directory                                                            

自分で試したこと

masterブランチで試してみました。

an@DESKTOP-HGVMRCT:/usr/src/4.4.0-19041-Microsoft$ sudo git checkout master                                             
Updating files: 100% (4226/4226), done.                                                                                 
Branch 'master' set up to track remote branch 'master' from 'origin'.                                                   
Switched to a new branch 'master'                                                                                       
an@DESKTOP-HGVMRCT:/usr/src/4.4.0-19041-Microsoft$ sudo cp /proc/config.gz config.gz                                    
cp: cannot stat '/proc/config.gz': No such file or directory   
0

1Answer

まず現在のカーネルが 4.4.0-19041-Microsoft ということは WSL 2 ではなく WSL 1 を使っているのでは。 PowerShell で wsl -l -v を実行して VERSION が2になっているか確認してください。

PS> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu          Stopped         2

なっていなければ次の手順で WSL 2 をインストールしてディストリビューションをアップデートしてください。

PS> wsl --install
# ↑が動かなければ以下の手順に従う。
# https://docs.microsoft.com/ja-jp/windows/wsl/install-manual

PS> wsl --set-default-version 2

PS> wsl --set-version Ubuntu 2
# ↑ Ubuntu の部分は wsl -l -v の NAME の値に読み替える。
# Ubuntu-20.04 などになっている場合がある。

次に、 /proc/config.gz は git checkout とは関係ありません。このファイルが存在しなければチェックアウトしたソースコードの Microsoft/config-wsl が使えると思います。「現在のカーネル設定をコピーする」の手順を sudo cp Microsoft/config-wsl .config に置き換えてください。

0Like

Comments

  1. @anne_daigaku

    Questioner

    WSL2にアップデートし``` sudo cp Microsoft/config-wsl .config ```に変更して、次の手順に勧めました。ありがとうございます!

    カーネルとモジュールをビルドの際に以下のエラーが出たのですが、こちらの解決方法も教えていただけると嬉しいです。

    ```
    BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
    Failed to generate BTF for vmlinux
    Try to disable CONFIG_DEBUG_INFO_BTF

  2. CONFIG_DEBUG_INFO_BTF をオフにしろとのことなので、 .config ファイル内の

    CONFIG_DEBUG_INFO_BTF=y

    行を書き換えて

    # CONFIG_DEBUG_INFO_BTF is not set

    にすれば行けると思います。
  3. @anne_daigaku

    Questioner

    sedコマンドで書き換えられないのですが、どのように書き換えればよいでしょうか?何度も追加で質問して申し訳ないです。

    ```
    an@DESKTOP-HGVMRCT:/usr/src/5.10.60.1-microsoft-standard-WSL2$ sed -e "s/CONFIG_DEBUG_INFO_BTF=y/CONFIG_DEBUG_INFO_BTF=y/" .config > tmp
    -bash: tmp: Permission denied
    an@DESKTOP-HGVMRCT:/usr/src/5.10.60.1-microsoft-standard-WSL2$ mv tmp .config
    mv: cannot stat 'tmp': No such file or directory
  4. sudo sed ... にしないと動かないですね。それに
    "s/CONFIG_DEBUG_INFO_BTF=y/CONFIG_DEBUG_INFO_BTF=y/"
    だと書き換えになっていません。記法は "s/検索文字列/置き換え文字列/" です。

    sed が失敗して作られなかった tmp ファイルを mv することもできません。
    これらは Linux の基本操作なので1つずつ理解しながら実行するようにしてください。

    まとめると

    sudo sed -e "s/CONFIG_DEBUG_INFO_BTF=y/# CONFIG_DEBUG_INFO_BTF is not set/" .config > tmp

    # tmp ファイルの中を見て書き換えできたか確認すること
    sudo less tmp

    sudo mv tmp .config
  5. @anne_daigaku

    Questioner

    回答ありがとうございます。
    menuconfigでフラグを変更する方法をとりました。

    ```
    -> Kernel hacking
    -> Compile-time checks and compiler options
    -> Compile the kernel with debug info [ ]
    ```

    ビルドは失敗(?)しました。続きは、新しい質問を立てました。

    https://qiita.com/anne_daigaku/questions/b8627fdc23c2fd49bbed

Your answer might help someone💌