しばらくやっていなかった自己紹介
●
SHIMADA Hirofumi
●
オンラインでは、最近はMastodon中心に出没
●
東海道らぐ 名古屋案内人
– 各地の開催の手伝いとかスケジュール調整とか
– 若い人をめっちゃ勧誘したりとか
●
おーぷんここん開発者 opencocon.org
– IRC代わりのMastodon : inari.opencocon.org
●
OSC名古屋 現地担当のような何か
– 最近OSC名古屋を担う人が誰もいないので...
しばらくやっていなかった自己紹介
●
SHIMADA Hirofumi
●
オンラインでは、最近はMastodon中心に出没
●
東海道らぐ 名古屋案内人
– 各地の開催の手伝いとかスケジュール調整とか
– 若い人をめっちゃ勧誘したりとか
●
おーぷんここん開発者 opencocon.org
– IRC代わりのMastodon : inari.opencocon.org
●
OSC名古屋 現地担当のような何か
– 最近OSC名古屋を担う人が誰もいないので...
超久々に
ここんの話
喋るよ!
Yoctoで綺麗な
kernel configを作る
SHIMADA Hirofumi,
@shimada@inari.opencocon.org
@shmada@mstdn.maud.io
最近私を知った人が
知らなさそうなこと
●
Linuxディストリ作っています
– 制作開始から、まもなく10年になります
●
OSC初出展がちょうど2008年なので
– 休み休み作っている感じのペースですが...
●
古いマシンを活用するという分野において、OSCの
中ではNetBSDと自作OS勢の次くらいに古参です
●
実演用旧型PCをめっちゃ持っています
– 普段出していないだけで...
改めて:opencoconとは
旧型PCを
シンクライアント
として
再利用する
Linuxディストリビューション
色々なプロトコルで繋がる
opencocon
●
シンクライアント:X, VNC, RDP, SPICE, x2go
●
Webブラウザ
●
VPNクライアント:SSH (Port Forwarding),
SoftEther ほか
●
起動時のメニュー画面から簡単接続
– シンクライアント特化型ディストリビューション
●
x86 PC, Raspberry Pi 版
なぜシンクライアントか?
●
通常、古い世代のLinux活用といえば軽量Linuxディストリ、しか
しそれでも辛いケースがある
– 特にWebブラウザは昨今大変きついものがある
●
シンクライアントであれば、クライアント側のマシン負荷は大幅
に軽く、遅いマシンでも割といける
– ただしホストマシンとネットワーク、
サーバ(VNC, x2go等)が必須になる
– 動画や3Dはしんどい事が多い
– ときに音声も怪しいことがある
●
これにより、古い世代のマシンを動態保存ではなく、現用機とし
て使うことが可能になる
必要スペック
Live CD Install to
harddisk
※ by hand;
currentry no installer
CPU i486 or later
Memory 64 MB 32 MB
Disk space Not needed 400MB
おーぷんここんは
古くて珍しいマシン大好き
特徴のある古いマシン向けに..
●
PC/AT互換機は星の数ほどあり、把握が困難
●
実際作ってると、通常のビジネス/ホーム用PCではなく、
過去に出ていた”とがった”PCで opencocon を使っている人
が目立つことが判明した
– Libretto(東芝), LOOX(富士通), MURAMASA(シャープ),
KOHJINSHA, など
●
なので、こういったマシン向けのチューニングを主に行っている
– 他ディストリでの動作が困難/不可能な世代のマシンを手広くカバー
している
– もちろん、一般的なビジネスPCでも動くはず
近状:opencocon v10a
●
去年のOSC名古屋?合わせでリリースした
●
x2go対応を新規搭載
– しかしメニュー周りが未完成
– Qt5:15年以上マシンの古いマシンでは少々しんどいかもしれない
●
ブラウザをFirefoxに変更
– libc変更に伴い、WebKit系が軒並み駄目になったので...
●
その後KRACK対策リリースを出したのみ
●
歴代のバージョンに比べ、それほど出来がよくない
– グラフィックドライバ対応がいくつか v9 に比べおかしくなっている事が
ある
opencoconの
コードリファクタリング
●
プロジェクト開始から時間が経ち、そろそろ過去の遺
物とか、メンテのしんどい謎コードが増えてきた
●
なので、以下の清掃を v10 より始めている
– Init.d まわりのスクリプト ← v10 で完了
– Initrd のスタートアップ・CD検出まわりのスクリプト
– Linux kernelのdefconfig
– Live CD作成時のISO作成まわり
– OpenEmbedded/Yoctoのビルドスクリプト ← v11で実施
opencoconの
コードリファクタリング
●
プロジェクト開始から時間が経ち、そろそろ過去の遺
物とか、メンテのしんどい謎コードが増えてきた
●
なので、以下の清掃を v10 より始めている
– Init.d まわりのスクリプト ← v10 で完了
– Initrd のスタートアップ・CD検出まわりのスクリプト
– Linux kernelのdefconfig
– Live CD作成時のISO作成まわり
– OpenEmbedded/Yoctoのビルドスクリプト ← v11で実施
Linux kernelのconfig
●
Linux kernel に含める機能やパラメータをcompile
前に選択できる機構
●
各種ドライバや機能(ファイルシステム)等のオンオフ
ができる
●
昔はここがチューニングポイントであったため、い
じっている人が多かったものの、最近はdefconfig
(標準のconfig)のままでもうまく動くことが多い
ここんの持っている秘伝のタレ:
defconfig
●
古いマシンやハードウェアにサポートを向けるため、defconfigか
ら多くの部分をいじっている
https://github.com/dejiko/meta-coconport/blob/master/cocon486/recipes-kernel/linux/linux
/defconfig
●
これを、旧プロジェクトを立ち上げた大昔 (2.6.x) から継ぎ足し・
バージョンアップしながら、独自のdefconfigをメンテし続けていた
●
しかし近年は、自分でも訳がわからなってきた
●
加えて、x86以外のプラットフォームも台頭してきたため、これらと
同期する必要があるなど、厄介な事情が増えてきた
– 例:USBデバイスをひとつ有効にするために、複数のdefconfigを調査・
編集して、それぞれ正しく当たったかテストする必要がある。
– そのたび3700行のconfigを追うのは辛い。
defconfigをバラバラにしたい
●
少なくとも cocon486 ( opencocon x86※ 版のマシン名)
固有の部分と、それ以外を分割したい
●
Shell scriptとかである程度はできなくもない
●
しかし、レイヤ構造を持っている
OpenEmbedded/Yocto でこれがうまくいくのかと
いうのは前々から疑問があったため、進んでいな
かった
– 何か良い仕組みがあれば、それに乗りたい。
Yocto : SCC ファイル
●
kernelのdefconfigをレイヤごとにappendできる仕組み
●
“scc stands for Series Configuration Control, but the
naming has less significance in the current
implementation of the tooling than it had in the past.
Consider scc files to be description files. “
https://www.yoctoproject.org/docs/1.6.1/kernel-dev/kerne
l-dev.html#ftn.idm1901712
●
●
●
WindRiverによる簡単な説明
https://knowledge.windriver.com/en-us/000_Products/
000/010/060/000/030/000_Wind_River_Linux_Kernel_Dev
elopment%2C_LTS/010/050
●
.scc ファイル
●
scc ファイルには、
– includeで他のsccファイルを参照することができる
– kernel の (def)config に追記することができる
– kernel に patch を当てる指定をいれることができる
●
OpenEmbedded/Yoctoのレイヤ構造と親和性があ
る
– つまり、優先度の順に各レイヤの同じ名前のrecipeにあ
る、sccファイルが順に読み込まれる
kernel の (def)config に追記
●
直接sccファイルに書くのではなく、defconfigからの
変更点を .cfg ファイルに書いて、sccから指定する
●
こう書く
kconf hardware zynqmp.cfg
kconf non-hardware thinclient.cfg
kernelにpatchを当てる
●
こう書く
patch 2961-amd-xgbe-Add-hardware-features-debug-output.patch
patch 2962-amd-xgbe-Add-per-queue-Tx-and-Rx-statistics.patch
patch 2963-amd-xgbe-Convert-to-using-the-new-link-mode.patch
patch 2964-net-ethtool-Add-macro-to-clear-a-link-mode.patch
Recipe(.bb)でsccを見るようにする(1)
●
Linux_4.14.25.bb
SECTION = "kernel"
DESCRIPTION = "Mainline Linux kernel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
KBRANCH ?= "master"
require recipes-kernel/linux/linux-yocto.inc
SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/v4.x/linux-${PV}.tar.xz;name=kernel 
file://thinclient-usb-device.cfg"
S = "${WORKDIR}/linux-${PV}"
SRC_URI[kernel.md5sum] = "c55f9b201ed60b03ee879efd263d01dd"
SRC_URI[kernel.sha256sum] =
"6dcfbf79c068e51c1b06edb1ce58ddc9ca351f862bf2a144e96106ec3f21e587"
Recipe(.bb)でsccを見るようにする(2)
●
cocon486/recipes-kernel/linux/linux_4.14.%.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
KMACHINE_cocon486 ?= "cocon486"
COMPATIBLE_MACHINE_cocon486 = "cocon486"
KCONFIG_MODE ?= "alldefconfig"
KBUILD_DEFCONFIG_cocon486 = "i386_defconfig"
SRC_URI_append_cocon486 += " 
file://cocon486-standard.scc 
"
これまで
例えば、とある USBデバイスのサポート追加したい! 
→ CONFIG_*******_****** の行を
cocon486 の defconfig
coconx64 の defconfig
ac100 の defconfig
... の defconfig
に追記する
sccを使うと
●
1個所の .cfg に追記するだけで、
●
そのレイヤを使うkernel全てにbuild時反映される

