Kernel Linux « 8.1 Ricompilazione Del Kernel

Total Page:16

File Type:pdf, Size:1020Kb

Kernel Linux « 8.1 Ricompilazione Del Kernel 445 Capitolo 8 Kernel Linux « 8.1 Ricompilazione del kernel . 448 8.2 Compilazione del kernel in una distribuzione GNU/Linux Debian . .453 8.3 Elementi della configurazione . 455 8.3.1 General setup . .460 8.3.2 Enable loadable module support . 461 net 8.3.3 Processor type and features . 462 8.3.4 Power management and ACPI options . 465 8.3.5 Bus options . 466 informaticalibera. / 8.3.6 Executable file formats . 468 http:/ 8.3.7 Networking . 468 8.3.8 Device drivers . 474 8.3.9 Filesystems . 495 8.3.10 Kernel hacking . 498 8.4 Come fare per configurare correttamente il kernel che si vuole compilare . .500 8.5 Parametri di avvio del kernel Linux . 502 Daniele Giacomini -- [email protected] 8.5.1 File system principale (root) . 503 Copyright 8.5.2 Memoria . 504 8.5.3 Varie .......................................... 505 8.5.4 Interfacce di rete Ethernet . 507 2» 2013.11.11 --- a « 8.6 Gestione dei moduli . 509 446 volume I Sistemi GNU/Linux 8.6.1 Dipendenza tra i moduli . 509 8.6.2 Parametri . 510 8.6.3 Utilizzo di «insmod» . 511 8.6.4 Utilizzo di «rmmod» . 512 8.6.5 Utilizzo di «lsmod» . 512 8.6.6 Utilizzo di «depmod» . 514 8.6.7 Utilizzo di «modprobe» . 515 8.6.8 Informazione sui moduli . 518 8.7 Configurazione dei moduli . 518 8.7.1 Direttiva alias . 519 8.7.2 Direttiva options . 521 8.8 Firmware . 521 8.9 File di dispositivo . 524 8.9.1 Creazione dei file di dispositivo . 525 8.9.2 kernel Linux e uDev . 527 8.9.3 Messaggio: «unable to open an initial console» . 533 8.10 Disco RAM iniziale: Initrd . 534 8.10.1 Teoria e visione generale . 535 8.10.2 Creazione automatica di un disco RAM iniziale . 538 8.10.3 Esempio di un disco RAM iniziale . 539 8.11 Combinazioni magiche con «R sist», ovvero «SysRq» 542 8.12 Riferimenti . 546 Kernel Linux 447 depmod 514 insmod 511 lsmod 512 MAKEDEV 525 make-kpkg 453 mkinitrd 538 mknod 525 modinfo 518 modprobe 515 rmmod 512 udevd 527 Il kernel è il nocciolo del sistema operativo: i programmi utilizzano le funzioni fornite dal kernel e in questa maniera sono sollevati dal- l’agire direttamente con la CPU. Il kernel Linux è costituito da un file principale, il cui nome può essere ‘vmlinuz’, oppure ‘zImage’, ‘bzImage’ e altri ancora, ma può comprendere anche moduli ag- giuntivi per la gestione di componenti hardware specifici che de- vono poter essere attivati e disattivati durante il funzionamento del sistema. Quando si fa riferimento a un kernel in cui tutte le funzionalità che servono sono incluse nel file principale, si parla di kernel monoliti- co, mentre quando parte di queste sono demandate a moduli esterni, si parla di kernel modulare. Il kernel monolitico ha il vantaggio di avere tutto in un file, ma nello stesso modo è rigido e non permette di liberare risorse quando le unità periferiche gestite non servono. Il kernel modulare ha il vantaggio di poter disattivare e riattivare i mo- duli a seconda delle esigenze, in particolare quando moduli distinti gestiscono in modo diverso lo stesso tipo di unità periferica. Tutta- via, a causa della frammentazione in molti file, l’uso dei moduli può essere fonte di errori. In generale, chi fa per la prima volta l’esperienza di compilarsi un kernel personalizzato farebbe bene a cominciare incorporando nel file principale tutta la gestione delle memorie di massa, in modo da non dipendere dai moduli per l’innesto del file system principale. 448 volume I Sistemi GNU/Linux 8.1 Ricompilazione del kernel « Le distribuzioni GNU/Linux tendono a fornire agli utilizzatori un kernel modulare per usi generali. Anche se questo tipo di kernel si adatta sicuramente alla maggior parte delle configurazioni, ci so- no situazioni particolari dove è preferibile costruire un proprio ker- nel, monolitico o modulare che sia. Per poter comprendere il pro- cedimento di compilazione del kernel Linux, occorre sapere come si compila e si installa un programma tipico distribuito in forma sorgente, come descritto nella sezione 7.1. Per poter procedere alla compilazione del kernel è necessario avere installato gli strumenti di sviluppo software, cioè il compilatore e i sorgenti del kernel. In particolare, i sorgenti del kernel possono anche essere reperiti presso vari siti, ma principalmente da http:// www.kernel.org . Se i sorgenti sono stati installati come parte di una distribuzio- ne, questi potrebbero trovarsi da qualche parte a partire da ‘/usr/ src/’, ma la loro compilazione non richiede una collocazione par- ticolare nel file system, tanto che anche un utente comune, senza privilegi, può farlo, collocando i sorgenti nell’ambito della propria directory personale. In particolare, la distribuzione GNU/Linux De- bian si limita a piazzare un archivio (un file compresso) nella direc- tory ‘/usr/src/’, lasciando all’utente il compito di estrarlo dove meglio crede. Si parte con l’estrazione dell’archivio che contiene i sorgenti; natu- ralmente l’utente deve estrarre l’archivio in una posizione in cui gli sia concesso di farlo in base ai permessi che lo riguardano. Va tenuto presente che i sorgenti possono essere compilati da un utente comu- Kernel Linux 449 ne, anche se poi questo potrebbe non avere la facoltà di installare effettivamente il kernel prodotto in questo modo. $ tar xjvf linux-versione.tar.bz2 [ Invio ] Una volta estratti i sorgenti del kernel, si può passare alla configura- zione che precede la compilazione. Per questo, ci si posiziona nella directory dei sorgenti; quindi, dopo aver letto il file ‘README’, si può procedere. $ cd linux-versione [ Invio ] La directory corrente deve essere quella a partire dalla quale si diramano i sorgenti del kernel. $ make mrproper [ Invio ] Il comando ‘make mrproper’ serve a eliminare file e collegamen- ti vecchi che potrebbero interferire con una nuova compilazione. In particolare, elimina la configurazione data in precedenza alla compilazione del kernel. $ make defconfig [ Invio ] La prima volta che si procede a definire i contenuti di un proprio kernel, conviene partire da una configurazione predefinita, ottenibi- le con il comando ‘make defconfig’, appena mostrato. In prati- ca si ottiene un file ‘.config’ con la selezione delle voci ritenute fondamentali. Successivamente si passa alla fase di configurazione: $ make menuconfig [ Invio ] Questa è l’operazione più delicata attraverso la quale si definisco- no le caratteristiche e i componenti del kernel che si vuole ottene- re. Ogni volta che la si esegue, viene riutilizzato il file ‘.config’ 450 volume I Sistemi GNU/Linux contenente la configurazione impostata precedentemente, mentre al- la fine la nuova configurazione viene salvata nello stesso file. Di conseguenza, ripetendo il procedimento ‘make config’, le scelte predefinite corrispondono a quelle effettuate precedentemente.1 Il comando ‘make mrproper’ elimina il file ‘.config’, quindi si deve fare attenzione a non eseguire tale comando se non è questa l’intenzione. Figura| 8.1. Il menù principale della configurazione del kernel attraverso il comando ‘make menuconfig’. |.--------------- Linux Kernel Configuration ---------------. || Arrow keys navigate the menu. <Enter> selects submenus | || --->. Highlighted letters are hotkeys. Pressing <Y> | || includes, <N> excludes, <M> modularizes features. | || Press <Esc><Esc> to exit, <?> for Help, </> for Search. | || Legend: [*] built-in [ ] excluded <M> module < > | || .------------------------------------------------------. | || | General setup ---> | | || |[*] Enable loadable module support ---> | | || |-*- Enable the block layer ---> | | || | Processor type and features ---> | | || | Power management options (ACPI, APM) ---> | | || | Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> | | || | Executable file formats ---> | | || | Networking support ---> | | || ‘v(+)--------------------------------------------------’ | ||----------------------------------------------------------| || <Select> < Exit > < Help > | |‘----------------------------------------------------------’ Dopo la definizione della configurazione, si può passare alla com- Kernel Linux 451 pilazione del kernel relativo, utilizzando la sequenza di comandi seguente: $ make clean && make [ Invio ] Si tratta di due operazioni che non richiedono alcun tipo di intera- zione con l’utente. Al termine della compilazione, se questa ha avu- to successo, il nuovo kernel si trova nella directory ‘arch/i386/ boot/’ con il nome ‘bzImage’2 (questo vale naturalmente nel caso si utilizzi l’architettura x86). Naturalmente, per fare in modo che il kernel possa essere utilizza- to, questo va collocato dove il sistema che si occupa del suo avvio può trovarlo (capitolo 6). Di solito lo si copia nella directory radi- ce o in ‘/boot/’, dandogli il nome ‘vmlinuz’ (come di consueto), sistemando poi ciò che serve per il sistema di avvio che si utilizza. Generalmente, dal momento che si possono utilizzare più kernel alternativi, selezionandoli in fase di avvio, di solito il nome del file è completo della versione del kernel stesso: ‘vmlinuz-versione’. Inoltre, si conserva una copia del file ‘System.map’, mettendola nella stessa directory in cui si trova il kernel, con un nome del tipo ‘System.map-versione’; infine si fa la stessa cosa con il file ‘.config’, a cui si dà normalmente il nome ‘config-versione’. Se, in base alla configurazione, ciò che si vuole è ottenere soltanto un kernel monolitico (senza moduli), il procedimento si è conclu- so; diversamente occorre procedere con la compilazione dei moduli. Ma questi moduli, per poter essere gestiti correttamente, necessita- no di programmi di servizio che si occupano della loro attivazio- 452 volume I Sistemi GNU/Linux ne e disattivazione, i quali, a loro volta, potrebbero richiedere un aggiornamento in corrispondenza dell’uso di un nuovo kernel. I programmi di servizio di gestione dei moduli si trovano normal- mente in archivi il cui nome è organizzato in modo simile a quello dei sorgenti del kernel: ‘modules-versione.tar.gz’. La struttura della versione rappresentata dai numeri versione rispecchia lo stesso meccanismo utilizzato per i sorgenti del kernel, però non ne vengo- no prodotte altrettante versioni, pertanto si deve badare a utilizzare la versione più vicina a quella del kernel che si utilizza. Questo ar- chivio si trova normalmente nella stessa directory del sito dal qua- le si ottengono i sorgenti del kernel.
Recommended publications
  • Administration and Reference Guide
    Oracle® Database Appliance Administration and Reference Guide Release 12.2.1.4.0 for Linux x86-64 E97563-01 June 2018 Oracle Database Appliance Administration and Reference Guide, Release 12.2.1.4.0 for Linux x86-64 E97563-01 Copyright © 2014, 2018, 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 documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency- specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]
  • Release Notes for Debian GNU/Linux 5.0 (Lenny), Alpha
    Release Notes for Debian GNU/Linux 5.0 (lenny), Alpha The Debian Documentation Project (http://www.debian.org/doc/) November 11, 2010 Release Notes for Debian GNU/Linux 5.0 (lenny), Alpha Published 2009-02-14 This document is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; with- out even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. The license text can also be found at http://www.gnu.org/copyleft/gpl.html and /usr/ share/common-licenses/GPL-2 on Debian GNU/Linux. ii Contents 1 Introduction 3 1.1 Reporting bugs on this document . .3 1.2 Contributing upgrade reports . .3 1.3 Sources for this document . .4 2 What’s new in Debian GNU/Linux 5.05 2.1 What’s new in the distribution? . .5 2.1.1 Package management . .7 2.1.2 The proposed-updates section . .7 2.2 System improvements . .8 2.3 Major kernel-related changes . .8 2.3.1 Changes in kernel packaging . .8 2.4 Emdebian 1.0 (based on Debian GNU/Linux lenny 5.0) . .9 2.5 Netbook support .
    [Show full text]
  • Version 7.8-Systemd
    Linux From Scratch Version 7.8-systemd Created by Gerard Beekmans Edited by Douglas R. Reno Linux From Scratch: Version 7.8-systemd by Created by Gerard Beekmans and Edited by Douglas R. Reno Copyright © 1999-2015 Gerard Beekmans Copyright © 1999-2015, Gerard Beekmans All rights reserved. This book is licensed under a Creative Commons License. Computer instructions may be extracted from the book under the MIT License. Linux® is a registered trademark of Linus Torvalds. Linux From Scratch - Version 7.8-systemd Table of Contents Preface .......................................................................................................................................................................... vii i. Foreword ............................................................................................................................................................. vii ii. Audience ............................................................................................................................................................ vii iii. LFS Target Architectures ................................................................................................................................ viii iv. LFS and Standards ............................................................................................................................................ ix v. Rationale for Packages in the Book .................................................................................................................... x vi. Prerequisites
    [Show full text]
  • MINCS - the Container in the Shell (Script)
    MINCS - The Container in the Shell (script) - Masami Hiramatsu <[email protected]> Tech Lead, Linaro Ltd. Open Source Summit Japan 2017 LEADING COLLABORATION IN THE ARM ECOSYSTEM Who am I... Masami Hiramatsu - Linux kernel kprobes maintainer - Working for Linaro as a Tech Lead LEADING COLLABORATION IN THE ARM ECOSYSTEM Demo # minc top # minc -r /opt/debian/x86_64 # minc -r /opt/debian/arm64 --arch arm64 LEADING COLLABORATION IN THE ARM ECOSYSTEM What Is MINCS? My Personal Fun Project to learn how linux containers work :-) LEADING COLLABORATION IN THE ARM ECOSYSTEM What Is MINCS? Mini Container Shell Scripts (pronounced ‘minks’) - Container engine implementation using POSIX shell scripts - It is small (~60KB, ~2KLOC) (~20KB in minimum) - It can run on busybox - No architecture dependency (* except for qemu/um mode) - No need for special binaries (* except for libcap, just for capsh --exec) - Main Features - Namespaces (Mount, PID, User, UTS, Net*) - Cgroups (CPU, Memory) - Capabilities - Overlay filesystem - Qemu cross-arch/system emulation - User-mode-linux - Image importing from dockerhub And all are done by CLI commands :-) LEADING COLLABORATION IN THE ARM ECOSYSTEM Why Shell Script? That is my favorite language :-) - Easy to understand for *nix administrators - Just a bunch of commands - Easy to modify - Good for prototyping - Easy to deploy - No architecture dependencies - Very small - Able to run on busybox (+ libcap is perfect) LEADING COLLABORATION IN THE ARM ECOSYSTEM MINCS Use-Cases For Learning - Understand how containers work For Development - Prepare isolated (cross-)build environment For Testing - Test new applications in isolated environment - Test new kernel features on qemu using local tools For products? - Maybe good for embedded devices which has small resources LEADING COLLABORATION IN THE ARM ECOSYSTEM What Is A Linux Container? There are many linux container engines - Docker, LXC, rkt, runc, ..
    [Show full text]
  • Ivoyeur: Inotify
    COLUMNS iVoyeur inotify DAVE JOSEPHSEN Dave Josephsen is the he last time I changed jobs, the magnitude of the change didn’t really author of Building a sink in until the morning of my first day, when I took a different com- Monitoring Infrastructure bination of freeways to work. The difference was accentuated by the with Nagios (Prentice Hall T PTR, 2007) and is Senior fact that the new commute began the same as the old one, but on this morn- Systems Engineer at DBG, Inc., where he ing, at a particular interchange, I would zig where before I zagged. maintains a gaggle of geographically dispersed It was an unexpectedly emotional and profound metaphor for the change. My old place was server farms. He won LISA ‘04’s Best Paper off to the side, and down below, while my future was straight ahead, and literally under award for his co-authored work on spam construction. mitigation, and he donates his spare time to the SourceMage GNU Linux Project. The fact that it was under construction was poetic but not surprising. Most of the roads I [email protected] travel in the Dallas/Fort Worth area are under construction and have been for as long as anyone can remember. And I don’t mean a lane closed here or there. Our roads drift and wan- der like leaves in the water—here today and tomorrow over there. The exits and entrances, neither a part of this road or that, seem unable to anticipate the movements of their brethren, and are constantly forced to react.
    [Show full text]
  • Embedded Systems 2/7
    Embedded systems 2/7 J.-M Friedt Introduction Virtual memory access Embedded systems 2/7 Kernel module basics Using the kernel: timers J.-M Friedt Conclusion & lab session FEMTO-ST/d´epartement temps-fr´equence [email protected] slides at jmfriedt.free.fr September 9, 2020 1 / 24 Embedded systems 2/7 J.-M Friedt Operating system: the need for Introduction drivers Virtual memory access Kernel module basics Using the kernel: timers • Hardware abstraction: hide low level functions so that the developer Conclusion & lab session can focus on the functionalities provided by the peripheral ! a single entry point providing system calls (open, read, write, close) hiding access to hardware • Homogeneous interface to all peripherals (\Everything is a file") • Only the kernel can access hardware resources (DMA, interrupts) • Share resources and make sure only one process can access a given hardware function • Add functionalities to the Linux kernel: modules 2 / 24 Embedded systems 2/7 J.-M Friedt Virtual memory/hardware memory Introduction Hardware memory addressing Virtual memory • hardware memory: a value on the address bus identifies which access peripheral is active Kernel module basics • each peripheral decodes the address bus to detect whether it is the Using the kernel: target of a message timers • Conclusion & lab only one peripheral must match a given physical address (otherwise, session conflict) Virtual memory addressing • each process has its own address space • memory organization independent of physical constraints • dynamic loading
    [Show full text]
  • Hardening Linux
    eBooks-IT.org 4444_FM_final.qxd 1/5/05 12:39 AM Page i eBooks-IT.org Hardening Linux JAMES TURNBULL 4444_FM_final.qxd 1/5/05 12:39 AM Page ii eBooks-IT.org Hardening Linux Copyright © 2005 by James Turnbull All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 1-59059-444-4 Printed and bound in the United States of America 987654321 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jim Sumser Technical Reviewer: Judith Myerson Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Chris Mills, Dominic Shakeshaft, Jim Sumser Project Manager: Kylie Johnston Copy Edit Manager: Nicole LeClerc Copy Editor: Kim Wimpsett Production Manager: Kari Brooks-Copony Production Editor: Kelly Winquist Compositor: Linda Weidemann Proofreader: Lori Bring Indexer: Kevin Broccoli Artist: Kinetic Publishing Services, LLC Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013, and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany. In the United States: phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springer-ny.com.
    [Show full text]
  • Pipewire: a Low-Level Multimedia Subsystem
    Proceedings of the 18th Linux Audio Conference (LAC-20), SCRIME, Université de Bordeaux, France, November 25–27, 2020 PIPEWIRE: A LOW-LEVEL MULTIMEDIA SUBSYSTEM Wim Taymans ∗ Principal Software Engineer Red Hat, Spain [email protected] ABSTRACT 2. LINUX AUDIO LANDSCAPE PipeWire is a low-level multimedia library and daemon that facili- Audio support on Linux first appeared with the Open Sound System tates negotiation and low-latency transport of multimedia content be- (OSS) [6] and was until the 2.4 kernel the only audio API available tween applications, filters and devices. It is built using modern Linux on Linux. It was based around the standard Unix open/close/read- infrastructure and has both performance and security as its core de- /write/ioctl system calls. sign guidelines. The goal is to provide services such as JACK and OSS was replaced by the Advanced Linux Sound Architecture PulseAudio on top of this common infrastructure. PipeWire is media (ALSA) [7]from Linux 2.5. ALSA improved on the OSS API and agnostic and supports arbitrary compressed and uncompressed for- included a user space library that abstracted many of the hardware mats. A common audio infrastructure with backwards compatibility details. The ALSA user-space library also includes a plugin infras- that can support Pro Audio and Desktop Audio use cases can poten- tructure that can be used to create new custom devices and plugins. tially unify the currently fractured audio landscape on Linux desk- Unfortunately, the plugin system is quite static and requires editing tops and workstations and give users and developers a much better of configuration files.
    [Show full text]
  • MC-1200 Series Linux Software User's Manual
    MC-1200 Series Linux Software User’s Manual Version 1.0, November 2020 www.moxa.com/product © 2020 Moxa Inc. All rights reserved. MC-1200 Series 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 © 2020 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]
  • The Linux Device File-System
    The Linux Device File-System Richard Gooch EMC Corporation [email protected] Abstract 1 Introduction All Unix systems provide access to hardware via de- vice drivers. These drivers need to provide entry points for user-space applications and system tools to access the hardware. Following the \everything is a file” philosophy of Unix, these entry points are ex- posed in the file name-space, and are called \device The Device File-System (devfs) provides a power- special files” or \device nodes". ful new device management mechanism for Linux. Unlike other existing and proposed device manage- This paper discusses how these device nodes are cre- ment schemes, it is powerful, flexible, scalable and ated and managed in conventional Unix systems and efficient. the limitations this scheme imposes. An alternative mechanism is then presented. It is an alternative to conventional disc-based char- acter and block special devices. Kernel device drivers can register devices by name rather than de- vice numbers, and these device entries will appear in the file-system automatically. 1.1 Device numbers Devfs provides an immediate benefit to system ad- ministrators, as it implements a device naming scheme which is more convenient for large systems Conventional Unix systems have the concept of a (providing a topology-based name-space) and small \device number". Each instance of a driver and systems (via a device-class based name-space) alike. hardware component is assigned a unique device number. Within the kernel, this device number is Device driver authors can benefit from devfs by used to refer to the hardware and driver instance.
    [Show full text]
  • Oracle® Secure Global Desktop Platform Support and Release Notes for Release 5.2
    Oracle® Secure Global Desktop Platform Support and Release Notes for Release 5.2 April 2015 E51729-03 Oracle Legal Notices Copyright © 2015, 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 documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S.
    [Show full text]
  • Singularityce User Guide Release 3.8
    SingularityCE User Guide Release 3.8 SingularityCE Project Contributors Aug 16, 2021 CONTENTS 1 Getting Started & Background Information3 1.1 Introduction to SingularityCE......................................3 1.2 Quick Start................................................5 1.3 Security in SingularityCE........................................ 15 2 Building Containers 19 2.1 Build a Container............................................. 19 2.2 Definition Files.............................................. 24 2.3 Build Environment............................................ 35 2.4 Support for Docker and OCI....................................... 39 2.5 Fakeroot feature............................................. 79 3 Signing & Encryption 83 3.1 Signing and Verifying Containers.................................... 83 3.2 Key commands.............................................. 88 3.3 Encrypted Containers.......................................... 90 4 Sharing & Online Services 95 4.1 Remote Endpoints............................................ 95 4.2 Cloud Library.............................................. 103 5 Advanced Usage 109 5.1 Bind Paths and Mounts.......................................... 109 5.2 Persistent Overlays............................................ 115 5.3 Running Services............................................. 118 5.4 Environment and Metadata........................................ 129 5.5 OCI Runtime Support.......................................... 140 5.6 Plugins.................................................
    [Show full text]