SlideShare a Scribd company logo
1 of 35
Download to read offline
KERNEL RECIPES 2015 | STEFAN HAJNOCZI1
Speed up your kernel
development cycle with QEMU
Stefan Hajnoczi <stefanha@redhat.com>
Kernel Recipes 2015
KERNEL RECIPES 2015 | STEFAN HAJNOCZI2
Agenda
● Kernel development cycle
● Introduction to QEMU
● Basics
● Testing kernels inside virtual machines
● Debugging virtual machines
● Advanced topics
● Cross-architecture testing
● Device bring-up
● Error injection
KERNEL RECIPES 2015 | STEFAN HAJNOCZI3
About me
QEMU contributor since 2010
● Subsystem maintainer
● Google Summer of Code & Outreachy
mentor/admin
● http://qemu-advent-calendar.org/
Occassional kernel patch contributor
● vsock, tcm_vhost, virtio_scsi, line6 staging driver
Work in Red Hat's Virtualization team
KERNEL RECIPES 2015 | STEFAN HAJNOCZI4
Kernel development cycle
Write code
Build kernel/modules
Deploy
Test
This
presentation
KERNEL RECIPES 2015 | STEFAN HAJNOCZI5
If you are doing kernel development...
USB
PCI
etc
Cgroups
Linux Security Modules
Namespaces
LIO SCSI target
File systems
device-mapper targets
Network protocols
Netfilter
OpenVSwitch
ftrace
ebpf
Device drivers
Storage
Networking
Tracing
Resource
management &
security
.
.
.
KERNEL RECIPES 2015 | STEFAN HAJNOCZI6
R.I.P.
All My Work
Gone
2015/09/01
...you might have these challenges
In situ debugging mechanisms like kgdb or kdump
● Not 100% reliable since they share the environment
● Crashes interrupt your browser/text editor session
Web
browser
Text
editor
test.ko
CRASH!
Development machine
KERNEL RECIPES 2015 | STEFAN HAJNOCZI7
Dedicated test machines
Ex situ debugging requires an additional machine
● More cumbersome to deploy code and run tests
● May require special hardware (JTAG, etc)
● Less mobile, hard to travel with multiple machines
PXE boot kernel/initramfs
Run tests
Debug or collect crash dump
Test
Machine
Dev
Machine
KERNEL RECIPES 2015 | STEFAN HAJNOCZI8
Virtual machines: best of both worlds!
● Easy to start/stop
● Full access to memory & CPU state
● Cross-architecture support using emulation
● Programmable hardware (e.g. error injection)
Web
browser
Text
editor
Development machine
test.ko
CRASH!
Virtual machine
KERNEL RECIPES 2015 | STEFAN HAJNOCZI9
QEMU emulator and virtualizer
Website: http://qemu-project.org/
Runs on Linux, Mac, BSD, and Windows
Emulates 17 CPU architectures (x86, arm, ppc, ...)
Supports fast hardware virtualization using KVM
Open source GPLv2 license
EMULogo by Benoît Canet
KERNEL RECIPES 2015 | STEFAN HAJNOCZI10
QEMU overview
Guest code runs in a virtual
machine
Hardware devices are
emulated
QEMU performs I/O on behalf
of guest
QEMU appears as a normal
userspace process on the
host
Guest
QEMU
Host kernel
KERNEL RECIPES 2015 | STEFAN HAJNOCZI11
Cross-architecture emulation
Run another type of machine on your laptop
● qemu­system­arm
● qemu­system­ppc
● ...
Uses just-in-time compilation to achieve reasonable
speed
● Overhead can still be noticable
KERNEL RECIPES 2015 | STEFAN HAJNOCZI12
Launching a virtual machine
Example with 1024 MB RAM and 2 CPUs:
qemu­system­x86_64 ­m 1024 
                   ­smp 2 
                   ­enable­kvm
