LineageOSのビルド(ビルド環境構築からビルドまで)

はじめに

LineageOSを野良ビルドするには、ベアメタルのLinux(Ubuntuが推奨)で構築するとすんなり環境境構築できます。AndoroidOSの開発でもそちらが推奨されています。

自分は手元のThinkpad L14Gen4(AMD Ryzen PRO7  7730U(8コア/16スレッド)+メモリ64GB+1TBSSD)のWindows11で開発したかったので、Windows11+WSL2+Ubuntu24.04LTSで苦労しつつも、なんとかビルドが完了するところまでできました。

また、LineageOSのビルド環境は下記のハードウェア要件が推奨されているので、昨今のノートPCで開発環境を構築するのは、ハイエンドのノートPCが必要です。

結論

Windows11+WSL2+Ubuntu24.04LTSのセットアップ

様々なところで、説明されているのでUbuntu24.04LTSのインストールまでは省略する。普通に、管理者権限でPowerShellコンソールを開き、「wsl install -d Ubunt-24.04」と入力してすんなりインストールできる。

ここでは主にAndoroidOS(LineageOS21)のビルドするための環境構築に必要な部分について記述する。


WSL2の設定

1.ハードウェアリソースの設定

Ubuntuに割り当てる最大メモリ容量(今回は48GBとした)とスワップの無効化する。下記のファイルを作成した

[c:\User\$UserName\.wslconfig]

[wsl2]

memory=48GB

swap=0


2.WSL2にUSBデバイスを接続する

usbipd-winのWindowsパッケージをインストールし、usbipdの各種コマンドでUSBデバイスを手動でアタッチする。この部分でPowerShellコンソールとUbuntuのBashコンソールを行き来するので非常に煩わしく、面倒な部分である


2-1. USBIPD-WINのWindowパッケージをインストールする


2-2. (オプション)サードパーティファイアーウォールやWindows DefenderのファイアーウォールでTCP3240をincomingコネクションを許可する


2-3, ターミナルを開いて、PowerShellコンソールとUbuntu24.04 LTSを起動する


ここから、管理者権限のPowerShellコンソールでのコマンド実行では[PowerShell]とし、Ubuntuコンソールでのコマンド実行は[Ubuntu]と記載する

[PowerShell]

wingen list

usbipd list

[Ubuntu]

demsg | tail -40

usbls

lsmod


2-4. OnePlus7とPCをUSBケーブルで接続し、WSL2にUSBデバイスを接続する

[Ubuntu]
hnishi@thpdl14ge4:~/workdir/oneplus7/android/lineage$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

hnishi@thpdl14ge4:~/workdir/oneplus7/android/lineage$

[PowerShell]

PS C:\Users\nissy> usbipd list

Connected:

BUSID  VID:PID    DEVICE                                                        STATE

1-2    22d9:2765  GM1901, ADB Interface                                         Not shared


Persisted:

GUID                                  DEVICE


PS C:\Users\nissy> usbipd bind --busid 1-2

PS C:\Users\nissy> usbipd list

Connected:

BUSID  VID:PID    DEVICE                                                        STATE

1-2    22d9:2765  GM1901, ADB Interface                                         Shared


Persisted:

GUID                                  DEVICE

PS C:\Users\nissy> usbipd attach --wsl --busid 1-2

usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions.

usbipd: info: Using IP address 172.30.16.1 to reach the host.

PS C:\Users\nissy>

[Ubuntu]

hnishi@thpdl14ge4:~/workdir/oneplus7/android/lineage$ dmesg | tail -20

[131099.141382] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2

[131099.143144] Failed to connect to bus: No such file or directory

[131099.389393] systemd-journald[38]: Received client request to flush runtime journal.

[131100.643515] WSL (2): Creating login session for hnishi

[131115.942231] Exception:

[131115.942236] Operation canceled @p9io.cpp:258 (AcceptAsync)


[131182.022214] WSL (2): Creating login session for root

[131183.807674] systemd-journald[58]: Time jumped backwards, rotating.

[131841.715842] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)

[131841.715849] vhci_hcd vhci_hcd.0: devid(65538) speed(3) speed_str(high-speed)

[131841.715938] vhci_hcd vhci_hcd.0: Device attached

[131842.041882] usb 1-1: new high-speed USB device number 2 using vhci_hcd

[131842.182482] usb 1-1: SetAddress Request (2) to port 0

[131842.222126] usb 1-1: New USB device found, idVendor=22d9, idProduct=2765, bcdDevice= 4.14

[131842.222136] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[131842.222139] usb 1-1: Product: GM1901

[131842.222142] usb 1-1: Manufacturer: OnePlus

[131842.222144] usb 1-1: SerialNumber: b95b459a

[131922.256480] systemd-journald[58]: Time jumped backwards, rotating.

hnishi@thpdl14ge4:~/workdir/oneplus7/android/lineage$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 22d9:2765 OPPO Electronics Corp. Oppo N1

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

hnishi@thpdl14ge4:~/workdir/oneplus7/android/lineage$



リファレンス