Microkernel-Betriebssysteme Mach, L4, Hurd

Total Page:16

File Type:pdf, Size:1020Kb

Microkernel-Betriebssysteme Mach, L4, Hurd Konzepte von Betriebssystem-Komponenten Microkernel-Betriebssysteme Mach, L4, Hurd 14. November 2002 Holger Ruckdeschel [email protected] Konzepte von Betriebssystem-Komponenten 1 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Übersicht Gegenüberstellung: Monolithischer Kernel - Microkernel Der Mach Microkernel Der L4 Microkernel GNU Hurd Geschwindigkeitsvergleich: Mach - L4 Konzepte von Betriebssystem-Komponenten 2 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Monolithischer Kernel Klassischer Ansatz (Unix) Alle BS-Komponenten in Kern integriert Gemeinsamer Adressraum Konzepte von Betriebssystem-Komponenten 3 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Monolithischer Kernel Anwendung Anwendung Anwendung User Mode Kernel Mode API Prozess- Speicher- Datei- ... manager manager system Konzepte von Betriebssystem-Komponenten 4 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Monolithischer Kernel Vorteile effiziente Kommunikation im Kern Hardwarezugriffe jederzeit und unmittelbar durchführbar Nachteile kein Zugriffsschutz zwischen den Komponenten undurchsichtige Struktur Konzepte von Betriebssystem-Komponenten 5 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Microkernel Auslagerung von BS-Komponenten in Server BS-Komponenten in getrennten Speicherbereichen Kernel bietet lediglich einfaches Prozessmanagement einfaches Speichermanagement effiziente Wege zur Inter-Prozess-Kommunikation (IPC) Konzepte von Betriebssystem-Komponenten 6 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Microkernel Datei- Anwendung Anwendung ... system User Mode Kernel Mode API Prozess- Speicher- manager manager Konzepte von Betriebssystem-Komponenten 7 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Microkernel Vorteile Schutz der BS-Komponenten voreinander hohe Flexibilität Nachteile Kommunikation ist teuer Konzepte von Betriebssystem-Komponenten 8 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Mach Ausgangspunkt 4.2BSD Schrittweiser Tausch von BSD- gegen Mach-Code ¡ Mach Release 2 4.3BSD kompatibel monolithisch Auslagerung von BSD-Komponenten in Server ¡ Mach Release 3 Unix-frei Microkernel Geräteschnittstelle Konzepte von Betriebssystem-Komponenten 9 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Mach - Konzepte Task Textsegment Threads Nachricht Ports Datensegment nach: Silberschatz Konzepte von Betriebssystem-Komponenten 10 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 L4 Von Anfang an als Microkernel entworfen Erste Version: L4/x86 Heute: verschiedene Architekturen Alpha MIPS StrongARM PowerPC IA64 Konzepte von Betriebssystem-Komponenten 11 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 L4 - Konzepte Flexpages Virtuelle Adressräume bestehen aus Flexpages Ein- und Ausblenden von Flexpages mit grant, map, flush Threads Tasks Clans Gruppe von Tasks mit privilegiertem Chief kein eigenes I/O-System Konzepte von Betriebssystem-Komponenten 12 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 L4 - I/O Keine I/O-Schnittstelle im Kernel Gerätetreiber im User-Mode Einblenden der I/O-Adressräume in Tasks Weiterleitung von IRQs als IPC-Nachrichten Konzepte von Betriebssystem-Komponenten 13 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 GNU Hurd Microkernel-Betriebssystem auf Basis von GNU Mach Kernel enthält Gerätetreiber Server für Dateisysteme (ext2, isofs u.a.) Netzwerkprotokolle (IP, ...) ... spezielle Bibliotheken (z.B. libext2fs) spezielle Utilities (z.B. settrans) Konzepte von Betriebssystem-Komponenten 14 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 GNU Hurd Beispiel für Hurd-Systemkommando: Dateisystem mounten settrans -c /mountpoint /hurd/ext2fs /dev/hd0s1 ext2fs-Server läuft als normaler Prozess Jeder Benutzer kann eigene Server schreiben und starten Zum Vergleich: Linux mount /dev/hda1 /mountpoint -t ext2 Befehl direkt an Kernel Kernel muss Dateisystem bereitstellen Konzepte von Betriebssystem-Komponenten 15 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Geschwindigkeitsvergleich Vergleich von Linux (monolithisch) MkLinux (auf Mach aufsetzend) L4Linux (auf L4 aufsetzend) Konzepte von Betriebssystem-Komponenten 16 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003 Geschwindigkeitsvergleich Low-Level Benchmark: getpid()-Aufruf Linux 1,68 µs L4Linux 3,95 µs MkLinux 110,60 µs High-Level Benchmark: Übersetzen des Linux-Servers Linux 476 s L4Linux 506 s MkLinux 605 s Konzepte von Betriebssystem-Komponenten 17 Microkernel-Betriebssysteme (Mach, L4, Hurd) Holger Ruckdeschel, WS 2002/2003.
Recommended publications
  • Mach-O Internals
    Mach-O Internals William Woodru February 10, 2016 1 / 31 General Agenda 1. Who are you? 2. What is Mach-O? 3. An Extremely Brief History of Mach and Mach-O 4. Structure of a Mach-O File 5. Quirks Encountered 6. Concluding Notes 2 / 31 Who are you? My name is William Woodru. I'm a Computer Science major and Philosophy minor at the University of Maryland, College Park. Outside of school, I'm a member of the Homebrew project and a regular contributor to several open source groups. My work for Homebrew is largely concerned with the underlying system interface and reconciling OS X's intricacies/irregularities with the package manager. 3 / 31 What is Mach-O? Mach-O is the Mach Object binary format. Mach-O is used primarily by Apple in OS X and iOS. Apps on both platforms are really just directory trees containing Mach-O binaries and resources (fonts, icons, congurations). Metadata is stored in a number of places, but mainly within bundled plists (XML) and the binaries themselves. Like its cousins on Linux (ELF) and Windows (PE), Mach-O supports multiple object types: I Executable I Core dump I Shared library/object I Prelinked object le I etc. 4 / 31 . and multiple architectures: I m68k/m88k (yes, it's still supported!*) I x86 I AMD64 I POWER I ARMv6/7/8 Unlike ELF or PE, Mach-O has been extended to allow multi-architecture fat binaries. This has resulted in some interesting properties not shared by the other two. More on that later.
    [Show full text]
  • The GNU Hurd
    The GNU Hurd [Extended Abstract] Gael¨ Le Mignot ABSTRACT speak of, say, storage devices, there are IDE disks, This is an abstract of the talk given at LSM 2005, about the SCSI disks, floppy disks, tapes, USB devices, FireWire GNU Hurd, its goals, its design, its features and its relation- devices, parallel port devices, ... should every program ship with the GNU project. This is a general presentation know how to put into motion the floppy disk engine ? of the GNU Hurd, mostly on technical aspects. Providing an hardware abstraction layer is one of the major goals of operating systems. 1. INTRODUCTION Resource sharing. Resources on a computer are limited. 1.1 What is an operating system ? Be it main memory, CPU power, hard disk storage, 1.1.1 Historical point of view screen area, networking connection, or sound output, The first computers were so expensive that only one existed those resources must be controlled by a supervisor pro- for a whole university or research department; and so slow gram, allowing each of the programs to access to a part that it was unthinkable to interact with it in real time. This of it as needed. was the era of batch processing, when programmers cre- ated self-running programs called “batch”. Those programs Security infrastructure. All modern operating systems usually took several hours to run, printing huge listing as can enforce several kinds of security. Security can be output. Programs were run one after the other. used to prevent a user from accessing confidential or private data of another user, to prevent accidental re- Then, computers became more efficient.
    [Show full text]
  • A Brief History of Debian I
    A Brief History of Debian i A Brief History of Debian A Brief History of Debian ii 1999-2020Debian Documentation Team [email protected] Debian Documentation Team This document may be freely redistributed or modified in any form provided your changes are clearly documented. This document may be redistributed for fee or free, and may be modified (including translation from one type of media or file format to another or from one spoken language to another) provided that all changes from the original are clearly marked as such. Significant contributions were made to this document by • Javier Fernández-Sanguino [email protected] • Bdale Garbee [email protected] • Hartmut Koptein [email protected] • Nils Lohner [email protected] • Will Lowe [email protected] • Bill Mitchell [email protected] • Ian Murdock • Martin Schulze [email protected] • Craig Small [email protected] This document is primarily maintained by Bdale Garbee [email protected]. A Brief History of Debian iii COLLABORATORS TITLE : A Brief History of Debian ACTION NAME DATE SIGNATURE WRITTEN BY September 14, 2020 REVISION HISTORY NUMBER DATE DESCRIPTION NAME A Brief History of Debian iv Contents 1 Introduction -- What is the Debian Project? 1 1.1 In the Beginning ................................................... 1 1.2 Pronouncing Debian ................................................. 1 2 Leadership 2 3 Debian Releases 3 4 A Detailed History 6 4.1 The 0.x Releases ................................................... 6 4.1.1 The Early Debian Packaging System ..................................... 7 4.2 The 1.x Releases ................................................... 7 4.3 The 2.x Releases ................................................... 8 4.4 The 3.x Releases ................................................... 8 4.5 The 4.x Releases ..................................................
    [Show full text]
  • Multiboot Specification Version 0.6.96
    The Multiboot Specification version 0.6.96 Yoshinori K. Okuji, Bryan Ford, Erich Stefan Boleyn, Kunihiro Ishiguro Copyright c 1995,96 Bryan Ford <[email protected]> Copyright c 1995,96 Erich Stefan Boleyn <[email protected]> Copyright c 1999,2000,2001,2002,2005,2006,2009,2010 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire result- ing derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. Chapter 1: Introduction to Multiboot Specification 1 1 Introduction to Multiboot Specification This chapter describes some rough information on the Multiboot Specification. Note that this is not a part of the specification itself. 1.1 The background of Multiboot Specification Every operating system ever created tends to have its own boot loader. Installing a new operating system on a machine generally involves installing a whole new set of boot mech- anisms, each with completely different install-time and boot-time user interfaces. Getting multiple operating systems to coexist reliably on one machine through typical chaining mechanisms can be a nightmare. There is little or no choice of boot loaders for a particular operating system | if the one that comes with the operating system doesn't do exactly what you want, or doesn't work on your machine, you're screwed.
    [Show full text]
  • Linux Kernel Series
    Linux Kernel Series By Devyn Collier Johnson More Linux Related Stuff on: http://www.linux.org Linux Kernel – The Series by Devyn Collier Johnson (DevynCJohnson) [email protected] Introduction In 1991, a Finnish student named Linus Benedict Torvalds made the kernel of a now popular operating system. He released Linux version 0.01 on September 1991, and on February 1992, he licensed the kernel under the GPL license. The GNU General Public License (GPL) allows people to use, own, modify, and distribute the source code legally and free of charge. This permits the kernel to become very popular because anyone may download it for free. Now that anyone can make their own kernel, it may be helpful to know how to obtain, edit, configure, compile, and install the Linux kernel. A kernel is the core of an operating system. The operating system is all of the programs that manages the hardware and allows users to run applications on a computer. The kernel controls the hardware and applications. Applications do not communicate with the hardware directly, instead they go to the kernel. In summary, software runs on the kernel and the kernel operates the hardware. Without a kernel, a computer is a useless object. There are many reasons for a user to want to make their own kernel. Many users may want to make a kernel that only contains the code needed to run on their system. For instance, my kernel contains drivers for FireWire devices, but my computer lacks these ports. When the system boots up, time and RAM space is wasted on drivers for devices that my system does not have installed.
    [Show full text]
  • Virtualization on the Hurd
    Virtualization on the Hurd Justus Winter <[email protected]> 2017-02-04 Justus Winter <[email protected]> Virtualization on the Hurd 2017-02-04 1 / 12 What is the Hurd, and why should I care? general-purpose multiserver operating system GNU: replacement for traditional OS kernel that didn’t happen. me: an independent long-term research project it exists and is highly compatible (glibc, Debian/Hurd) learn systems programming learn to contribute to (GNU) projects free ones mind from narrow definitions of what an OS can do and be Freedom #0: The freedom to run the program as you wish, for any purpose. Justus Winter <[email protected]> Virtualization on the Hurd 2017-02-04 2 / 12 Virtualization virtualization is everywhere, and not going away anytime soon different goals ease management (teh cloud) increase isolation development testing granularity coarse-grained (bochs, qemu, . ) somewhere in between ({LD_LIBRARY_,}PATH) fine-grained (LD_PRELOAD trickery) Renzo Davoli’s definition Virtualization is the ability to replace / interpose a resource. My definition Virtualization is the ability to freely shape the computation environment. Justus Winter <[email protected]> Virtualization on the Hurd 2017-02-04 3 / 12 Subhurds: coarse-grained virtualization one kernel, multiple logical systems a bit like containers, zones, jails, . tricky to do on monolithic systems a decade of getting namespaces right in Linux next to trivial on multiservers Booting a Subhurd $ boot /dev/sd1s1 /hurd/ext2fs.static --readonly[...] -T device pseudo-root /lib/ld.so /hurd/exec
    [Show full text]
  • GNU/Hurd DDE Userland Device Drivers
    GNU/Hurd DDE userland device drivers Samuel Thibault 2014 February 2nd 1 It's all about freedom #0 “The freedom to run the program, for any purpose” I.e.: ● Freedom from sysadmin! ● WTH is fdisk/mke2fs/... hidden in /sbin? ● I should be able to just work with my disk/network access ● Freedom to innovate ● Experimental filesystem, personal work-flow, new kind of process combination,... ● Also provide freedom from misbehaving programs and drivers 2 It's all about freedom #0 From: xxx <[email protected]> Subject: Network expertise Date: Thu, 31 Jan 2013 12:37:34 +0100 [¼] Would it be possible to route to my VPN the traffic of only one application? Actually, also well-known classical issue of full-VPN: traffic of the VPN itself shouldn't go through the VPN! And yet, here root capabilities!! Spoiler: Yes, GNU/Hurd can already do it. Without even asking root. 3 It's all about freedom #0 Extensibility for the user ● Mount one's own files ● Access archives content ● Access remote files ● Experiment with filesystems ● Access one's own network ● Access remote networks / VPN ● Access virtual machine network ● Redirect one's sound ● Through network ● Sound effects ● Recording ● … ● and Flexible hardware support 4 Outline ● Hurd architecture Overview ● Network flexibility ● DDE stack ● Console support ● Hardware support ● Releases & future 7 Micro-kernel layering ext2fs sh auth cp pfinet proc root user Kernel Tasks, memory, IPC 15 Micro-kernel layering ext2fs sh auth cp pfinet proc root user Kernel Tasks, memory, IPC 16 Micro-kernel layering ● Server crash? Not a problem ● “Computer bought the farm” is just an error, not something-of-the-death ● Easier to debug/tune ● Just run gdb, gprof, … ● Can dare crazy things ● The Hurd console has dynamic font support – See chinese support in pseudo-graphical mode (actually pure VGA textmode!) of Debian installer.
    [Show full text]
  • The Linux Kernel: Configuring the Kernel Part 22
    The Linux Kernel: Configuring the Kernel Part 22 In this article, we will continue to configure the kernel hacks and then we will configure the whole security system. The next feature to configure is needed by Alpha and s390 processor (Force weak per­cpu definitions). This feature offers a fix for an addressing issue commonly seen in such processors. Other processors do not need this feature enabled. Kernel dumps can be tested with this special debugging tool (Linux Kernel Dump Test Tool Module). This software will allow a kernel developer to trigger a fake error that will cause a kernel dump. The kernel developers can then ensure that the dumps complete successfully. The kernel offers some different error injection modules that allow kernel developers to test the notifiers (CPU notifier error injection module), (PM notifier error injection module), and (Memory hotplug notifier error injection module). A notifier informs the system that the hardware is present, which is important for hotplugging. These error injection modules trigger an error in this notification system so developers can test the notification system's error handling abilities. The "Fault­injection framework" driver offers various tools for testing fault­handling. The "Latency measuring infrastructure" driver provides the LatencyTOP tool used to find the userspace object that is blocking/interfering with a kernel execution/task. Next, we have a sub­menu titled "Tracers" that contains a list of various tracers. A tracer is a piece of code that watches various kernel functions. Every time a particular function starts, a tracer will be called to watch the function.
    [Show full text]
  • Architectures, Microkernels, IPC, Capabilities Architectures, Microkernels, IPC, Capabilities
    Architectures,Architectures, Microkernels,Microkernels, IPC,IPC, CapabilitiesCapabilities http://d3s.mff.cuni.czhttp://d3s.mff.cuni.cz/aosy Jakub Jermář [email protected] AgendaAgenda Kernel architectures Microkernels IPC Capabilities Jakub Jermář, Advanced Operating Systems, February 28th 2019 Architectures 2 Recall:Recall: CommonCommon OSOS TaxonomyTaxonomy Special-purpose operating systems Real-time operating systems Hypervisors (type 1) ... General-purpose operating systems Monolithic kernel Single-server microkernel Multiserver microkernel Hybrid kernel (?) Jakub Jermář, Advanced Operating Systems, February 28th 2019 Architectures 3 MonolithicMonolithic KernelKernel application application application unprivileged mode privileged mode monolithic kernel memory device file system user network mgmt scheduler IPC drivers drivers mgmt stack ... hardware Jakub Jermář, Advanced Operating Systems, February 28th 2019 Architectures 4 SomeSome ObviousObvious IssuesIssues Security Applications trust all kernel components Kernel components trust all other kernel components Reliability Kernel components are a single point of failure Availability Kernel components cannot be updated independently Justifiability Who says file systems, networking, device drivers, etc. belong to the kernel? Jakub Jermář, Advanced Operating Systems, February 28th 2019 Architectures 5 SomeSome ObviousObvious IssuesIssues (2)(2) Extensibility How to extend the system without modifying the kernel Too many communication mechanisms Unix: pipes, files, shared memory,
    [Show full text]
  • GNU Hurd Workshop
    Indian GNU/Linux Users' Group, Chennai (ILUGC) presents GNU Hurd Workshop conducted by Shakthi Kannan , MS Venue Madras Institute of Technology, Chennai Introduction Free software ✔ Free software licenses ✔ Freedom from software patents ✔ User freedom Richard M Stallman “The Danger of Software Patents” (IIT-Madras) http://www.chennailug.org/meeting/info/TheDangerOfSWPatent1of2.ogg http://www.chennailug.org/meeting/info/TheDangerOfSWPatent2of2.ogg http://www.cs.iitm.ernet.in/~ramk/stallman.wav GNU Hurd Overview ➔ Multi-server ➔ POSIX compliant ➔ User extensible system framework ➔ Top of GNU Mach microkernel GNU Hurd History 1983 GNU Project started by Richard Stallman 1988 Decision made to use Mach 3.0 as the kernel 1991 Mach 3.0 is released under compatible license 1991 Thomas Bushnell, BSG, starts the Hurd project 1994 The Hurd boots the first time 1997 Version 0.2 of the Hurd is released 1998 Debian hurd-i386 archive is created 2001 Debian GNU/Hurd snapshot three CD images GNU Hurd Kernel Architectures Monolithic Microkernels ● Device drivers ● Resource management ● Network protocols ● Task management ● Process ● IPC management ● Basic hardware support ● Authentication ● File systems ● Scheduling GNU Hurd Single/Multi-server models Single-server Multi-server ● Single task ● Multiple tasks ● Comparable to ● Cooperative monolithic kernel ● Responsibilities distributed logically ● Stability ● Scalability GNU Hurd GNU Hurd allows users to: ➔ write and run their own servers ➔ replace system servers dynamically with their own implementations
    [Show full text]
  • System GNU/Hurd on Architecture X86 Bachelor Project
    Brno University of Technology Faculty of Information Technology System GNU/Hurd on Architecture x86 Bachelor Project 2006 ZbynˇekMichl System GNU/Hurd on Architecture x86 Submitted in partial fulfillment of the requirements for the degree of Bachelor of Information Technology at Brno University of Technology, Faculty of Information Technology, April 27, 2006 c Zbynˇek Michl, 2006 The author thereby grants persmission to reproduce and distribute copies of this document in whole or in part to Brno University of Technology, Faculty of Information Technology. Declaration I hereby declare that I have created this project on my own and under the supervision of Ing. Tom´aˇsKaˇsp´arek. I have listed all information sources which I used. ....................... ZbynˇekMichl April 27, 2006 Abstract This project focuses on the GNU Hurd operating system. The first part presents concept of the Hurd, Mach and L4 microkernels that create a base of the whole system. The second part describes a few installation procedures of the Hurd on x86 architecture. Current status of the Hurd and presumption of the future development is also mentioned. Keywords Coyotos, Debian, GNU, GPL, Grub, Hurd, Hurd-NG, kernel, kernel space, L4, L4.Sec, Mach, microkernel, ngHurd, operating system, Pistachio, POSIX, server, translator, UNIX, user space. Acknowledgements First, I would like to thank my supervisor Ing. Tom´aˇsKaˇsp´arek for the opportunity to work on this project and for the time to discuss problems with him. My special thanks go to my family for the possibility to study in Brno and for their constant support all the time as well as to my friends for their encouragement.
    [Show full text]
  • Mach Micro Kernel – a Case Study Viswanath Veerappan University of Texas Arlington
    Mach micro kernel – A case study Viswanath Veerappan University of Texas Arlington This paper documents the architecture of the MACH kernel. It is assumed that the reader is familiar with basic ideas of an operating system and the functions of a kernel. Emphasis is placed on the features that make MACH unique from other kernels. This paper satisfies partially the course requirements of cse6306 (University ofTexas,Arlington). Abstract Shared memory multiprocessors are becoming increasingly available, and with them a faster way to program applications and system services via the use of shared memory. The major limitation in using shared memory is that it is not extensible network-wise, and therefore is not suited for building distributed applications. The MACH operating system kernel was designed in order to overcome this problem. MACH supports distributed and parallel computation with environments consisting of multiprocessors and network of uniprocessrs. The MACH operating system can be used as a system software kernel, which can support a variety of operating system environments. 1. Introduction Operating systems have become increasingly large complex and expensive to maintain over the years. The software problems faced by manufacturers are magnified by a need for compatibility with the old and new memory architectures, CPU architectures and I/O organizations. MACH is an operating system kernel developed at Carnegie-Mellon University to support distributed and parallel computation [2]. MACH incorporates in one system a number of key facilities, which distinguish it from earlier virtual machine systems. It is a communication- oriented operating system kernel providing a) multiple tasks, each with a large, paged virtual memory space, b) multiple threads of execution within each task, with a flexible c) scheduling facility, d) flexible sharing of memory between tasks, e) message-based inter-process communication, f) transparent network extensibility, and g) a flexible capability-based approach to security and protection.
    [Show full text]