Drop ­enable­kvm for emulation (e.g. ARM on x86)
Boots up to BIOS but there are no bootable drives...
KERNEL RECIPES 2015 | STEFAN HAJNOCZI13
QEMU virtual machine in BIOS/PXE
KERNEL RECIPES 2015 | STEFAN HAJNOCZI14
How to boot a development kernel
qemu­system­x86_64 ­enable­kvm ­m 1024 
    ­kernel /boot/vmlinuz 
    ­initrd /boot/initramfs.img 
    ­append param1=value1
These options are similar to bootloader (GRUB, etc)
options.
KERNEL RECIPES 2015 | STEFAN HAJNOCZI15
Small tests can run from initramfs
Initramfs can be customized to contain test programs
No need for full root file system
● Kick off tests from /init executable
Rebuild initramfs when kernel or test code changes
Result: Fast deployment & test
KERNEL RECIPES 2015 | STEFAN HAJNOCZI16
Deploying kernel build products
qemu­system­x86_64 … 
    ­kernel vmlinuz 
    ­initrd initramfs.img 
    ­append param1=value1
arch/x86_64/boot/bzImage
Custom init script & tests
Kernel modules
busybox
initramfs
KERNEL RECIPES 2015 | STEFAN HAJNOCZI17
Building initramfs with gen_init_cpio
gen_init_cpio takes description file as input:
file /init my­init.sh 0755 0 0
dir /bin 0755 0 0
nod /dev/zero 0666 0 0 c 1 5
file /sbin/busybox /sbin/busybox 0755 0 0
slink /bin/sh /sbin/busybox 0755 0 0
Produces cpio archive as output:
$ usr/gen_init_cpio input | gzip >initramfs.img
Included in Linux source tree (usr/gen_init_cpio)
KERNEL RECIPES 2015 | STEFAN HAJNOCZI18
Build process
Compile your kernel modules:
$ make M=drivers/virtio 
       CONFIG_VIRTIO_PCI=m modules
Build initramfs:
$ usr/gen_init_cpio input | gzip >initramfs.img
Run virtual machine:
$ qemu­system­x86_64 ­m 1024 ­enable­kvm 
          ­kernel arch/x86_64/boot/bzImage 
          ­initrd initramfs.img 
          ­append 'console=ttyS0' 
          ­nographic
KERNEL RECIPES 2015 | STEFAN HAJNOCZI19
Using QEMU serial port for testing
I snuck in the QEMU ­nographic option
● Disables GUI
● Puts serial port onto stdin/stdout
● Perfect for running tests from terminal
● Easy to copy-paste error messages from output
Tell kernel to use console=ttyS0
KERNEL RECIPES 2015 | STEFAN HAJNOCZI20
Challenges with manually built initramfs
Shared library dependencies must be found with
ldd(1) and added
Paths on the host may change across package
upgrades, breaking your initramfs build process
Rebuilding large initramfs every time is wasteful
Maybe it's time for a real root file system?
KERNEL RECIPES 2015 | STEFAN HAJNOCZI21
Persistent root file system
Two options:
1)Share directory with host using virtfs or NFS
Pro: Easy to manipulate and inspect on host
2)Use disk image file with partition table and file
systems
Pro: Easy to install full Linux distro
Kernel can still be provided by ­kernel option.
Kernel modules need to be in initramfs and/or root file
system.
KERNEL RECIPES 2015 | STEFAN HAJNOCZI22
Debugging a virtual machine
How do I inspect CPU registers and memory?
How do I set breakpoints on kernel code inside the
virtual machine?
QEMU supports GDB remote debugging to attach to
the virtual machine.
kgdb is not required inside virtual machine.
KERNEL RECIPES 2015 | STEFAN HAJNOCZI23
Remote debugging != debugging QEMU
Often causes confusion:
If you want to debug what the virtual machine sees,
use remote debugging (gdbstub).
If you want to debug device emulation or QEMU
internals, use gdb -p $QEMU_PID.
KERNEL RECIPES 2015 | STEFAN HAJNOCZI24
GDB remote debugging
Protocol for remote debugging:
● Get/set CPU registers
● Load/store memory
● Add/remove breakpoints
● Single-step and run
GDB
(client)
Guest state
(CPU + RAM)
GDB stub
QEMU
KERNEL RECIPES 2015 | STEFAN HAJNOCZI25
QEMU gdbstub example
qemu­system­x86_64 ­s ­enable­kvm ­m 1024 
           ­drive if=virtio,file=test.img