More Related Content

PPTX
YoctoをつかったDistroの作り方とハマり方
PDF
ELFの動的リンク
PDF
ゼロからはじめるKVM超入門
PDF
containerdの概要と最近の機能
PDF
レシピの作り方入門
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PPTX
Yocto bspを作ってみた
PDF
DockerとPodmanの比較
YoctoをつかったDistroの作り方とハマり方
ELFの動的リンク
ゼロからはじめるKVM超入門
containerdの概要と最近の機能
レシピの作り方入門
ネットワーク ゲームにおけるTCPとUDPの使い分け
Yocto bspを作ってみた
DockerとPodmanの比較

What's hot (20)

PPTX
Dockerからcontainerdへの移行
PDF
例外設計における大罪
PPTX
トランザクションの設計と進化
PPTX
BuildKitによる高速でセキュアなイメージビルド
PPT
Glibc malloc internal
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
TLS, HTTP/2演習
PDF
ARM Trusted FirmwareのBL31を単体で使う!
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
PDF
中3女子でもわかる constexpr
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
PPTX
コンテナネットワーキング(CNI)最前線
PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
PDF
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
PDF
プログラムを高速化する話
PDF
initramfsについて
PPT
Javaバイトコード入門
Dockerからcontainerdへの移行
例外設計における大罪
トランザクションの設計と進化
BuildKitによる高速でセキュアなイメージビルド
Glibc malloc internal
ARM CPUにおけるSIMDを用いた高速計算入門
TLS, HTTP/2演習
ARM Trusted FirmwareのBL31を単体で使う!
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
中3女子でもわかる constexpr
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
【Unite Tokyo 2019】Understanding C# Struct All Things
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
コンテナネットワーキング(CNI)最前線
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
プログラムを高速化する話
initramfsについて
Javaバイトコード入門
Ad

