Text
Page: 1
Debian Installerが
ミラー選択で
刺さる問題をどうにかする
Debian installerとnetcfgとIPv6の話
Kentaro Hayashi
ClearCode Inc.
2025年3月 東京エリア・関西合同Debian勉強会
Page: 2
スライドは
Rabbit Slide Showにて公開済み
Debian Installerがミラー選択で刺さる問題を解決する
https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-d-i-netcfg-202503
Page: 3
本日の内容
問題に気づいたきっかけ
Debian Installerの問題の切り分け
どう回避するのか
修正するにはどうするか
Page: 4
本日の内容
問題に気づいたきっかけ
Debian Installerの問題の切り分け
どう回避するのか
修正するにはどうするか
Page: 5
問題に気づいたきっかけ(1)
mozc: New upstream release available: 2.30.5544.102
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1085173#40
😭
Mozcが2.28.4715.102+dfsg-2.3から2年くらい更新できてなかった問題
2024年11月 Debian勉強会「より新しい Mozc を Debian でも使いたい」
https://tokyodebian-team.pages.debian.net/2024-11.html
Page: 6
問題に気づいたきっかけ(2)
Mozc 2.29.5160.102+dfsg-1になんやかんやあって更新した
🎉
各種デスクトップ環境で問題ないか確認するのにインストールが必要
Page: 7
実際にどのようなことが起きるか
Weekly ISOイメージでGraphical Install
ベースシステムインストール後、Debianアーカイブミラーとして
deb.debian.orgを選択
😱
「ミラーを検査しています…」の画面から進まない
Page: 8
ミラー選択で刺さったときの
スクリーンショット
Page: 9
本日の内容
問題に気づいたきっかけ
Debian Installerの問題の切り分け
どう回避するのか
修正するにはどうするか
Page: 10
Debian Installerの問題の切り分け
Debian Installer(d-i)の内部では何が発生しているのか?
Ctrl+Alt+F2でコンソールに切り替え
pingが通るか確認してみる
Page: 11
ネットワークの疎通状況の
スクリーンショット
Page: 12
ネットワークの疎通状況
ping -4 deb.debian.org
✅ IPv4では疎通できる
ping -6 deb.debian.org
❌ IPv6では疎通できない
wget http://deb.debian.org (–connection-timeoutあり)
IPv6を優先して、IPv4へとフォールバックする挙動
Page: 13
d-iを構成する関連コンポーネント
https://salsa.debian.org/installer-team/
netcfg
ネットワークの設定
choose-mirror
ミラーの選択をユーザーにさせる
Page: 14
choose-mirrorの内部実装の前提
https://salsa.debian.org/installer-team/choose-mirror/-/blob/master/
choose-mirror.c?ref_type=heads#L274-295/
前提条件: choose-mirrorではwgetを使って選択したミラーからファイルを取
得し検証を実施する
Page: 15
wgetのオプションを制御する
コードの抜粋
char *get_wget_options(void) {
char *options;
if (wget_is_gnu()) {
options = strdup("--no-verbose");
if (strcasecmp(protocol, "https") == 0) {
debconf_get(debconf, "debian-installer/allow_unauthenticated_ssl");
if (strcmp(debconf->value, "true") == 0)
options = append(options, " --no-check-certificate");
}
} else {
if (strcasecmp(protocol, "https") == 0)
/* We shouldn't normally get here, but let's make it
* easier to debug in case somebody has hit us over
* the head with preseeding.
*/
fputs("busybox wget does not support https\n", stderr);
options = strdup("-q");
}
}
return options;
Page: 16
wgetのオプションを制御する
get_wget_options()の問題
get_wget_options()ではタイムアウトオプションを指定していない
ネットワークの問題はない前提
疎通できない場合、ただひたすら待つ
wgetはIPv6から優先的に接続を試みる
💀
IPv6で疎通できない場合、ただひたすら待つ
Page: 17
本日の内容
問題に気づいたきっかけ
Debian Installerの問題の切り分け
どう回避するのか
修正するにはどうするか
Page: 18
どう回避するのか
choose-mirrorでできること
wget –prefer-family=IPv4を指定したらIPv4を優先できる
wget –connect-timeoutでタイムアウトしたらフォールバックさせる
いずれも根本解決ではない
Page: 19
既知の問題だったりしないか?
https://www.virtualbox.org/ticket/22153
Bridge mode with WiFi interface: IPv6 does not work via router
VirtualBoxでブリッジ接続した場合に疎通できない問題がある
Page: 20
ひとまずの回避策
❌VirtualBox + ブリッジ接続(WiFi)
✅VirtualBox + NAT接続(WiFi)
Page: 21
VirtualBox + ブリッジ接続環境での
回避策
https://www.virtualbox.org/ticket/22153
Bridge mode with WiFi interface: IPv6 does not work via router
VirtualBoxでブリッジ接続した場合に疎通できない問題がある
ルーターのグローバルアドレスへpingする
Page: 22
回避策に関するデモ
インストーラーを起動し回避策(ping)を試す
d-i のmasterからビルドしたmini.iso (netboot-gtk)
Page: 23
本日の内容
問題に気づいたきっかけ
Debian Installerの問題の切り分け
どう回避するのか
修正するにはどうするか
Page: 24
修正するにはどうするか
choose-mirrorで頑張るのは筋が悪い
netcfgで次のような対策をとる
グローバルアドレスを頑張って取得して、pingする
ip -6 routeやip -6 neighの結果を抽出して対処
🤔
複数のネットワークアダプタ有効にされていたりすると面倒
Page: 25
修正版に関するデモ
インストーラーを起動し修正版(ping)を試す
d-i のmasterからビルドしたmini.iso (netboot-gtk)
Page: 26
さいごに
有線LANでのインストールが安定
WiFi環境でDebianインストールは
VirtualBox + ブリッジ接続は問題あり
VirtualBox + NAT接続が(現状)推奨
or IPv4のみのミラー(ftp.jp.debian.org)を選択するとよい