(gdb) set architecture i386:x86­64
(gdb) file vmlinux
(gdb) target remote 127.0.0.1:1234
(gdb) backtrace
#0  native_safe_halt () at 
./arch/x86/include/asm/irqflags.h:50
#1  0xffffffff8101efae in arch_safe_halt ()
...
KERNEL RECIPES 2015 | STEFAN HAJNOCZI26
Things to remember with remote debugging
Tell GDB which (sub-)architecture to use
● x86: 16-bit vs 32-bit vs 64-bit mode, check RFLAGS
register
● Careful with guest programs that switch modes!
Memory addresses are generally virtual addresses
(i.e. memory translation applies)
GDB doesn't know much about current userspace
process or swapped out pages!
KERNEL RECIPES 2015 | STEFAN HAJNOCZI27
Device bring-up
Challenges for driver developers:
● Real hardware is not available yet
● Hardware is expensive
● Hardware/software co-development
How to develop & test drivers under these conditions?
1)Implement device emulation in QEMU
2)Develop driver against emulated device
3)Verify against real hardware when available
KERNEL RECIPES 2015 | STEFAN HAJNOCZI28
QEMU for device bring-up
Write C code in QEMU to emulate your device
● Out-of-tree solutions for hw simulation exist too!
QEMU device emulation covers common busses:
● PCI, USB, I2C
Examples where this approach was used:
● Rocker OpenFlow network switch
● NVDIMM persistent memory
● NVMe PCI flash storage controller
KERNEL RECIPES 2015 | STEFAN HAJNOCZI29
QEMU device model
Object-oriented device model:
Allows you to focus on unique device functionality
instead of common behavior.
device
pci-device
e1000-base
e1000-82540em
KERNEL RECIPES 2015 | STEFAN HAJNOCZI30
Memory API
Device register memory regions for PIO and MMIO
hardware register access:
static const MemoryRegionOps vmport_ops = {
    .read = vmport_ioport_read,
    .write = vmport_ioport_write,
    .impl = {
        .min_access_size = 4,
        .max_access_size = 4,
    },
    .endianness = DEVICE_LITTLE_ENDIAN,
};
memory_region_init_io(&s­>io, OBJECT(s),
         &vmport_ops, s, "vmport", 1);
isa_register_ioport(isadev, &s­>io, 0x5658);
KERNEL RECIPES 2015 | STEFAN HAJNOCZI31
Interrupts
Devices use bus-specific methods to raise interrupts:
void pci_set_irq(PCIDevice *pci_dev, int level)
QEMU emulates interrupt controllers and injecting
interrupts
● Interrupt controller state is updated
● Guest CPU interrupt vector is taken
KERNEL RECIPES 2015 | STEFAN HAJNOCZI32
More information on device emulation
Plenty of examples in QEMU hw/ directory
● Learn from existing devices
● Documentation is sparse
Post patches to qemu-devel@nongnu.org for
feedback
● Guidelines for submitting patches:
http://qemu-project.org/Contribute/SubmitAPatch
KERNEL RECIPES 2015 | STEFAN HAJNOCZI33
Error injection
How do I exercise rare error code paths in kernel?
QEMU can simulate error conditions
● Without overheating or damaging real hardware
● Without reaching into a box to pull cables
Simple scenarios:
● Test hot unplug while device is in use
(qemu) device_del e1000.0
KERNEL RECIPES 2015 | STEFAN HAJNOCZI34
Advanced error injection
QEMU's block layer has an error injection engine:
[set­state]
state = "1"
event = "write_aio"
new_state = "2"
[inject­error]
state = "2"
event = "read_aio"
errno = "5"
This script fails disk reads after the first write.
Documentation: docs/blkdebug.txt
KERNEL RECIPES 2015 | STEFAN HAJNOCZI35
Questions?
Email: stefanha@redhat.com
IRC: stefanha on #qemu irc.oftc.net
Blog: http://blog.vmsplice.net/
QEMU: http://qemu-project.org/
Slides available on my website: http://vmsplice.net/