More from shimadah (20)

PDF
OSC名古屋 企画検討会資料 : 配布したプリントの一部
PDF
OSC名古屋 企画検討会資料
PDF
今時のopencoconでシリアルマウスを使う
PDF
Compaq Contura Aero で NetBSD を動かす
PDF
New generation Linux distributions that companion with Geeko : opencocon and...
PDF
革命は突然に
PDF
おーぷんここんセルフCDライター
PDF
ようこそ東海道らぐへ (2016年版)
PDF
AllwinnerタブレットのOSを作ってみる(中編)
PDF
TUI作業で便利なソフト2題
PDF
AllwinnerタブレットのOSを作ってみる (途中版)
PDF
魁ここんとーく in おおさか
PDF
いまどきのLinuxインストールバトル(新型PC編) OSC2015 Nagoya LT
PDF
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
PDF
謎PCとの付き合い方(LILO東海道 2015/5発表分)
PDF
今時のチープなノートPC HP Stream 11でXubuntuを動かす
PDF
東海道らぐへのお誘い 2015年版
PDF
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
ODP
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ODP
32bit UEFIマシンで遊ぶ
OSC名古屋 企画検討会資料 : 配布したプリントの一部
OSC名古屋 企画検討会資料
今時のopencoconでシリアルマウスを使う
Compaq Contura Aero で NetBSD を動かす
New generation Linux distributions that companion with Geeko : opencocon and...
革命は突然に
おーぷんここんセルフCDライター
ようこそ東海道らぐへ (2016年版)
AllwinnerタブレットのOSを作ってみる(中編)
TUI作業で便利なソフト2題
AllwinnerタブレットのOSを作ってみる (途中版)
魁ここんとーく in おおさか
いまどきのLinuxインストールバトル(新型PC編) OSC2015 Nagoya LT
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
謎PCとの付き合い方(LILO東海道 2015/5発表分)
今時のチープなノートPC HP Stream 11でXubuntuを動かす
東海道らぐへのお誘い 2015年版
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
32bit UEFIマシンで遊ぶ
Ad

Yoctoで綺麗なkernel configを作る