Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Getting Your Customized openSUSE Kernel on OBS
Search
shunghsiyu
November 02, 2024
Technology
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Getting Your Customized openSUSE Kernel on OBS
Presented at openSUSE.Asia Summit 2024
shunghsiyu
November 02, 2024
More Decks by shunghsiyu
See All by shunghsiyu
eBPF 簡介 2026 版
shunghsiyu
0
110
bpftrace: a swiss army knife tracing tool — SUSE Labs Conference 2026
shunghsiyu
0
49
BPF in Stable Kernels, an Update
shunghsiyu
0
65
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
760
管你要 trace 什麼 bpftrace 用下去就對了 (KaLUG場)
shunghsiyu
0
77
What is an ABI, and Why Should You Care?
shunghsiyu
0
52
Making Sense of Tristate Numbers (tnum)
shunghsiyu
0
43
BPF in Stable Kernels
shunghsiyu
0
190
Peeking into the BPF verifier
shunghsiyu
0
99
Other Decks in Technology
See All in Technology
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
210
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
710
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
140
Snowflake でできることが増えたら、 ABAC が必要になった
kaeton
0
130
Lint の層を組み直した話
bengo4com
1
270
GitHub、使う?使わない?
happysamurai294
0
130
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
390
ドメインエキスパートは いかにして AI を使って プロダクト開発をするか
tatsuyashiraishi
1
250
AIコーディングエージェント開発_全体像
happysamurai294
0
140
アクセラレーターで実現するServiceNow活用の高速化 / ServiceNow World Forum 2026
visional_engineering_and_design
0
110
複雑な業務システムを高速でつくるため、チーム全員をつくれる人へ
ayakurabuchi
0
110
20261031_IoTLT_vol140_kitazaki_v1.pdf
kitazaki
0
140
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
340
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
510
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
480
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
Transcript
How to Maintaining a Linux Kernel Package on openSUSE's Open
Build Service Getting Your Customized openSUSE Kernel on OBS Shung-Hsi Yu, SUSE @shunghsiyu @
[email protected]
About me Shung-Hsi Yu SUSE Based in Taitung, Taiwan Kernel
Engineer BPF Subsystem openSUSE SUSE Enterprise Linux
Agenda - Backgrounds - Problems & Rational - How to
Customize (the Kernel) - Comparisons (of methods) - Takeaways
Backgrounds
Linux Kernel - Core of the system - Talks to
hardware (w/ drivers) - Provide abstractions/features
Open Build Service (OBS) - Build Service - Produce RPM
packages - Compile source code to binaries - Hosts RPM packages
Open Build Service (OBS) Interface - API - osc command-line
tool - WebUI
None
Problems
Additional Feature You want additional security hardening with ABC feature,
however due to performance impact it is disabled in openSUSE’s kernel # CONFIG_ABC is not set
Unsupported Hardware You have XZY device, but openSUSE’s kernel cannot
use it because support is not enabled # CONFIG_XZY is not set
Unsupported Hardware You have XZY device, but openSUSE’s kernel cannot
use it because the driver’s source code is not upstream
Distributing and Installation You have built a kernel on your
laptop, now you need to have it installed on all your machines
Updating the Kernel There a critical security bug the was
fixed, do you have to go through the same again?
Rational
Why Customize? - Missing features / hardware support - Disabled
- Not available - Too many features / hardware support - Security - Size
Why NOT Customize? - Support on your own - Untested
Why use OBS? - Builds RPM packages for you -
Make package distribution easy (and secure) - Works well with openSUSE distros - Support many architectures
How to Customize Overview
#1 - {patches,config}.addon - the “default” way to do customization
- patch and config managed in OBS - OBS keeps it updated (w/ link)
#2 - kernel-$FLAVOR.spec - lightweight customization - single RPM specification
file - repackaging of existing RPM
#3 - fork kernel-source.git - openSUSE/SUSE kernel team’s workflow -
patches and config managed with git repository
How to Customize #1 - {patches,config}.addon
Setup Requirements - osc (cmdline) / web browser - tar
& gzip bzip2 (cmdline) / GUI archiver - (optional) diff
Workflow (changing config) 1. Branch kernel-default project on OBS 2.
Create config.addon.tar.bz2 3. Upload to your branched kernel-default OBS project
Config Modification $ tree config.addon/ config.addon/ ├── arm64 │ └──
default └── x86_64 └── default
Config Modification $ cat config.addon/x86_64/default CONFIG_XYZ=y ...
Workflow (generating patches) 1. Download source code of kernel.git 2.
Extract 3. Modify 4. diff
Workflow (adding patches) 1. Branch kernel-default project on OBS 2.
Create patches.addon.tar.bz2 3. Upload to your branched kernel-default OBS project
Code Modification $ tree . 0001-support-XZY.patch series
Code Modification $ cat 0001-support-XZY.patch --- a/drivers/XYZ/main.c +++ b/drivers/XYZ/main.c @@
-93,7 +93,7 @@ ... $ cat series 0001-support-XZY.patch
How to Customize #2 - kernel-$FLAVOR.spec
Setup Requirements - osc (cmdline) / web browser
Workflow (changing spec) 1. Branch kernel-default-base project on OBS 2.
Modify kernel-default-base.spec 3. (optional) Rename spec file and project
Module Modification $ cat kernel-default-base.spec ... define filesystems autofs4 btrfs
ext4 fuse vfat \ isofs jbd2 mbcache nfsv2 ... %define modules %usb_modules %net_drivers \ %scsi_modules %block_drivers hyperv_modules %virtio_modules %vmware_modules %xen_modules ...
How to Customize #3 - fork kernel-source.git
Setup Requirements - osc - git - quilt - diff
- …
Workflow (adding patches) 1. Clone kernel-source.git 2. cd kernel-source 3.
sequence-patch.sh 4. cd tmp/current 5. add new patch with quilt
Workflow (adding patches) 6. quilt edit 7. refresh_patch.sh 8. cd
patches (kernel-source) 9. log 10. (optional) git push …
Workflow (upload) Push changes to OBS $OBS_BRANCH=home:$USER:branches:Leap:15.6:Update $FLAVOR=default scripts/tar-up.sh scripts/osc_wrapper
upload --enable-debug "$OBS_BRANCH" ./kernel-source/kernel-default.spec
Comparisons
#1 - {config,patches}.addon The Good - good balance between easiness
and flexibility The Bad - some chance of patch failing to apply
#2 - kernel-$FLAVOR.spec The Good - easy, super fast to
build package - identical binaries - low maintenance The Bad - not flexible, can’t add feature / hardware support
#3 - fork kernel-source.git The Good - very flexible -
remove existing patch and or add new upstream patch - scales very well - many collaborators & many custom patches / changes
#3 - fork kernel-source.git The Bad - needs to be
updated manually - needs more resources / tooling - workflow is much more complex - uses command-line-only tools
Takeaways
Takeaways Sometimes you need to customize the Linux Kernel for
feature Using openSUSE’s OBS to do so save you resources and makes distributing easy
Takeaways (cont.) Start with *.addon customization move to other method
if it doesn’t work well
Appendix
Examples home:tiwai:kernel:sle15-sp6-kasan - customize kernel config with config.addon openSUSE:Leap:15.6:Update/kernel-default-base -
customize kernel-default RPM with spec file home:tiwai:kernel:drm-tip - customize kernel config with kernel-source
References - How to maintain kernel-source packages on OBS? -
How to Modify a Package in Open Build Service - openSUSE:Build Service Collaboration - openSUSE:Build Service Concept project linking - Open Build Service Beginnerʼs Guide - SUSE Kernel Site - kernel-source’s README.SUSE
None