More Related Content

What's hot

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksAnne Nicolas
 
Performance: Observe and Tune
Performance: Observe and TunePerformance: Observe and Tune
Performance: Observe and TunePaul V. Novarese
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugginglibfetion
 
The Silence of the Canaries
The Silence of the CanariesThe Silence of the Canaries
The Silence of the CanariesKernel TLV
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLinaro
 
Kdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisKdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisBuland Singh
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLubomir Rintel
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productAnne Nicolas
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageKernel TLV
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation Jiann-Fuh Liaw
 
Linux Kernel Platform Development: Challenges and Insights
 Linux Kernel Platform Development: Challenges and Insights Linux Kernel Platform Development: Challenges and Insights
Linux Kernel Platform Development: Challenges and InsightsGlobalLogic Ukraine
 
Kernel Recipes 2017 - Build farm again - Willy Tarreau
Kernel Recipes 2017 - Build farm again - Willy TarreauKernel Recipes 2017 - Build farm again - Willy Tarreau
Kernel Recipes 2017 - Build farm again - Willy TarreauAnne Nicolas
 
IRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleIRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleAlison Chaiken
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsKernel TLV
 
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFBrendan Gregg
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisBuland Singh
 
From printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingFrom printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingThe Linux Foundation
 

What's hot (20)

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
 
Performance: Observe and Tune
Performance: Observe and TunePerformance: Observe and Tune
Performance: Observe and Tune
 
SystemV vs systemd
SystemV vs systemdSystemV vs systemd
SystemV vs systemd
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
The Silence of the Canaries
The Silence of the CanariesThe Silence of the Canaries
The Silence of the Canaries
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel Awareness
 
Linux Kernel Debugging
Linux Kernel DebuggingLinux Kernel Debugging
Linux Kernel Debugging
 
Kdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisKdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysis
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshop
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a product
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Libpcap
LibpcapLibpcap
Libpcap
 
Linux Kernel Platform Development: Challenges and Insights
 Linux Kernel Platform Development: Challenges and Insights Linux Kernel Platform Development: Challenges and Insights
Linux Kernel Platform Development: Challenges and Insights
 
Kernel Recipes 2017 - Build farm again - Willy Tarreau
Kernel Recipes 2017 - Build farm again - Willy TarreauKernel Recipes 2017 - Build farm again - Willy Tarreau
Kernel Recipes 2017 - Build farm again - Willy Tarreau
 
IRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleIRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the Preemptible
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance Tools
 
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_Analysis
 
From printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingFrom printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debugging
 

Viewers also liked

Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDanny Abukalam
 
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farm
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farmKernel Recipes 2016 - Speeding up development by setting up a kernel build farm
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farmAnne Nicolas
 
Kernel Recipes 2014 - Advanced Quilt
Kernel Recipes 2014 - Advanced QuiltKernel Recipes 2014 - Advanced Quilt
Kernel Recipes 2014 - Advanced QuiltAnne Nicolas
 
Kernel Recipes 2014 - Introduction to Quilt
Kernel Recipes 2014 - Introduction to QuiltKernel Recipes 2014 - Introduction to Quilt
Kernel Recipes 2014 - Introduction to QuiltAnne Nicolas
 
Security Monitoring with eBPF
Security Monitoring with eBPFSecurity Monitoring with eBPF
Security Monitoring with eBPFAlex Maestretti
 
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...Anne Nicolas
 
Kernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernelKernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernelAnne Nicolas
 
Linux Kernel and Driver Development Training
Linux Kernel and Driver Development TrainingLinux Kernel and Driver Development Training
Linux Kernel and Driver Development TrainingStephan Cadene
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniquesSatpal Parmar
 

Viewers also liked (9)

Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMU
 
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farm
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farmKernel Recipes 2016 - Speeding up development by setting up a kernel build farm
Kernel Recipes 2016 - Speeding up development by setting up a kernel build farm
 
Kernel Recipes 2014 - Advanced Quilt
Kernel Recipes 2014 - Advanced QuiltKernel Recipes 2014 - Advanced Quilt
Kernel Recipes 2014 - Advanced Quilt
 
