Asahi Linux × Linux From Scratch (12.1-systemd)

# 概要

LFS v12.1-systemd を Asahi Linux でやります.

それだけです.

---

LFS は日本語訳を, BLFS は原文を読んでいます.

https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/index.html

https://www.linuxfromscratch.org/blfs/view/stable-systemd/index.html

---

記事起こしすることがあんまなかったので, ビルド時間くらいはメモってます. まあ, 記事の内容としてはそれが殆どです. ~~だってやるだけですから.~~

手順としてはまず最初に LFS をじっくり進めます. そしてカーネル導入と起動の章になったら BLFS と Asahi Linux の docs に従いアドリブを敢行します. そしたらきっと起動するはずですよね？では, 始めます.

# 環境

既に [asahi-installer](https://github.com/AsahiLinux/asahi-installer) で導入した [ALARM](https://archlinuxarm.org) が入ってます. それ以外は至って普通の [MacBook Pro 16" 2021](https://support.apple.com/kb/SP858?locale=en_US) です. M1 Pro と 1TB SSD が積んであります.

## ホストシステム

[**2.2. ホストシステム要件**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter02/hostreqs.html) より, 出力:

```
OK:    Coreutils 9.4    >= 8.1
OK:    Bash      5.2.26 >= 3.2
OK:    Binutils  2.38   >= 2.13.1
OK:    Bison     3.8.2  >= 2.7
OK:    Diffutils 3.10   >= 2.8.1
OK:    Findutils 4.9.0  >= 4.2.31
OK:    Gawk      5.3.0  >= 4.0.1
OK:    GCC       12.1.0 >= 5.2
OK:    GCC (C++) 12.1.0 >= 5.2
OK:    Grep      3.11   >= 2.5.1a
OK:    Gzip      1.13   >= 1.3.12
OK:    M4        1.4.19 >= 1.4.10
OK:    Make      4.4.1  >= 4.0
OK:    Patch     2.7.6  >= 2.5.4
OK:    Perl      5.38.2 >= 5.8.8
OK:    Python    3.11.7 >= 3.4
OK:    Sed       4.9    >= 4.1.5
OK:    Tar       1.35   >= 1.22
OK:    Texinfo   7.1    >= 5.0
OK:    Xz        5.6.0  >= 5.0.0
OK:    Linux Kernel 6.5.0 >= 4.19
OK:    Linux Kernel supports UNIX 98 PTY
Aliases:
OK:    awk  is GNU
OK:    yacc is Bison
OK:    sh   is Bash
Compiler check:
OK:    g++ works
OK: nproc reports 10 logical cores are available
```

## ターゲットシステム

[**2.4. 新しいパーティションの生成**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter02/creatingpartition.html) より, 構成について:

- ~~具体的には [NixOS のインストール](https://github.com/tpwrules/nixos-apple-silicon/blob/main/docs/uefi-standalone.md)後の残滓を再利用しています~~
- asahi-installer で m1n1 + U-Boot + ESP を構成
  - EFI partition に 477M
  - root partition (残りの空きを全部) に 23.9G

---

[**2.5. ファイルシステムの生成**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter02/creatingfilesystem.html) より, 構成について:

- EFI partition は VFAT だが既に構成されているので触れないでおく
- root partition は btrfs でフォーマット

<details>
<summary>root partition の詳細</summary>

```
alarm% sudo mkfs.btrfs -f /dev/nvme0n1p5
btrfs-progs v6.7.1
See https://btrfs.readthedocs.io for more information.
 
WARNING: sectorsize 4096 does not match host CPU page size 16384, with kernels 6.x and up
	 the 4KiB sectorsize is supported on all architectures but other combinations
	 may fail the filesystem mount, use "--sectorsize 16384" to override that
 
Performing full device TRIM /dev/nvme0n1p5 (23.90GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)
 
Label:              (null)
UUID:               2f8be01e-8224-4b18-b5f0-57f1e5c4f6f2
Node size:          16384
Sector size:        4096	(CPU page size: 16384)
Filesystem size:    23.90GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             256.00MiB
  System:           DUP               8.00MiB
SSD detected:       yes
Zoned device:       no
Features:           extref, skinny-metadata, no-holes, free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    23.90GiB  /dev/nvme0n1p5
```
---

</details>

# 事前準備

[**3.1 はじめに**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter03/introduction.html) より, ソースについて:

`wget-list-systemd` に関しては日本語訳情報に従うとして, その上で linux のソースを Asahi のものに置き換える必要があります[^1].

[^1]: 投稿時現在, 例えば組み込みのキーボード及び USB ポートの対応は vanilla linux には上がっていない為, 起動出来ても操作は何もできなくなります

ここでは投稿時現在で最新の [asahi-6.6-15](https://github.com/AsahiLinux/linux/releases/tag/asahi-6.6-15) を使うこととします. `.tar.gz` を落として `$LFS/sources` 配下に配置しておきます. 他にも必要なものはあるのですが, ひとまずこれだけです.

---

[**4.2. LFS ファイルシステムの限定的なディレクトリレイアウトの生成**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter04/creatingminlayout.html) より, ディレクトリ構成について:

`x86_64` の場合は `$LFS/lib64` を作る旨の事が書いてありますが, Apple Silicon は `aarch64` なのでこれに引っ掛かりません. なので何も考えずに `$LFS/lib64` を作ります. Apple M1 の命令セットである ARMv8.5-A は多分 32bit / 64bit のアーキテクチャなので<sup>[Wikipedia](https://en.wikipedia.org/wiki/AArch64#Naming_conventions)</sup> `lib64` を置くことは妥当な選択の筈です.[^2]

[^2]: でも後から考えると失敗だった気もする. 理由は追々

---

[**4.5. SBU 値について**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter04/aboutsbus.html) について, 実測値:

[*5.2. Binutils-2.42 - 1回め*](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/binutils-pass1.html) での `make` を `time make` にした出力がこれ

```
real    0m29.969s
user    1m37.593s
sys     0m10.539s
```

従ってここでは `1 SBU := 30 sec` とします.[^3]

[^3]: この先を見れば分かりますが, これあんまアテにならなかった気がします. half-minute として読んだほうが伝わりやすいか？

# クロスツールチェーンの構築

[**第5章 クロスツールチェーンの構築**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/chapter05.html) より, ビルド時間の実測値[^4]:

[^4]: と言ってもまあ swaywm 上の alacritty から操作してるので, I/O なども込みの時間になるのでしょうが…

括弧書きが概算時間, そうでない方が実測時間です. 太字は概算時間より大幅に超えていると思ったものです. 斜体は察してください. Binutils と同様に計測には `time make`[^5] を使用します.

[^5]: まあ要するにバイナリ作るときの時間だけ測りますよってことです. これ以降では Make を使うことばかりではありませんし, 引数もあったりするので… 適宜読み替えてください. 例えば, configure の時間は除きます.

| package name | actual time [SBU] | estimated time [SBU] |
| -            | -                 | -                    |
| binutils     | *1.00*            | 1                    |
| gcc          | **6.65**          | 3.8                  |
| glibc        | 2.51              | 1.5                  |
| libstdc++    | 0.27              | 0.2                  |

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/gcc-pass1.html">5.3. GCC-13.2.0 - 1回め</a></strong> より, 懸念点:</summary>

x86_64 ホストってことにして置換はしましたが, `gcc/config/` 配下に aarch64 向け以外の, つまり aarch32 みたいな設定は無いはずなので, これは効果がないかもしれない.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/linux-headers.html">5.4. Linux-6.7.4 API ヘッダー</a></strong> より, 備考:</summary>

ここでは `asahi-6.6-15.tar.gz` を使用する. 展開すると `linux-asahi-6.6-15/` が作成されるのでこれに入る. それ以外の手順は同様.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/glibc.html">5.5 Glibc-2.39</a></strong> より, 備考:</summary>

最初の手順は両方やるとして, 実情 (ホストシステム) に沿ったものとします.

| original               | replace                 |
| -                      | -                       |
| `ld-linux.so.2`        | `ld-linux.so.1`         |
| `ls-lsb.so.3`          | `ld-lsb.so.2`           |
| `ld-linux-x86-64.so.2` | `ld-linux-aarch64.so.1` |
| `ls-lsb-x86-64.so.3`   | `ld-lsb-aarch64.so.2`   |

よくわかんないけど. よくわかんないけど…

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter05/gcc-libstdc++.html">5.6. GCC-13.2.0 から取り出した libstdc++</a></strong> より, 備考:</summary>

`$LFS/usr/lib/` 配下に libtool アーカイブファイルが無かったので, `$LFS/usr/lib64/` 配下にあるものを吹き飛ばします.

---

</details>

# 一時ツールの生成

[**第6章 クロスコンパイルによる一時的ツール**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter06/chapter06.html) より, ビルド時間の実測値:

| package name | actual time [SBU] | estimated time [SBU] |
| -            | -                 | -                    |
| m4           | 0.10              | 0.1                  |
| ncurses      | 0.19              | 0.3                  |
| bash         | 0.20              | 0.2                  |
| coreutils    | 0.02              | 0.3                  |
| diffutils    | 0.09              | 0.1                  |
| file         | 0.04              | 0.1                  |
| findutils    | 0.12              | 0.1                  |
| gawk         | 0.14              | 0.1                  |
| grep         | 0.10              | 0.1                  |
| gzip         | 0.03              | 0.1                  |
| make         | 0.03              | *< 0.1*              |
| patch        | 0.04              | 0.1                  |
| sed          | 0.06              | 0.1                  |
| tar          | 0.12              | 0.1                  |
| xz           | 0.08              | 0.1                  |
| binutils     | 1.23              | 0.5                  |
| gcc          | **8.90**          | 4.4                  |

特筆することはありません. やるだけですね.

# chroot 後の一時ツール生成

[**7. chroot への移行と一時的ツールの追加ビルド**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter07/chapter07.html) より, ビルド時間の実測値:

| package name | actual time [SBU] | estimated time [SBU] |
| -            | -                 | -                    |
| gettext      | **2.13**          | 1.1                  |
| bison        | 0.07              | 0.2                  |
| perl         | 0.80              | 0.6                  |
| python       | 0.71              | 0.5                  |
| texinfo      | 0.17              | 0.2                  |
| util-linux   | 0.28              | 0.2                  |

これもやるだけです.

# システムの構築

[**第8章 基本的なソフトウェアのインストール**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/chapter08.html) より, ビルド時間の実測値:

| package name | actual time [SBU] | estimated time [SBU] |
| -            | -                 | -                    |
| glibc        | **34.42**         | 12                   |
| zlib         | 0.03              | *< 0.1*              |
| bzip         | 0.03              | *< 0.1*              |
| xz           | 0.08              | 0.1                  |
| zstd         | 0.37              | 0.5                  |
| file         | 0.04              | *< 0.1*              |
| readline     | 0.03              | *< 0.1*              |
| m4           | 0.10              | 0.3                  |
| bc           | 0.03              | *< 0.1*              |
| flex         | 0.08              | 0.1                  |
| tcl          | 1.74              | 2.7                  |
| expect       | 0.00              | 0.2                  |
| dejagnu      | ?                 | 0.1                  |
| pkgconf      | 0.00              | *< 0.1*              |
| binutils     | 2.51              | 2.2                  |
| gmp          | 0.24              | 0.3                  |
| mpfr         | 0.17              | 0.3                  |
| mpc          | 0.04              | 0.1                  |
| attr         | 0.01              | *< 0.1*              |
| acl          | 0.02              | *< 0.1*              |
| libcap       | 0.03              | *< 0.1*              |
| libxcrypt    | 0.03              | 0.1                  |
| shadow       | 0.09              | 0.1                  |
| gcc          | 55.58             | 42                   |
| ncurses      | 0.22              | 0.2                  |
| sed          | 0.04              | 0.3                  |
| psmisc       | 0.01              | *< 0.1*              |
| gettext      | 2.13              | 1.4                  |
| bison (build)| 0.07              | 2.3                  |
| bison (check)| 3.29              | 5.5                  |
| grep         | 0.06              | 0.4                  |
| bash         | 0.20              | 1.2                  |
| libtool      | 0.03              | 0.6                  |
| gdbm         | 0.04              | 0.1                  |
| gperf        | 0.02              | *< 0.1*              |
| expat        | 0.06              | 0.1                  |
| inetutils    | 0.11              | 0.2                  |
| less         | 0.02              | *< 0.1*              |
| perl (build) | 0.92              | 1.5                  |
| perl (test)  | 3.18              | 11                   |
| xml::parser  | 0.03              | *< 0.1*              |
| intltool     | 0.00              | *< 0.1*              |
| autoconf (build)| 0.00           | *< 0.1*              |
| autoconf (check)| **2.72**       | 0.4                  |
| automake (build)| 0.01           | *< 0.1*              |
| automake (check)| **10.78**      | 1.6                  |
| openssl      | 1.44              | 1.8                  |
| kmod         | 0.03              | *< 0.1*              |
| libelf       | 0.43              | 0.3                  |
| libffi       | 0.02              | 1.8                  |
| python       | 3.28              | 1.8                  |
| flit-core    | ?                 | *< 0.1*              |
| wheel        | ?                 | *< 0.1*              |
| setuptools   | ?                 | *< 0.1*              |
| ninja        | ?                 | 0.3                  |
| meson        | ?                 | *< 0.1*              |
| coreutils    | 0.27              | 1.0                  |
| check (build)| 0.05              | 0.1                  |
| check (check)| **5.88**          | 1.5                  |
| diffutils    | 0.05              | 0.3                  |
| gawk         | 0.13              | 0.1                  |
| findutils    | 0.08              | 0.4                  |
| groff        | 0.25              | 0.2                  |
| grub         | -                 | 0.3                  |
| gzip         | 0.03              | 0.3                  |
| iproute2     | 0.14              | 0.1                  |
| kbd          | 0.08              | 0.1                  |
| libpipeline  | 0.04              | 0.1                  |
| make         | 0.03              | 0.5                  |
| patch        | 0.04              | 0.1                  |
| tar          | 0.09              | 0.5                  |
| texinfo      | 0.15              | 0.3                  |
| vim          | 0.37              | 2.5                  |
| markupsafe   | ?                 | *< 0.1*              |
| jinja2       | ?                 | *< 0.1*              |
| systemd      | 1.25              | 0.7                  |
| d-bus        | 0.06              | 0.1                  |
| man-db       | 0.11              | 0.2                  |
| procps-ng    | 0.07              | 0.1                  |
| util-linux   | 0.26              | 0.5                  |
| e2fsprogs    | 0.22              | 0.4                  |

ながああああい. **ながああああああああああい.** ***ながすぎる！！！！！！！！！！！！！！！！！！！*** 本当に大変だった. 手作業でやる内容じゃないですよね…？いや, これこそ手作業でやる価値がありました.

~~あとたまにビルド時間だけじゃなくてテスト時間も含めてたりします. それもこれも LFS を読めば判ることですが…~~

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/glibc.html">8.5. Glibc-2.39</a></strong> より, 懸念点:</summary>

テストの中で落ちちゃダメそうなものが沢山落ちた.

<details><summary>内訳</summary>

```
FAIL: assert/tst-assert-c++
FAIL: assert/tst-assert-g++
FAIL: debug/tst-backtrace2
FAIL: debug/tst-backtrace3
FAIL: debug/tst-backtrace4
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: debug/tst-chk-cancel
FAIL: debug/tst-fortify-cc-default-1-def
FAIL: debug/tst-fortify-cc-default-2-def
FAIL: debug/tst-fortify-cc-default-3-def
FAIL: debug/tst-fortify-cc-lfs-1-def
FAIL: debug/tst-fortify-cc-lfs-2-def
FAIL: debug/tst-fortify-cc-lfs-3-def
FAIL: debug/tst-fortify-cc-nongnu-1-def
FAIL: debug/tst-fortify-cc-nongnu-2-def
FAIL: debug/tst-fortify-cc-nongnu-3-def
UNSUPPORTED: debug/tst-fortify-syslog
FAIL: dlfcn/bug-atexit3
UNSUPPORTED: elf/tst-decorate-maps
UNSUPPORTED: elf/tst-dlopen-self-container
UNSUPPORTED: elf/tst-dlopen-tlsmodid-container
UNSUPPORTED: elf/tst-env-setuid
UNSUPPORTED: elf/tst-env-setuid-static
UNSUPPORTED: elf/tst-env-setuid-tunables
UNSUPPORTED: elf/tst-glibc-hwcaps-prepend-cache
UNSUPPORTED: elf/tst-ldconfig-bad-aux-cache
UNSUPPORTED: elf/tst-ldconfig-ld_so_conf-update
UNSUPPORTED: elf/tst-ldconfig-p
UNSUPPORTED: elf/tst-pldd
UNSUPPORTED: elf/tst-preload-pthread-libc
XPASS: elf/tst-protected1a
XPASS: elf/tst-protected1b
UNSUPPORTED: elf/tst-rootdir
FAIL: elf/tst-unwind-main
UNSUPPORTED: elf/tst-valgrind-smoke
FAIL: iconv/tst-iconv-mt
UNSUPPORTED: io/tst-getcwd-smallbuff
FAIL: io/tst-lchmod
UNSUPPORTED: locale/tst-localedef-path-norm
UNSUPPORTED: localedata/tst-localedef-hardlinks
FAIL: malloc/tst-malloc-stats-cancellation
FAIL: malloc/tst-malloc-stats-cancellation-malloc-check
FAIL: malloc/tst-malloc-stats-cancellation-malloc-hugetlb1
FAIL: malloc/tst-malloc-stats-cancellation-malloc-hugetlb2
UNSUPPORTED: misc/tst-adjtimex
UNSUPPORTED: misc/tst-clock_adjtime
FAIL: misc/tst-gettid-kill
UNSUPPORTED: misc/tst-ntp_adjtime
UNSUPPORTED: misc/tst-pidfd_getpid
UNSUPPORTED: misc/tst-pkey
FAIL: misc/tst-sigcontext-get_pc
UNSUPPORTED: misc/tst-sme-jmp
UNSUPPORTED: misc/tst-syslog
UNSUPPORTED: misc/tst-syslog-long-progname
UNSUPPORTED: nptl/test-cond-printers
UNSUPPORTED: nptl/test-condattr-printers
UNSUPPORTED: nptl/test-mutex-printers
UNSUPPORTED: nptl/test-mutexattr-printers
UNSUPPORTED: nptl/test-rwlock-printers
UNSUPPORTED: nptl/test-rwlockattr-printers
FAIL: nptl/tst-basic3
FAIL: nptl/tst-basic4
FAIL: nptl/tst-call-once
FAIL: nptl/tst-cancel-self
FAIL: nptl/tst-cancel-self-cancelstate
FAIL: nptl/tst-cancel-self-canceltype
FAIL: nptl/tst-cancel-self-testcancel
FAIL: nptl/tst-cancel1
FAIL: nptl/tst-cancel10
FAIL: nptl/tst-cancel11
FAIL: nptl/tst-cancel12
FAIL: nptl/tst-cancel13
FAIL: nptl/tst-cancel14
FAIL: nptl/tst-cancel15
FAIL: nptl/tst-cancel16
FAIL: nptl/tst-cancel17
FAIL: nptl/tst-cancel18
FAIL: nptl/tst-cancel2
FAIL: nptl/tst-cancel20
FAIL: nptl/tst-cancel21
FAIL: nptl/tst-cancel22
FAIL: nptl/tst-cancel23
FAIL: nptl/tst-cancel24
FAIL: nptl/tst-cancel25
FAIL: nptl/tst-cancel28
FAIL: nptl/tst-cancel29
FAIL: nptl/tst-cancel3
FAIL: nptl/tst-cancel30
FAIL: nptl/tst-cancel4
FAIL: nptl/tst-cancel4_1
FAIL: nptl/tst-cancel4_2
FAIL: nptl/tst-cancel5
FAIL: nptl/tst-cancel6
FAIL: nptl/tst-cancel7
FAIL: nptl/tst-cancel8
FAIL: nptl/tst-cancel9
FAIL: nptl/tst-cancelx10
FAIL: nptl/tst-cancelx11
FAIL: nptl/tst-cancelx12
FAIL: nptl/tst-cancelx13
FAIL: nptl/tst-cancelx14
FAIL: nptl/tst-cancelx15
FAIL: nptl/tst-cancelx16
FAIL: nptl/tst-cancelx17
FAIL: nptl/tst-cancelx18
FAIL: nptl/tst-cancelx2
FAIL: nptl/tst-cancelx20
FAIL: nptl/tst-cancelx21
FAIL: nptl/tst-cancelx3
FAIL: nptl/tst-cancelx4
FAIL: nptl/tst-cancelx5
FAIL: nptl/tst-cancelx6
FAIL: nptl/tst-cancelx7
FAIL: nptl/tst-cancelx8
FAIL: nptl/tst-cancelx9
FAIL: nptl/tst-cleanup0
FAIL: nptl/tst-cleanup0-cmp
FAIL: nptl/tst-cleanup1
FAIL: nptl/tst-cleanup3
FAIL: nptl/tst-cleanup4
FAIL: nptl/tst-cleanupx0
FAIL: nptl/tst-cleanupx1
FAIL: nptl/tst-cleanupx3
FAIL: nptl/tst-cleanupx4
FAIL: nptl/tst-cnd-basic
FAIL: nptl/tst-cnd-broadcast
FAIL: nptl/tst-cnd-timedwait
FAIL: nptl/tst-cond-except
FAIL: nptl/tst-cond22
FAIL: nptl/tst-cond25
FAIL: nptl/tst-cond7
FAIL: nptl/tst-cond8
FAIL: nptl/tst-exec5
FAIL: nptl/tst-execstack-threads
FAIL: nptl/tst-exit2
FAIL: nptl/tst-exit3
FAIL: nptl/tst-fini1
FAIL: nptl/tst-join1
FAIL: nptl/tst-join10
FAIL: nptl/tst-join11
FAIL: nptl/tst-join12
FAIL: nptl/tst-join13
FAIL: nptl/tst-join5
FAIL: nptl/tst-join6
FAIL: nptl/tst-join8
FAIL: nptl/tst-join9
FAIL: nptl/tst-key3
FAIL: nptl/tst-minstack-cancel
FAIL: nptl/tst-minstack-exit
FAIL: nptl/tst-minstack-throw
FAIL: nptl/tst-mtx-basic
FAIL: nptl/tst-mtx-timedlock
FAIL: nptl/tst-mtx-trylock
FAIL: nptl/tst-mutex8
FAIL: nptl/tst-mutexpi8
FAIL: nptl/tst-once3
FAIL: nptl/tst-once4
FAIL: nptl/tst-once5
FAIL: nptl/tst-oncex3
FAIL: nptl/tst-oncex4
FAIL: nptl/tst-oncey3
FAIL: nptl/tst-oncey4
FAIL: nptl/tst-pthread-exit-signal
UNSUPPORTED: nptl/tst-pthread-gdb-attach
UNSUPPORTED: nptl/tst-pthread-gdb-attach-static
UNSUPPORTED: nptl/tst-pthread-getattr
FAIL: nptl/tst-pthread-raise-blocked-self
FAIL: nptl/tst-pthread_cancel-select-loop
FAIL: nptl/tst-pthread_exit-nothreads
FAIL: nptl/tst-robust1
FAIL: nptl/tst-robust2
FAIL: nptl/tst-robust3
FAIL: nptl/tst-robust4
FAIL: nptl/tst-robust5
FAIL: nptl/tst-robust6
FAIL: nptl/tst-robust7
FAIL: nptl/tst-robustpi1
FAIL: nptl/tst-robustpi2
FAIL: nptl/tst-robustpi3
FAIL: nptl/tst-robustpi4
FAIL: nptl/tst-robustpi5
FAIL: nptl/tst-robustpi6
FAIL: nptl/tst-robustpi7
FAIL: nptl/tst-rseq-nptl
FAIL: nptl/tst-sem11
FAIL: nptl/tst-sem12
FAIL: nptl/tst-sem16
FAIL: nptl/tst-stack4
FAIL: nptl/tst-thrd-detach
FAIL: nptl/tst-thrd-sleep
FAIL: nptl/tst-thread-exit-clobber
FAIL: nptl/tst-thread_local1
FAIL: nptl/tst-tsd5
FAIL: nptl/tst-tss-basic
FAIL: nptl/tst-unwind-thread
UNSUPPORTED: nss/mtrace-tst-nss-gai-hv2-canonname
FAIL: nss/tst-cancel-getpwuid_r
UNSUPPORTED: nss/tst-initgroups1
UNSUPPORTED: nss/tst-initgroups2
UNSUPPORTED: nss/tst-nss-compat1
UNSUPPORTED: nss/tst-nss-db-endgrent
UNSUPPORTED: nss/tst-nss-db-endpwent
UNSUPPORTED: nss/tst-nss-files-hosts-long
UNSUPPORTED: nss/tst-nss-files-hosts-v4mapped
UNSUPPORTED: nss/tst-nss-gai-actions
UNSUPPORTED: nss/tst-nss-gai-hv2-canonname
UNSUPPORTED: nss/tst-nss-test3
UNSUPPORTED: nss/tst-reload1
UNSUPPORTED: nss/tst-reload2
UNSUPPORTED: posix/bug-ga2
UNSUPPORTED: posix/bug-ga2-mem
FAIL: posix/tst-getopt-cancel
UNSUPPORTED: posix/tst-spawn-cgroup
UNSUPPORTED: posix/tst-vfork3
UNSUPPORTED: posix/tst-vfork3-mem
UNSUPPORTED: resolv/mtrace-tst-leaks2
UNSUPPORTED: resolv/tst-leaks2
UNSUPPORTED: resolv/tst-resolv-ai_idn
UNSUPPORTED: resolv/tst-resolv-ai_idn-latin1
FAIL: rt/tst-cpuclock2
FAIL: rt/tst-mqueue8
FAIL: rt/tst-mqueue8x
FAIL: rt/tst-shm-cancel
UNSUPPORTED: stdio-common/tst-popen3
FAIL: stdlib/tst-quick_exit
UNSUPPORTED: stdlib/tst-secure-getenv
UNSUPPORTED: stdlib/tst-system
FAIL: stdlib/tst-thread-quick_exit
UNSUPPORTED: string/tst-strerror
UNSUPPORTED: string/tst-strsignal
UNSUPPORTED: time/tst-clock_settime
UNSUPPORTED: time/tst-settimeofday
		=== Summary of results ===
    167 FAIL
   4597 PASS
     64 UNSUPPORTED
     16 XFAIL
      2 XPASS
```

</details>

---

</details>

<details>
<summary>5 つの package で <code>test-fcntl</code> が落ちるという話:</summary>

具体的には,

- [8.12. M4-1.4.19](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/m4.html)
- [8.30. Sed-4.9](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/sed.html)
- [8.34. Grep-3.11](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/grep.html)
- [8.59. Diffutils-3.10](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/diffutils.html)
- [8.61. Findutils-4.9.0](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/findutils.html)

該当箇所の出力の例 (`{pid}` は PID, 長いインデントは切り詰めてる):

```
../build-aux/test-driver: line 109: {pid} Aborted (core dumped) "#@" > $log_file 2>&1
FAIL: test-fcntl
```

何で同じテストが落ちるって, それは多分, それぞれの package が同じテストを運用してるんじゃないかな…？

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/expect.html">8.16. Expect-5.45.4</a></strong> より, 懸念点:</summary>

configure 時に次のようなエラーで停止した.

```
checking build system type... tclconfig/config.guess: unable to guess system type
 
This script, last modified 2003-10-07, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
 
    ftp://ftp.gnu.org/pub/gnu/config/
```

ので, 指示に従って `tclconfig/config.{guess,sub}` を更新して再度 configure すると, 今度は上手く行った.
~~2003 年ってなんだよ, 古すぎるだろ…~~

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/binutils.html">8.19. Binutils-2.42</a></strong> より, 懸念点:</summary>

`make -k check` が終了コード 2 で異常終了している.[^wtf]

[^wtf]: これ (終了コードは異常終了だけど出力は正常終了), 実は他のテストでも同じ現象を観測してた覚えがあるけど, これと [8.75. Systemd-255](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/systemd.html) 以外メモってなかった…

```
make[1]: Target 'check-host' not remade because of errors.
make[1]: Leaving directory '/sources/binutils-2.42/build'
make: *** [Makefile:2568: do-check] Error 2
make: Target 'check' not remade because of errors.
```

うーんよくわかんない. だめそう. でもエラーも認められない. うーん？

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/gcc.html">8.28. GCC-13.2.0</a></strong> より, 懸念点:</summary>

案の定大量のテストが落ちるので, その記録をば.

<details><summary>内訳</summary>

```
LAST_UPDATED: Obtained from git: releases/gcc-13.2.0 revision c891d8dc23e1a46ad9f3e757d09e57b500d40044
 
Native configuration is aarch64-unknown-linux-gnu
 
		=== libatomic tests ===
 
 
Running target unix
 
		=== libatomic Summary ===
 
# of expected passes		54
		=== libgomp tests ===
 
 
Running target unix
 
		=== libgomp Summary ===
 
# of expected passes		5069
# of expected failures		32
# of unsupported tests		367
		=== libitm tests ===
 
 
Running target unix
 
		=== libitm Summary ===
 
# of expected passes		44
# of expected failures		3
# of unsupported tests		1
		=== libstdc++ tests ===
 
 
Running target unix
FAIL: 23_containers/vector/bool/allocator/copy.cc (test for excess errors)
 
		=== libstdc++ Summary ===
 
# of expected passes		15659
# of unexpected failures	1
# of expected failures		106
# of unsupported tests		392
		=== gcc tests ===
 
 
Running target unix
FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -O0  (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -O1  (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -O2  (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -O3 -g  (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -Os  (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  (test for excess errors)
FAIL: c-c++-common/hwasan/alloca-gets-different-tag.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  execution test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O1   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O2   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O3 -g   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -Os   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/use-after-free.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
 
		=== gcc Summary ===
 
# of expected passes		285699
# of unexpected failures	53
# of expected failures		2506
# of unsupported tests		3197
/sources/gcc-13.2.0/build/gcc/xgcc  version 13.2.0 (GCC)
 
		=== g++ tests ===
 
 
Running target unix
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array + 3, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array - 1, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 36) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array + 3, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array - 1, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 36) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O0  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O1  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O2  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O3 -g  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -Os  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  execution test
FAIL: g++.dg/contracts/contracts-tmpl-spec2.C   output pattern test
FAIL: c-c++-common/hwasan/alloca-gets-different-tag.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  execution test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O1   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O2   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -O3 -g   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c   -Os   scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/use-after-free.c   -O0  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O1  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O3 -g  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -Os  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  output pattern test
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi  (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++2b (test for excess errors)
 
		=== g++ Summary ===
 
# of expected passes		349643
# of unexpected failures	137
# of expected failures		3089
# of unsupported tests		10961
/sources/gcc-13.2.0/build/gcc/xg++  version 13.2.0 (GCC)
 
 
Compiler version: 13.2.0 (GCC)
Platform: aarch64-unknown-linux-gnu
configure flags: --prefix=/usr LD=ld --enable-languages=c,c++ --enable-default-pie --enable-default-ssp --disable-multilib --disable-bootstrap --disable-fixincludes --with-system-zlib
```

</details>

これに加えて, `/usr/lib/*gdb.py` じゃなくて `/usr/lib64/*gdb.py` だったことも付記.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/gettext.html">8.32. Gettext-0.22.4</a></strong> より, 懸念点:</summary>

いっぱいおちた. ヤバいかも.

実際の出力では垂れ流しだけど,  ここでは `PASS: ` の行はフィルタしたものを載せておく.

<details><summary>内訳</summary>

```
FAIL: msgmerge-1
FAIL: msgmerge-2
FAIL: msgmerge-3
FAIL: msgmerge-4
FAIL: msgmerge-7
FAIL: msgmerge-6
FAIL: msgmerge-5
FAIL: msgmerge-8
FAIL: msgmerge-9
FAIL: msgmerge-10
FAIL: msgmerge-11
FAIL: msgmerge-12
FAIL: msgmerge-13
FAIL: msgmerge-17
FAIL: msgmerge-14
FAIL: msgmerge-15
FAIL: msgmerge-16
FAIL: msgmerge-20
FAIL: msgmerge-18
FAIL: msgmerge-19
FAIL: msgmerge-21
FAIL: msgmerge-22
FAIL: msgmerge-23
FAIL: msgmerge-25
FAIL: msgmerge-26
FAIL: msgmerge-27
FAIL: msgmerge-24
FAIL: msgmerge-28
FAIL: msgmerge-compendium-1
FAIL: msgmerge-29
FAIL: msgmerge-compendium-2
FAIL: msgmerge-compendium-5
FAIL: msgmerge-compendium-3
FAIL: msgmerge-compendium-4
FAIL: msgmerge-properties-1
FAIL: msgmerge-properties-2
FAIL: msgmerge-update-1
FAIL: msgmerge-update-2
FAIL: msgmerge-update-3
FAIL: msgmerge-update-4
SKIP: msgunfmt-csharp-1
SKIP: msgunfmt-java-1
FAIL: msgmerge-compendium-6
SKIP: xgettext-16
SKIP: xgettext-ruby-1
SKIP: format-ruby-1
FAIL: plural-1
SKIP: lang-objc
FAIL: lang-python-1
FAIL: lang-python-2
FAIL: lang-c
SKIP: lang-java
SKIP: lang-csharp
FAIL: lang-guile
FAIL: lang-javascript
FAIL: lang-clisp
FAIL: lang-elisp
FAIL: lang-sh
FAIL: lang-librep
FAIL: lang-bash
FAIL: lang-lua
FAIL: lang-gawk
SKIP: lang-pascal
FAIL: lang-c++
SKIP: lang-vala
FAIL: lang-smalltalk
FAIL: lang-tcl
FAIL: lang-perl-2
FAIL: lang-perl-1
FAIL: lang-php
SKIP: autopoint-1
FAIL: lang-ycp
SKIP: autopoint-2
SKIP: autopoint-3
FAIL: lang-c++20
============================================================================
Testsuite summary for gettext-tools 0.22.4
============================================================================
# TOTAL: 552
# PASS:  477
# SKIP:  13
# XFAIL: 0
# FAIL:  62
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to bug-gettext@gnu.org
============================================================================
```

</details>

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/bash.html">8.35. Bash-5.2.21</a></strong> より, 懸念点:</summary>

なんかちょっと diff が出てたけど,

- あるべき行が違う
- `/dev/fd` が `0` じゃなくて `1000`

だけなので, 多分無視して大丈夫そう.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/libtool.html">8.36. Libtool-2.4.7</a></strong> より, 懸念点:</summary>

失敗したテスト一覧 (expected 5, found **7**):

```
 66: Link order test                                 FAILED (link-order.at:106)
122: compiling softlinked libltdl                    FAILED (standalone.at:36)
124: installable libltdl                             FAILED (standalone.at:68)
123: compiling copied libltdl                        FAILED (standalone.at:51)
125: linking libltdl without autotools               FAILED (standalone.at:84)
129: linking libltdl without autotools               FAILED (subproject.at:114)
169: Run tests with low max_cmd_len                  FAILED (cmdline_wrap.at:48)
```

何が期待されるエラーなのかわからぬ…
でも, 5 + **2** のテストが落ちるという話もあるので, もしかしたら期待されるものかもしれない.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/automake.html">8.46. Automake-1.16.5</a></strong> より, 懸念点:</summary>

> テスト t/subobj.sh は失敗します。 

失敗しなかった. というか無い.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/openssl.html">8.47. OpenSSL-3.2.1</a></strong> より, 懸念点:</summary>

> 30-test_afalg.t というテストが 1 つだけ失敗します。

失敗しなかった. 多分カーネルの機能が有効化されてるんでしょう.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/Python.html">8.51. Python-3.12.2</a></strong> より, 懸念点:</summary>

そのままビルドを始めると最終的に `libffi.so.8` の捜査に失敗し, module `_ctypes` のビルドに失敗する. 原因は恐らく, これが `/usr/lib` ではなく `/usr/lib64` に配置されているからだろう. 探索パスに居るはずでは…？

これのせいで pip3 が使えなくてこの後困ります (事後談). ので, 以下を実行してから改めて `make` すると `_ctypes` のビルドに成功しました. なんなら pip3 もしれっと生成されました. 一件落着.

```sh
ln -sv ../lib64/libffi.so.8 /usr/lib/libffi.so.8
```

---

</details>


<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/coreutils.html">8.57. Coreutils-9.4</a></strong> より, 懸念点:</summary>

`tests/chown/separator.sh` が ERROR で落ちてる. それだけ.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/vim.html">8.72. Vim-9.1.0041</a></strong> より, 懸念点:</summary>

テストの出力を見てもよく判らなかった. でも, なんか落ちてる雰囲気は無かった.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/systemd.html">8.75. Systemd-255</a></strong> より, 懸念点:</summary>

この後にある [8.78. Procps-ng-4.0.4](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/procps-ng.html) でこの章の成果物である libsystemd を必要としますが, その時に見つけてくれない. configure 時にまず見つけてくれない. 困った.

で最終的にしたこと:

```sh
ln -sv ../../lib64/pkgconf/libsystemd.pc /usr/lib/pkgconf/libsystemd.pc
ln -sv   ../lib64/libsystemd.so.0        /usr/lib/libsystemd.so.0
```

pkgconf が `/usr/lib64/pkgconf` を読んでなかったので, これを `/usr/lib/pkgconf` にリンクし, configure が見つけられるようにしました. ビルドは無事終了しますが, テスト実行時に明らかに "見つからない" 旨の出力が見られます. なので, 共有オブジェクトも同様に `/usr/lib64` を `/usr/lib` にリンクします. そうすると動きます. 一件落着.

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/util-linux.html">8.79. Util-linux-2.39.3</a></strong> より, 懸念点:</summary>

テストがおちた.

```
---------------------------------------------------------------------
  6 tests of 261 FAILED

      fadvise/drop
      findmnt/outputs
      findmnt/target
      findmnt/filter
      fincore/count
      lsblk/lsblk
---------------------------------------------------------------------
```

---

</details>

<details>
<summary><strong><a href="https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/e2fsprogs.html">8.80. E2fsprogs-1.47.0</a></strong> より, 懸念点:</summary>

テストが落ちた.

```
373 tests succeeded     2 tests failed
Tests failed: m_assume_storage_prezeroed m_rootdir_acl
```

---

</details>

# 起動準備 (LFS)

[**8.82. ストリップ**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter08/stripping.html) より, 備考:

やりたかったけど, リスクを考慮して取り敢えずやらないでおく.

---

[**9.2. 全般的なネットワークの設定**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter09/network.html) より, 備考:

hostname は `lfs-asahi`

---

[**10.3. Linux-6.7.4**](https://lfsbookja.github.io/lfsbookja-doc/12.1-sysdja/chapter10/kernel.html) より, 備考:

これ以降は読むに留めている. 何故なら, BLFS の範疇を含まないと起動すら出来ないため.

# 起動準備 (BLFS)

ここからはアドリブです.
以下は BLFS の範疇として行った作業内容など.

## btrfs への対応

btrfs を使うために色々導入 (だって root partition が btrfs ですからね).
udev が必要なのに使えないと騒がれたので処置:

```sh
ln -sv ../../lib64/pkgconfig/libudev.pc /usr/lib/pkgconfig/libudev.pc
ln -sv    ../lib64/libudev.so.1         /usr/lib/libudev.so.1
```

そこから BLFS の手順に少し従う:

- [btrfs-progs-6.7.1](https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/btrfs-progs.html)
  - [LZO-2.10](https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/lzo.html)

テストを一切せずインストール. 面倒だったので…

## EFI 周辺

以下は勢いとノリで導入したけど結局使わなかったソフト達:

- [efivar-39](https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/efivar.html)
- ~~[efibootmgr-18](https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/efibootmgr.html)~~
  - [popt-1.19](https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/popt.html)

なんなら efibootmgr は導入しようとして面倒になってやめた. 確か Asahi が EFI variables の編集に対応していないから導入しても意味がないとかそういう動機じゃなかったかな (うろ覚え) (誤解を招く表現).

## GRUB の導入

- [GRUB-2.12 for EFI](https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/grub-efi.html)
  - [FreeType-2.13.2](https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/freetype2.html)

configure 時は当然 `--target=aarch64` を指定.[^hoge]

[^hoge]: 多分, arm64 が正しいのだと思いますが, arm64 と読み替えられているはず

次に [Using GRUB to Set Up the Boot Process with UEFI](https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/grub-setup.html) を参考に設定を進める. ただ, 本当にそのまま手順を追ってもどうしようもないので, まず Asahi の docs を熟読するところから開始. また, この後使うので ~~NixOS の残滓の残っている~~ EFI partition を `/boot/efi` に mount しておきます.

https://github.com/AsahiLinux/docs

でやることが定まったのでまず GRUB の導入から.

```sh
grub-install --target=arm64-efi --removable --boot-directory=/boot --efi-directory=/boot/efi
```

あと `/etc/fstab` を BLFS に従って書き加える. 全文を以下に載せます.

```/etc/fstab
# Begin /etc/fstab

# file-system   mount-point     type    options                                 dump    fsck-order
/dev/nvme0n1p5  /               btrfs   defaults                                1       0
/dev/nvme0n1p4  /boot/efi       vfat    codepage=437,iocharset=iso8859-1        0       1

# End /etc/fstab
```

# 起動準備 (Asahi Linux)

Asahi のターン (LFS, BLFS の手順も含んでいます).

## カーネル周り

まず linux-asahi に入って, `.config` をココから取ってきます.

https://github.com/AsahiLinux/docs/wiki/Reference-Asahi-kernel-config

あとは流れで…

```sh
vim .config          # ここでいい感じにコピペする
make oldconfig       # 一応やっとく
make                 # 時間がかかる
make modules_install # よくわかんないけどやる
```

次に `/etc/modprobe.d/usb.conf` を書きます. 意味はあるのか？

```:/etc/modprobe.d/usb.conf
# Begin /etc/modprobe.d/usb.conf

install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true

# End /etc/modprobe.d/usb.conf
```

次にカーネルの配置をする. ちょっと記述違う[^hhh] けど動くやろ！ｗ

[^hhh]: コピー元は `bzImage` って書いてあるけど, そんなの無えよ！と思った次第

```sh
cp -iv arch/arm64/boot/Image /boot/vmlinuz-6.6-15-asahi
```

カーネルも配置したことだし, GRUB の設定を生成してなかったのでする. LFS や BLFS では生成せず直で書いてるけど, 面倒なので慣れた `grub-mkconfig` を使う.

```sh
grub-mkconfig -o /boot/grub/grub.cfg
```

これもよくわかんないけどやる.

```sh
mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
```

## m1n1 + U-Boot 周り

次に m1n1 と U-Boot を build します.

https://github.com/AsahiLinux/m1n1/releases/tag/v1.4.11

```sh
make ARCH= RELEASE=1
```

https://github.com/AsahiLinux/u-boot/releases/tag/asahi-v2023.07.02-4

```sh
make apple_m1_defconfig
make
```

次に dtb (Device Tree Blob) が必要なのだが, ここで間違えて dtc を導入したので一応畳んでおく. カーネルビルド時に生成されてますよ, それ.

<details><summary>間違えて dtc を導入した詳細</summary>

執筆時最新の v1.7.0 を取ってくる. [ここ](https://git.kernel.org/pub/scm/utils/dtc/dtc.git/?h=v1.7.0)から.

```sh
make NO_PYTHON=1
make install PREFIX=/usr
```

使いたいならこれで使えるはず.

---

</details>

いよいよ m1n1 stage 2 のバイナリを作成する. `/sources/asahi-boot` を作ってここで作業する. そしてここに必要なファイルを集めてくる. 参考は m1n1:User Guide[^u-boot-what].

[^u-boot-what]: [U-Boot](https://github.com/AsahiLinux/docs/wiki/U-Boot) の項でも同様の内容が触れられているのだけれど, なんかよく分かんなかったので User Guide を優先した. User Guide ですし？

https://github.com/AsahiLinux/docs/wiki/m1n1:User-Guide 

- `{linux-asahi}/arch/arm64/boot/dts/apple/*.dtb -> dtbs/*.dtb`
- `{u-boot}/u-boot-nodtb.bin -> u-boot-nodtb.bin`
- `{m1n1}/build/m1n1.bin -> m1n1.bin`

集めたら次を実行する.

```sh
cat m1n1.bin dtbs/*.dtb <(gzip -c u-boot-nodtb.bin) >m1n1-uboot.bin
```

これを `/boot/efi/m1n1/boot.bin` に配置する. 既にあるやつ (~~NixOS の残骸~~) は `.old` として保存しておく.

```sh
mv -v /boot/efi/m1n1/boot.bin{,.old}
mv -v m1n1-uboot.bin /boot/efi/m1n1/boot.bin
```

---

これで起動する筈なのだが, 一応思考を巡らせておこう. **ここで言っていることが分からない人は wiki を読んでね！** (それでも違うなって思った場合はご教授頂きたい)

まず ~~NixOS の導入時に~~ m1n1 + U-Boot + ESP の構成を導入しているので, fuOS として m1n1 stage 1 が導入され, EFI partition との紐付けが済んでいるはずである. ここは私の知るところではないのでちょっと怖い.

次に EFI partition に先程 m1n1 stage 2 を配置した. これが正常に生成されていれば, m1n1 stage 1 から chainload されて, 多分 `{efi}/EFI/BOOTAA64.EFI` を読みに行くだろう. これは, GRUB の導入時に配置されていた筈だ.

そしたら, *なんか気合で* `{root}/grub/grub.cfg` を読みに行って, GRUB が起動する. そうしたら, エントリから `{root}/vmlinuz-6.6-15-asahi` を読んで Linux が起動！後は流れで…

ヨシ！起動するだろう. 再起動！

# 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623040/ead5097f-3f03-a410-66fb-014c6c9152f1.png)

起動した！ (無邪気)

# あとがき

既知の distribution って偉大なんだなあって思いました. いやそんなの分かるが？と思ったそこのあなた, **LFS をやりなさい**. いいですね？

あと詳しい仕組みは解りませんが, Asahi の m1n1 + U-Boot は**導入自体は**そんな複雑怪奇なものじゃないなあと思いました. 文鎮化も現にしていないわけなので, 現状安全と言えるでしょう. 偉大なる marcan 他 contributers には頭が上がりません. ~~ところで私は Touch ID のドライバを心待ちにしていますが, しかし周辺情報を漁れば漁るほど, 対応への道のりは遠く他にするべきことがありそうだなあなどと…~~

ちなみに詳しく挙動を調べていませんが, これ起動時に私が Gentoo を導入したときと同様のエラーがカーネルから出ていました. ちなみに Gentoo を入れた時は無線モジュールやら GPU ドライバやらは動いていませんでした. つまりこの LFS も同じということです. ~~ALARM はまだまともに動いていましたよ？~~ このトラブルが起こった事が LFS をやる, Linux への理解を深めたいなーなどという動機できっかけでもありますが, 現状 Gentoo のせいではないことが判りました (そりゃそうだろ！).

みんなもやろう！ Linux From Scratch
みんなもやろう！ Asahi Linux

happy hacking ;)

---

~~もっと Asahi との馴れ初めみたいな記事を書き溜めしてた筈なのに, 何でこんなニッチな記事が先に出るのでしょうか. あーあ.~~

ちなみに作業時間は丸一日と少しくらいでした. ドキュメント読んだりと多少の時間は費やしましたが基本的にはそんな感じです. ~~そしてこの記事を書くのには幾日掛けました. 執筆時間はたかが知れていますが。。~~