How to Find Bugs in USB Device Drivers

Total Page:16

File Type:pdf, Size:1020Kb

How to Find Bugs in USB Device Drivers Don’t trust your USB How to find bugs in USB device drivers OpenSource Security Ralf Spenneberg 2 Motivation • compromise systems via USB • find bugs, fix or exploit them :-) ms_s3c Sergej Schumilo - [email protected] 3 BadUSB (2014) Facedancer (2012) USB Fuzzing for the Masses (2011) ms_s3c Sergej Schumilo - [email protected] 4 Impact • CVE-2013-1285 • CVE-2013-1680 ms_s3c Sergej Schumilo - [email protected] 5 Plug and Root? Darrin Barrall and David Dewey 2005 at Black Hat ms_s3c Sergej Schumilo - [email protected] 6 USB in a nutshell driver initialization driver specific function usb-core-driver specific driver subsystems HID SCSI Enumeration r8192u_usb network Endpoint data transfer udlfb framebuffer ms_s3c Sergej Schumilo - [email protected] 7 Enumeration usb core driver specific device driver Vendor: 0x0bb4 (HTC) ! Product: 0x0a09 (PocketPC Sync) ms_s3c Sergej Schumilo - [email protected] 8 vUSBf Framework • usage of QEMU and KVM for virtualization • usage of USB Redirection interface for USB data injection • send usb traffic through TCP, UDP or Unix sockets • wrap usb data into USB Redirection protocol headers • it supports USB 1.0, 1.1, 2.0, 3.0 ms_s3c Sergej Schumilo - [email protected] 9 USB Redirection redirserver redir specific QEMU USB- emulated VM- libusb usb traffic Device HC Kernel 2. Losungsansatz¨ ! Figure 1. Aufbau usbredirserver • provides remote USB-device Die Anforderungen an das Fuzzing-Framework waren Der USB-Traffic wird dabei logisch zwischen libusb und unteranderem die elengante Losung¨ der langsamen • dempart emuliertenof the SPICE Host-Controller suite (HC) ubertragen¨ (Abb.1). Ausfuhrgeschwindigkeit,¨ die Gegebenheit einer hohen Reell werden die Pakete jedoch in Form von USB- Reproduzierbarkeit und die moglichst¨ luckenlosen¨ Pro- Redirection-Paketen gekapselt. Fur¨ den Verbindungsauf- tokollierung des Impacts verschiedenster USB-Payload. bau und die USB-Redirection-Kommunikation ist in diesem Daruber¨ hinaus sollte das Framework moglichst¨ erweiterbar ms_s3cFall die Software ”usbredirserver” undSergej dieSchumilo QEMU - schumilo@fh-muenster eigene .de sein. Die folgenden Losungsans¨ atze¨ ermoglicht¨ erst die Schnittstelle zustandig.¨ Da das USB-Redirection-Protokoll Implementierung eines USB-Fuzzing-Frameworks, welche relativ einfach ist, lasst¨ sich mit geringe Aufwand diese alle von diesen Anforderungen erfullt.¨ Verbindung auch per Man-In-The-Middle abhoren¨ bzw. gezielt verandern.¨ Dies erlaubt bereits USB-Fuzzing 2.1. Host-Virtualisierung ohne grundlegendes Verstandnis¨ des USB-Protokolls. Al- ternativ lasst¨ sich auch ein USB-Gerat¨ mit Hilfe des USB-Redirection-Protokolls emulieren und somit auch Das Framework setzt fur¨ die Realisierung der gegebenen stateful-USB-fuzzing ermoglichen,¨ ohne dafur¨ jedoch ein Anforderungen auf die im Linux-Kernel integrierte Virtual- physikalisch verfugbares¨ und angeschlossenene USB-Gerat¨ isierungsinfrastruktur KVM, um damit die anzugreifenden vorraus zusetzen. Systeme zu virtualisieren. Da KVM nur den Hypervisior darstellt, wird dieser in Kombination mit QEMU, welches Vorteile in der Verwendung des USB-Redirection- dazu dient weitere benotigte¨ Gerate¨ zu emulieren, zu einer Protokoll sind außerdem die fehlende Limitierung der vollstandigen¨ Virtualisierungslosung.¨ Da diese Virtual- verfugbaren¨ Endpoints, sprich es konnten¨ theoretisch alle isierungslosung,¨ im Gegensatz zu anderen kommerziellen 31 Endpoints verwendet werden. Außerdem unterstutzt¨ das Losungen,¨ unter verschiedenen GPL-Versionen lizensiert USB-Redirection-Protokoll auch das USB 3.0 Protokoll. ist, bietet sie uns damit großtm¨ ogliche¨ Flexibilitat¨ in dieser Verwendung und der Erweiterbarkeit. 2.3. Harddrive-Virtualisierung Die Nutzung von QEMU impliziert fur¨ die virtuellen 2.2. USB-Virtualisierung Maschinen die Verwendung von Image-Dateien oder reellen Partitionen, welche fur¨ die Bereitstellung des Spe- Als USB-Schnittstelle wird das sogenannten USB- icherplatzes der virtuellen Festplatten benotigt¨ werden. Redirecton-Protokoll [5] verwendet, welches zum Zeit- Hierzu verwenden wir Image-Files im QCOW2-Format punkt dieses Papers nur in Kombination mit dem QEMU (QEMU Copy-On-Write). Ein Aufbau fur¨ eine virtuelle eigenen Interface nutzbar ist. Das USB-Redirection- Maschine sieht in der trivialsten Form wie folgt aus: Proktoll ermoglicht¨ die Ubertragung¨ von USB-Traffic in QCOW2-Image Form von TCP, UDP oder Unix-Sockets und dient ur- QEMU load (ca. 2GB) + Snapshot sprunglich¨ der Bereitstellung von entfernten USB-Gerate¨ in virtuellen Umgebungen. Figure 2. Trivialer Aufbau f ¨urQEMU Fur¨ die Bereitstellung eines entfernten USB-Gerates,¨ di- ent die Software ”usbredirserver”, welche Teil der USB- Alternativ lasst¨ sich im QCOW2-Image noch ein Snap- Redirection-Suite ist und es erlaubt ein eingestecktes USB- shot hinterlegen, damit beim Laden der VM der gesicherte Gerat¨ im Netzwerk bereit zustellen. Hierfur¨ wird das Zustand sofort wiederhergestellt wird und man sich zum USB-Gerat¨ per libusb auf dem Host-System an eine eige- Beispiel das Hochfahren des Betriebssystem ersparen nen Treiber-Implementierung gebunden und alle Anfragen kann. Das QCOW2-Image wachst¨ in diesem Fall um ca. des Guest-System werden an die Treiber-Implementierung der Große¨ des Arbeitsspeichers, sowie den Festplatten- durch gereicht. Dadurch entsteht eine logische Verbindung Anderungen.¨ zwischen dem Guest-System und dem USB-Gerat.¨ 2 10 QEMU usbredir- interface VM QEMU monitoring console - monitoring process start - load snapshot - recognition for image corruption QEMU- Contoller ms_s3c Sergej Schumilo - [email protected] 11 QEMU USB-Emulator USB-Traffic usbredir- interface VM traffic fuzzing QEMU monitoring console - monitoring process start descriptor fuzzing Fuzzer-Modul - load snapshot - recognition for image corruption Read or generate Device-Descriptor QEMU- Contoller ms_s3c Sergej Schumilo - [email protected] 12 QEMU USB-Emulator USB-Traffic usbredir- VM monitoring interface per serial port traffic fuzzing Monitoring- QEMU monitoring console Modul - monitoring process start descriptor fuzzing Fuzzer-Modul - load snapshot - recognition for image corruption Read or generate Device-Descriptor QEMU- Contoller write to logfile ms_s3c Sergej Schumilo - [email protected] 13 instance #3 instance #2 instance #1 QEMU USB-Emulator USB-Traffic usbredir- VM monitoring interface per serial port traffic fuzzing Monitoring- QEMU monitoring console Modul - monitoring process start descriptorfuzzing Fuzzer-Modul - load snapshot - recognition for image corruption Read or generate Device-Descriptor read testcase QEMU- Contoller write to logfile testcase- pooltestcase- pooltestcase- pool Testcase-Distributor ms_s3c Sergej Schumilo - [email protected] 14 vUSBf reload mode start QEMU load snapshot send payload write impact to logfile ms_s3c Sergej Schumilo - [email protected] 15 vUSBf Non-reload mode start QEMU load snapshot send payload yes no issue write impact to detected? logfile ms_s3c Sergej Schumilo - [email protected] 16 Reproducibility • test cases are related to unique IDs • file export for a sequence of test cases • offers high reproducibility in combination with snapshots ms_s3c Sergej Schumilo - [email protected] 17 vUSBf Performance reload mode non reload mode 0,5 vUSBf (1 process) 0,5 50 vUSBf Multiprocessing 120 150 vUSBf Clustering 320 0 100 200 300 400 tests per seconds ms_s3c Sergej Schumilo - [email protected] 18 vUSBf Performance runtime for 1 million tests: reload mode non reload mode 23d 4h vUSBf (1 process) 23d 4h 5h 30m vUSBf Multiprocessing 2h 18m 1h 48m vUSBf Clustering 51m 0 1,6547619047619 3,30952380952381 ms_s3c Sergej Schumilo - [email protected] 19 Demo ms_s3c Sergej Schumilo - [email protected] 20 Challenges • Linux monitoring is simple! • other OS? • investigation / fixing of bugs • additional specific USB-emulators ms_s3c Sergej Schumilo - [email protected] BUG: Bad rss-counter state mm:ffff880002a13c00 idx:1 val:2 BUG: Bad rss-counter state mm:ffff8800057e4a80 idx:1 val:2 21 BUG: Bad rss-counter state mm:ffff8800057e5180 idx:1 val:2 BUG: Bad rss-counter state mm:ffff8800057e5880 idx:1 val:2 BUG: Bad rss-counter state mm:ffff880006390e00 idx:1 val:2 BUG: Bad rss-counter state mm:ffff880006391500 idx:1 val:2 BUG: Bad rss-counter state mm:ffff880006391c00 idx:1 val:2 BUG: Bad rss-counter state mm:ffff880007d0c700 idx:1 val:2 BUG: unable to handle kernel NULL pointer dereference at 0000000000000002 Conclusion: BUG: unable to handle kernel NULL pointer dereference at 0000000000000003 BUG: unable to handle kernel NULL pointer dereference at 0000000000000004 BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 BUG: unable to handle kernel NULL pointer dereference at 000000000000000f BUG: unable to handle kernel NULL pointer dereference at 0000000000000042 BUG: unable to handle kernel NULL pointer dereference at 0000000000000043 BUG: unable to handle kernel NULL pointer dereference at 0000000000000044 BUG: unable to handle kernel NULL pointer dereference at 0000000000000046 BUG: unable to handle kernel NULL pointer dereference at 0000000000000048 BUG: unable to handle kernel NULL pointer dereference at 0000000000000058 vast amount of bugs :-)! BUG: unable to handle kernel NULL pointer dereference at 0000000000000068 BUG: unable to handle kernel NULL pointer dereference at 0000000000000070 BUG: unable to handle kernel NULL pointer dereference at 0000000000000098 ! BUG: unable to handle kernel
Recommended publications
  • Kernel Panic
    Kernel Panic Connect, Inc. 1701 Quincy Avenue, Suites 5 & 6, Naperville, IL 60540 Ph: (630) 717-7200 Fax: (630) 717-7243 www.connectrf.com Table of Contents SCO Kernel Patches for Panics on Pentium Systems…………………………………..1 Kernel Panic Debug Methodologies..............................................................................3 SCO Kernel Patches for Panics on Pentium Systems SCO Kernel Patches for Panics on Pentium Systems Web Links http://www.sco.com/cgi-bin/ssl_reference?104530 http://www.sco.com/cgi-bin/ssl_reference?105532 Pentium System Panics with Trap Type 6; no dump is saved to /dev/swap. Keywords panic trap kernel invalid opcode pentium querytlb querytbl 386 mpx unix v4 dump swap double type6 no patch /etc/conf/pack.d/kernel/locore.o image locore Release SCO UNIX System V/386 Release 3.2 Operating System Version 4.0, 4.1 and 4.2 SCO Open Desktop Release 2.0 and 3.0 SCO Open Server System Release 2.0 and 3.0 Problem My system panics with a Trap Type 6, but no memory dump gets written. Cause There is a flaw in the kernel querytlb() routine that allows the Pentium to execute a 386-specific instruction which causes it to panic with an invalid opcode. querytlb() is only called when your system is panicking. The fault causes the system to double- panic and it thus fails to write a panic dump to disk. This means that the panic trap type 6 is concealing another type of panic which will show itself after the following patch has been applied. Solution You can apply the following patch, as root, to: /etc/conf/pack.d/kernel/locore.o Use the procedure that follows.
    [Show full text]
  • Linux Software User's Manual
    New Generation Systems (NGS) Linux Software User’s Manual Version 1.0, September 2019 www.moxa.com/product © 2019 Moxa Inc. All rights reserved. New Generation Systems (NGS) Linux Software User’s Manual The software described in this manual is furnished under a license agreement and may be used only in accordance with the terms of that agreement. Copyright Notice © 2019 Moxa Inc. All rights reserved. Trademarks The MOXA logo is a registered trademark of Moxa Inc. All other trademarks or registered marks in this manual belong to their respective manufacturers. Disclaimer Information in this document is subject to change without notice and does not represent a commitment on the part of Moxa. Moxa provides this document as is, without warranty of any kind, either expressed or implied, including, but not limited to, its particular purpose. Moxa reserves the right to make improvements and/or changes to this manual, or to the products and/or the programs described in this manual, at any time. Information provided in this manual is intended to be accurate and reliable. However, Moxa assumes no responsibility for its use, or for any infringements on the rights of third parties that may result from its use. This product might include unintentional technical or typographical errors. Changes are periodically made to the information herein to correct such errors, and these changes are incorporated into new editions of the publication. Technical Support Contact Information www.moxa.com/support Moxa Americas Moxa China (Shanghai office) Toll-free: 1-888-669-2872 Toll-free: 800-820-5036 Tel: +1-714-528-6777 Tel: +86-21-5258-9955 Fax: +1-714-528-6778 Fax: +86-21-5258-5505 Moxa Europe Moxa Asia-Pacific Tel: +49-89-3 70 03 99-0 Tel: +886-2-8919-1230 Fax: +49-89-3 70 03 99-99 Fax: +886-2-8919-1231 Moxa India Tel: +91-80-4172-9088 Fax: +91-80-4132-1045 Table of Contents 1.
    [Show full text]
  • Man Pages Section 3 Library Interfaces and Headers
    man pages section 3: Library Interfaces and Headers Part No: 816–5173–16 September 2010 Copyright © 2010, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related software documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are “commercial computer software” or “commercial technical data” pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms setforth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
    [Show full text]
  • SUMURI Macintosh Forensics Best Practices
    ! MAC FORENSICS - STEP BY STEP Disclaimer: Before using any new procedure, hardware or software for forensics you must do your own validation and testing before working on true evidence. These best practices are summarized from SUMURI’s Macintosh Forensic Survival Courses which is a vendor- neutral training course taught to law enforcement, government and corporate examiners worldwide. More information about SUMURI can be found at SUMURI.com STEP ACTIONS DESCRIPTION STEP-1: PRE-SEARCH INTELLIGENCE Find out as much as you can about your target: • Number and types of Macs (MacBook, iMac or Mac Pro). • Operating System Versions (for collecting/processing volatile data and Copy Over Procedure). • Type/s and number of ports. • Does it contain a T2 chipset with Secure Boot? • Is FileVault Active? STEP-2: ISOLATE Assign one trained Digital Evidence Collection Specialist to handle the computers to minimize contamination and Chain of Custody. Prohibit anyone else from handling the devices. STEP-3: ALWAYS ASK FOR THE PASSWORD Most newer Macs have enhanced security features such as T2 Security Chipsets, APFS File Systems, Secure Boot, FileVault and more. Any one or combination of these security features can stop you from getting the data. ALWAYS ASK FOR THE PASSWORD. SUMURI.com © SUMURI 2010-2019 ! STEP ACTIONS DESCRIPTION STEP-4: IF COMPUTER IS ON - SCREEN SAVER PASSWORD ACTIVE Options are: • Ask for the Password - Confirm password and proceed to Step-6. • Restart to Image RAM - Connect a RAM Imaging Utility to the Mac such as RECON IMAGER. Conduct a soft-restart (do not power off if possible and image the RAM).
    [Show full text]
  • DA-681 Series Linux User's Manual V2
    DA-681 Series Linux User’s Manual Second Edition, May 2009 www.moxa.com/product © 2009 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. DA-681 Series Linux User’s Manual The Moxa software described in this manual is furnished under a license agreement and may be used only in accordance with the terms of that agreement. Copyright Notice Copyright © 2009 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. Trademarks MOXA is a registered trademark of Moxa Inc. All other trademarks or registered marks in this manual belong to their respective manufacturers. Disclaimer Information in this document is subject to change without notice and does not represent a commitment on the part of Moxa. Moxa provides this document “as is,” without warranty of any kind, either expressed or implied, including, but not limited to, its particular purpose. Moxa reserves the right to make improvements and/or changes to this manual, or to the products and/or the programs described in this manual, at any time. Information provided in this manual is intended to be accurate and reliable. However, Moxa assumes no responsibility for its use, or for any infringements on the rights of third parties that may result from its use. This product might include unintentional technical or typographical errors. Changes are periodically made to the information herein to correct such errors, and these changes are incorporated into new editions of the publication. Technical Support Contact Information www.moxa.com/support Moxa
    [Show full text]
  • Training USB Linux Drivers: Writing USB-2.0 and USB-3.0 Host and Gadget Drivers on Linux - Operating Systems: Android
    Training USB Linux Drivers: Writing USB-2.0 and USB-3.0 host and gadget drivers on Linux - Operating Systems: Android D8 - USB Linux Drivers Writing USB-2.0 and USB-3.0 host and gadget drivers on Linux Objectives Learn to write Linux drivers for USB-2.0 and USB-3.0 Explore the Linux USB host-driver stack Learn the structure of USB device drivers Discover USB gagdet drivers (2.0 and 3.0) Understand the support for OTG-2.0 and OTG-3.0. Understand the specifics of the Linux kernel in the management of devices and drivers. Learn to configure the Linux kernel for optimal hotplug management. Understand how hotplug events are generated and how to use them in drivers. Install and use external hotplug daemons: udev, libusb, etc ... Discover Linux kernel changes up to the latest versions (up to 3.6.39 and 3.x). Master the techniques of kernel debugging. We use a recent linux kernel, as provided by the distribution used or available on www.kernel.org. Labs are conducted on target boards, that can be: Atmel ARM9-based boards, with Lauterbach JTAG probes. Labs are conducted using the System Workbench for Linux - Basic Edition IDE, for which all trainees will get a free license, so that they can continue to work, after the training, in a convenient and efficient environment. --> Course environment A PC workstation and a target board per two trainees group. Printed course material. Prerequisite Good practice of C programming on Linux Good knowledge of Linux kernel and driver programming (see our D3 - Linux Drivers course and D7 - Linux drivers hotplug and power management courses) Plan First day D8 - USB Linux Drivers 09/23/21 Reminders on kernel programming Reminders on kernel module development Kernel objects Exercice: Writing a kernel module creating and using kernel objects and sets The sysfs file system Exercice: Interacting with a kernel module through a kernel object and the sysfs file sytem Hotplug Hotplug in the kernel uevents Exercice: Writing a kernel module sending hotplug events to a user mode program.
    [Show full text]
  • Intel® Realsense™ SDK 2.0 Github User Guide
    Intel® RealSense™ SDK 2.0 Github User Guide May 2018 Revision 002 Document Number: 337595-002 You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with the system manufacturer or retailer or learn more at intel.com. Intel technologies may require enabled hardware, specific software, or services activation. Check with the system manufacturer or retailer. The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade. All information provided here is subject to change without notice. Contact the Intel representative to obtain the latest Intel product specifications and roadmaps. Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548- 4725 or visit www.intel.com/design/literature.htm.
    [Show full text]
  • Linux Kernel and Driver Development Training Slides
    Linux Kernel and Driver Development Training Linux Kernel and Driver Development Training © Copyright 2004-2021, Bootlin. Creative Commons BY-SA 3.0 license. Latest update: October 9, 2021. Document updates and sources: https://bootlin.com/doc/training/linux-kernel Corrections, suggestions, contributions and translations are welcome! embedded Linux and kernel engineering Send them to [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/470 Rights to copy © Copyright 2004-2021, Bootlin License: Creative Commons Attribution - Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Document sources: https://github.com/bootlin/training-materials/ - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/470 Hyperlinks in the document There are many hyperlinks in the document I Regular hyperlinks: https://kernel.org/ I Kernel documentation links: dev-tools/kasan I Links to kernel source files and directories: drivers/input/ include/linux/fb.h I Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/470 Company at a glance I Engineering company created in 2004, named ”Free Electrons” until Feb.
    [Show full text]
  • Linux Kernal II 9.1 Architecture
    Page 1 of 7 Linux Kernal II 9.1 Architecture: The Linux kernel is a Unix-like operating system kernel used by a variety of operating systems based on it, which are usually in the form of Linux distributions. The Linux kernel is a prominent example of free and open source software. Programming language The Linux kernel is written in the version of the C programming language supported by GCC (which has introduced a number of extensions and changes to standard C), together with a number of short sections of code written in the assembly language (in GCC's "AT&T-style" syntax) of the target architecture. Because of the extensions to C it supports, GCC was for a long time the only compiler capable of correctly building the Linux kernel. Compiler compatibility GCC is the default compiler for the Linux kernel source. In 2004, Intel claimed to have modified the kernel so that its C compiler also was capable of compiling it. There was another such reported success in 2009 with a modified 2.6.22 version of the kernel. Since 2010, effort has been underway to build the Linux kernel with Clang, an alternative compiler for the C language; as of 12 April 2014, the official kernel could almost be compiled by Clang. The project dedicated to this effort is named LLVMLinxu after the LLVM compiler infrastructure upon which Clang is built. LLVMLinux does not aim to fork either the Linux kernel or the LLVM, therefore it is a meta-project composed of patches that are eventually submitted to the upstream projects.
    [Show full text]
  • Oracle VM Virtualbox User Manual
    Oracle VM VirtualBox R User Manual Version 5.0.16 c 2004-2016 Oracle Corporation http://www.virtualbox.org Contents 1 First steps 11 1.1 Why is virtualization useful?............................. 12 1.2 Some terminology................................... 12 1.3 Features overview................................... 13 1.4 Supported host operating systems.......................... 15 1.5 Installing VirtualBox and extension packs...................... 16 1.6 Starting VirtualBox.................................. 17 1.7 Creating your first virtual machine......................... 18 1.8 Running your virtual machine............................ 21 1.8.1 Starting a new VM for the first time.................... 21 1.8.2 Capturing and releasing keyboard and mouse.............. 22 1.8.3 Typing special characters.......................... 23 1.8.4 Changing removable media......................... 24 1.8.5 Resizing the machine’s window...................... 24 1.8.6 Saving the state of the machine...................... 25 1.9 Using VM groups................................... 26 1.10 Snapshots....................................... 26 1.10.1 Taking, restoring and deleting snapshots................. 27 1.10.2 Snapshot contents.............................. 28 1.11 Virtual machine configuration............................ 29 1.12 Removing virtual machines.............................. 30 1.13 Cloning virtual machines............................... 30 1.14 Importing and exporting virtual machines..................... 31 1.15 Global Settings...................................
    [Show full text]
  • AVR32701: AVR32AP7 USB Performance
    AVR32701: AVR32AP7 USB Performance Features 32-bit • Linux USB bulk transfer performance ATSTK1000 (32-bit SDRAM bus width) Microcontrollers ATNGW100 (16-bit SDRAM bus width) GadgetFS driver and gadgetfs-test application USB performance measurement tool Application Note 1 Introduction This application note documents the USB bulk transfer performance of the ATSTK®1000 and ATNGW100 boards running a 2.6.22-amtel.3 Linux® kernel. The tests are based on the Linux USB gadget driver framework. Rev. 32069A-AVR32-01/08 2 Benchmarking tools 2.1 Host side On the host side a Linux application communicates with the USB driver over the libusb library. It scans all enumerated USB devices and searches for a matching vendor/product ID. If such devices are found it configures them, writes and reads a specified amount of data to and from the device and measures the time needed for the transfer. These measurements are used to document the USB bulk transfer performance. This tool is available with this application note. 2.2 Device side To avoid kernel programming, a user space interface is available, GadgetFS. This will transfer all requests not handled by the kernel to user space and thus allowing a developer easy access to the USB interface. To provide this user space API a special gadget driver is needed. This is the GadgetFS driver. After loading this gadget into the kernel it provides a file system for the developer that can be used to communicate with the USB system. 1. Load the GadgetFS driver > modprobe gadgetfs 2. Make a directory for the mountpoint > mkdir /dev/gadget 3.
    [Show full text]
  • Linux Crash HOWTO
    Linux Crash HOWTO Norman Patten [email protected] 2002−01−30 Revision History Revision 1.0 2002−01−30 Revised by: NM Initial release. This document describes the installation and usage of the LKCD (Linux Kernel Crash Dump) package. Linux Crash HOWTO Table of Contents 1. Introduction.....................................................................................................................................................1 1.1. Copyright and License......................................................................................................................1 2. How LKCD Works.........................................................................................................................................2 2.1. What You Need.................................................................................................................................2 3. Installation of lkcd..........................................................................................................................................3 3.1. Installing From Source Code............................................................................................................3 3.2. Building and Installing LKCD Utilities............................................................................................3 3.3. What Gets Installed...........................................................................................................................3 3.4. Installing LKCD Utilities From RPM..............................................................................................3
    [Show full text]