Kernel Recipes 2014 - Introduction to Quilt
Kernel Recipes 2014 - Introduction to QuiltKernel Recipes 2014 - Introduction to Quilt
Kernel Recipes 2014 - Introduction to Quilt
 
Security Monitoring with eBPF
Security Monitoring with eBPFSecurity Monitoring with eBPF
Security Monitoring with eBPF
 
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
 
Kernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernelKernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernel
 
Linux Kernel and Driver Development Training
Linux Kernel and Driver Development TrainingLinux Kernel and Driver Development Training
Linux Kernel and Driver Development Training
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniques
 

Similar to Kernel Recipes 2015: Speed up your kernel development cycle with QEMU

OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula Project
 
Virtualization, The future of computing (archived)
Virtualization, The future of computing (archived)Virtualization, The future of computing (archived)
Virtualization, The future of computing (archived)Bud Siddhisena
 
Device virtualization and management in xen
Device virtualization and management in xenDevice virtualization and management in xen
Device virtualization and management in xenLingfei Kong
 
Kvm virtualization in_rhel_7
Kvm virtualization in_rhel_7Kvm virtualization in_rhel_7
Kvm virtualization in_rhel_7Urgen Sherpa
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBSamsung Open Source Group
 
Hands on Virtualization with Ganeti (part 1) - LinuxCon 2012
Hands on Virtualization with Ganeti (part 1)  - LinuxCon 2012Hands on Virtualization with Ganeti (part 1)  - LinuxCon 2012
Hands on Virtualization with Ganeti (part 1) - LinuxCon 2012Lance Albertson
 
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiXPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiThe Linux Foundation
 
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...OpenNebula Project
 
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...OpenNebula Project
 
Hardware Detection Tool
Hardware Detection ToolHardware Detection Tool
Hardware Detection ToolAnne Nicolas
 
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012Cloud Computing in practice with OpenNebula ~ Develer workshop 2012
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012Giovanni Toraldo
 
Cloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopCloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopDeveler S.r.l.
 
The Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote WorldThe Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote WorldDevOps.com
 
Manage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachManage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachinovex GmbH
 
Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerBob Killen
 
Advanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtopAdvanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtopAlan Renouf
 

Similar to Kernel Recipes 2015: Speed up your kernel development cycle with QEMU (20)

OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7
 
MIPS-X
MIPS-XMIPS-X
MIPS-X
 
Virtualization, The future of computing (archived)
Virtualization, The future of computing (archived)Virtualization, The future of computing (archived)
Virtualization, The future of computing (archived)
 
Device virtualization and management in xen
Device virtualization and management in xenDevice virtualization and management in xen
Device virtualization and management in xen
 
Kvm virtualization in_rhel_7
Kvm virtualization in_rhel_7Kvm virtualization in_rhel_7
Kvm virtualization in_rhel_7
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Hands on Virtualization with Ganeti (part 1) - LinuxCon 2012
Hands on Virtualization with Ganeti (part 1)  - LinuxCon 2012Hands on Virtualization with Ganeti (part 1)  - LinuxCon 2012
Hands on Virtualization with Ganeti (part 1) - LinuxCon 2012
 
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiXPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
 
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...
OpenNebulaConf2018 - OpenNebula in a Continuous Integration Environment - Geo...
 
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...
OpenNebulaConf 2016 - Hypervisors and Containers Hands-on Workshop by Jaime M...
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Hardware Detection Tool
Hardware Detection ToolHardware Detection Tool
Hardware Detection Tool
 
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012Cloud Computing in practice with OpenNebula ~ Develer workshop 2012
Cloud Computing in practice with OpenNebula ~ Develer workshop 2012
 
Cloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopCloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshop
 
The Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote WorldThe Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote World
 
Manage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachManage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approach
 
10215 A 03
10215 A 0310215 A 03
10215 A 03
 
Ansible & Vagrant
Ansible & VagrantAnsible & Vagrant
Ansible & Vagrant
 
Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and Docker
 
Advanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtopAdvanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtop
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Recently uploaded

Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.Sharon Liu
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptkinjal48
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.ppt
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 

Kernel Recipes 2015: Speed up your kernel development cycle with QEMU

  • 1. KERNEL RECIPES 2015 | STEFAN HAJNOCZI1 Speed up your kernel development cycle with QEMU Stefan Hajnoczi <stefanha@redhat.com> Kernel Recipes 2015
  • 2. KERNEL RECIPES 2015 | STEFAN HAJNOCZI2 Agenda ● Kernel development cycle ● Introduction to QEMU ● Basics ● Testing kernels inside virtual machines ● Debugging virtual machines ● Advanced topics ● Cross-architecture testing ● Device bring-up ● Error injection
  • 3. KERNEL RECIPES 2015 | STEFAN HAJNOCZI3 About me QEMU contributor since 2010 ● Subsystem maintainer ● Google Summer of Code & Outreachy mentor/admin ● http://qemu-advent-calendar.org/ Occassional kernel patch contributor ● vsock, tcm_vhost, virtio_scsi, line6 staging driver Work in Red Hat's Virtualization team
  • 4. KERNEL RECIPES 2015 | STEFAN HAJNOCZI4 Kernel development cycle Write code Build kernel/modules Deploy Test This presentation
  • 5. KERNEL RECIPES 2015 | STEFAN HAJNOCZI5 If you are doing kernel development... USB PCI etc Cgroups Linux Security Modules Namespaces LIO SCSI target File systems device-mapper targets Network protocols Netfilter OpenVSwitch ftrace ebpf Device drivers Storage Networking Tracing Resource management & security . . .
  • 6. KERNEL RECIPES 2015 | STEFAN HAJNOCZI6 R.I.P. All My Work Gone 2015/09/01 ...you might have these challenges In situ debugging mechanisms like kgdb or kdump ● Not 100% reliable since they share the environment ● Crashes interrupt your browser/text editor session Web browser Text editor test.ko CRASH! Development machine
  • 7. KERNEL RECIPES 2015 | STEFAN HAJNOCZI7 Dedicated test machines Ex situ debugging requires an additional machine ● More cumbersome to deploy code and run tests ● May require special hardware (JTAG, etc) ● Less mobile, hard to travel with multiple machines PXE boot kernel/initramfs Run tests Debug or collect crash dump Test Machine Dev Machine
  • 8. KERNEL RECIPES 2015 | STEFAN HAJNOCZI8 Virtual machines: best of both worlds! ● Easy to start/stop ● Full access to memory & CPU state ● Cross-architecture support using emulation ● Programmable hardware (e.g. error injection) Web browser Text editor Development machine test.ko CRASH! Virtual machine
  • 9. KERNEL RECIPES 2015 | STEFAN HAJNOCZI9 QEMU emulator and virtualizer Website: http://qemu-project.org/ Runs on Linux, Mac, BSD, and Windows Emulates 17 CPU architectures (x86, arm, ppc, ...) Supports fast hardware virtualization using KVM Open source GPLv2 license EMULogo by Benoît Canet
  • 10. KERNEL RECIPES 2015 | STEFAN HAJNOCZI10 QEMU overview Guest code runs in a virtual machine Hardware devices are emulated QEMU performs I/O on behalf of guest QEMU appears as a normal userspace process on the host Guest QEMU Host kernel
  • 11. KERNEL RECIPES 2015 | STEFAN HAJNOCZI11 Cross-architecture emulation Run another type of machine on your laptop ● qemu­system­arm ● qemu­system­ppc ● ... Uses just-in-time compilation to achieve reasonable speed ● Overhead can still be noticable
  • 12. KERNEL RECIPES 2015 | STEFAN HAJNOCZI12 Launching a virtual machine Example with 1024 MB RAM and 2 CPUs: qemu­system­x86_64 ­m 1024                     ­smp 2                     ­enable­kvm Drop ­enable­kvm for emulation (e.g. ARM on x86) Boots up to BIOS but there are no bootable drives...
  • 13. KERNEL RECIPES 2015 | STEFAN HAJNOCZI13 QEMU virtual machine in BIOS/PXE
  • 14. KERNEL RECIPES 2015 | STEFAN HAJNOCZI14 How to boot a development kernel qemu­system­x86_64 ­enable­kvm ­m 1024      ­kernel /boot/vmlinuz      ­initrd /boot/initramfs.img      ­append param1=value1 These options are similar to bootloader (GRUB, etc) options.
  • 15. KERNEL RECIPES 2015 | STEFAN HAJNOCZI15 Small tests can run from initramfs Initramfs can be customized to contain test programs No need for full root file system ● Kick off tests from /init executable Rebuild initramfs when kernel or test code changes Result: Fast deployment & test
  • 16. KERNEL RECIPES 2015 | STEFAN HAJNOCZI16 Deploying kernel build products qemu­system­x86_64 …      ­kernel vmlinuz      ­initrd initramfs.img      ­append param1=value1 arch/x86_64/boot/bzImage Custom init script & tests Kernel modules busybox initramfs
  • 17. KERNEL RECIPES 2015 | STEFAN HAJNOCZI17 Building initramfs with gen_init_cpio gen_init_cpio takes description file as input: file /init my­init.sh 0755 0 0 dir /bin 0755 0 0 nod /dev/zero 0666 0 0 c 1 5 file /sbin/busybox /sbin/busybox 0755 0 0 slink /bin/sh /sbin/busybox 0755 0 0 Produces cpio archive as output: $ usr/gen_init_cpio input | gzip >initramfs.img Included in Linux source tree (usr/gen_init_cpio)
  • 18. KERNEL RECIPES 2015 | STEFAN HAJNOCZI18 Build process Compile your kernel modules: $ make M=drivers/virtio         CONFIG_VIRTIO_PCI=m modules Build initramfs: $ usr/gen_init_cpio input | gzip >initramfs.img Run virtual machine: $ qemu­system­x86_64 ­m 1024 ­enable­kvm            ­kernel arch/x86_64/boot/bzImage            ­initrd initramfs.img            ­append 'console=ttyS0'            ­nographic
  • 19. KERNEL RECIPES 2015 | STEFAN HAJNOCZI19 Using QEMU serial port for testing I snuck in the QEMU ­nographic option ● Disables GUI ● Puts serial port onto stdin/stdout ● Perfect for running tests from terminal ● Easy to copy-paste error messages from output Tell kernel to use console=ttyS0
  • 20. KERNEL RECIPES 2015 | STEFAN HAJNOCZI20 Challenges with manually built initramfs Shared library dependencies must be found with ldd(1) and added Paths on the host may change across package upgrades, breaking your initramfs build process Rebuilding large initramfs every time is wasteful Maybe it's time for a real root file system?
  • 21. KERNEL RECIPES 2015 | STEFAN HAJNOCZI21 Persistent root file system Two options: 1)Share directory with host using virtfs or NFS Pro: Easy to manipulate and inspect on host 2)Use disk image file with partition table and file systems Pro: Easy to install full Linux distro Kernel can still be provided by ­kernel option. Kernel modules need to be in initramfs and/or root file system.
  • 22. KERNEL RECIPES 2015 | STEFAN HAJNOCZI22 Debugging a virtual machine How do I inspect CPU registers and memory? How do I set breakpoints on kernel code inside the virtual machine? QEMU supports GDB remote debugging to attach to the virtual machine. kgdb is not required inside virtual machine.
  • 23. KERNEL RECIPES 2015 | STEFAN HAJNOCZI23 Remote debugging != debugging QEMU Often causes confusion: If you want to debug what the virtual machine sees, use remote debugging (gdbstub). If you want to debug device emulation or QEMU internals, use gdb -p $QEMU_PID.
  • 24. KERNEL RECIPES 2015 | STEFAN HAJNOCZI24 GDB remote debugging Protocol for remote debugging: ● Get/set CPU registers ● Load/store memory ● Add/remove breakpoints ● Single-step and run GDB (client) Guest state (CPU + RAM) GDB stub QEMU
  • 25. KERNEL RECIPES 2015 | STEFAN HAJNOCZI25 QEMU gdbstub example qemu­system­x86_64 ­s ­enable­kvm ­m 1024             ­drive if=virtio,file=test.img (gdb) set architecture i386:x86­64 (gdb) file vmlinux (gdb) target remote 127.0.0.1:1234 (gdb) backtrace #0  native_safe_halt () at  ./arch/x86/include/asm/irqflags.h:50 #1  0xffffffff8101efae in arch_safe_halt () ...
  • 26. KERNEL RECIPES 2015 | STEFAN HAJNOCZI26 Things to remember with remote debugging Tell GDB which (sub-)architecture to use ● x86: 16-bit vs 32-bit vs 64-bit mode, check RFLAGS register ● Careful with guest programs that switch modes! Memory addresses are generally virtual addresses (i.e. memory translation applies) GDB doesn't know much about current userspace process or swapped out pages!
  • 27. KERNEL RECIPES 2015 | STEFAN HAJNOCZI27 Device bring-up Challenges for driver developers: ● Real hardware is not available yet ● Hardware is expensive ● Hardware/software co-development How to develop & test drivers under these conditions? 1)Implement device emulation in QEMU 2)Develop driver against emulated device 3)Verify against real hardware when available
  • 28. KERNEL RECIPES 2015 | STEFAN HAJNOCZI28 QEMU for device bring-up Write C code in QEMU to emulate your device ● Out-of-tree solutions for hw simulation exist too! QEMU device emulation covers common busses: ● PCI, USB, I2C Examples where this approach was used: ● Rocker OpenFlow network switch ● NVDIMM persistent memory ● NVMe PCI flash storage controller
  • 29. KERNEL RECIPES 2015 | STEFAN HAJNOCZI29 QEMU device model Object-oriented device model: Allows you to focus on unique device functionality instead of common behavior. device pci-device e1000-base e1000-82540em
  • 30. KERNEL RECIPES 2015 | STEFAN HAJNOCZI30 Memory API Device register memory regions for PIO and MMIO hardware register access: static const MemoryRegionOps vmport_ops = {     .read = vmport_ioport_read,     .write = vmport_ioport_write,     .impl = {         .min_access_size = 4,         .max_access_size = 4,     },     .endianness = DEVICE_LITTLE_ENDIAN, }; memory_region_init_io(&s­>io, OBJECT(s),          &vmport_ops, s, "vmport", 1); isa_register_ioport(isadev, &s­>io, 0x5658);
  • 31. KERNEL RECIPES 2015 | STEFAN HAJNOCZI31 Interrupts Devices use bus-specific methods to raise interrupts: void pci_set_irq(PCIDevice *pci_dev, int level) QEMU emulates interrupt controllers and injecting interrupts ● Interrupt controller state is updated ● Guest CPU interrupt vector is taken
  • 32. KERNEL RECIPES 2015 | STEFAN HAJNOCZI32 More information on device emulation Plenty of examples in QEMU hw/ directory ● Learn from existing devices ● Documentation is sparse Post patches to qemu-devel@nongnu.org for feedback ● Guidelines for submitting patches: http://qemu-project.org/Contribute/SubmitAPatch
  • 33. KERNEL RECIPES 2015 | STEFAN HAJNOCZI33 Error injection How do I exercise rare error code paths in kernel? QEMU can simulate error conditions ● Without overheating or damaging real hardware ● Without reaching into a box to pull cables Simple scenarios: ● Test hot unplug while device is in use (qemu) device_del e1000.0
  • 34. KERNEL RECIPES 2015 | STEFAN HAJNOCZI34 Advanced error injection QEMU's block layer has an error injection engine: [set­state] state = "1" event = "write_aio" new_state = "2" [inject­error] state = "2" event = "read_aio" errno = "5" This script fails disk reads after the first write. Documentation: docs/blkdebug.txt
  • 35. KERNEL RECIPES 2015 | STEFAN HAJNOCZI35 Questions? Email: stefanha@redhat.com IRC: stefanha on #qemu irc.oftc.net Blog: http://blog.vmsplice.net/ QEMU: http://qemu-project.org/ Slides available on my website: http://vmsplice.net/