Phoenix Technologies

Coordinates: 37°24′50.2″N 121°55′30″W / 37.413944°N 121.92500°W / 37.413944; -121.92500

Phoenix Technologies Ltd.
Type
Subsidiary
Industry Software
Founded 1979
Headquarters Campbell, California
Key people
Larry Gill, President and Chief Executive Officer
Products BIOS: SecureCore Technology, SecureCore Tiano, TrustedCore, AwardCore, AwardCore Tiano, MicroCore. Consumer products: SecureWipe 2.0, FailSafe, HyperSpace, DriverAgent, BIOSAgentPlus, RegistryWizard, Undelete-Plus
Revenue Decrease$67.7 Million USD (2009)[1]
Number of employees
~300
Parent Marlin Equity Partners
Subsidiaries iolo Technologies [Wikidata][2][3]
Website www.phoenix.com/ Edit this on Wikidata

Phoenix Technologies Ltd is an American company that designs, develops and supports core system software for personal computers and other computing devices. The company’s products – commonly referred to as BIOS (Basic Input/Output System) or firmware – support and enable the compatibility, connectivity, security and management of the various components and technologies used in such devices. Phoenix Technologies and IBM developed the El Torito standard.

Phoenix was incorporated in Massachusetts in September 1979, and its headquarters are in Campbell, California.[4]

Contents

  • 1 History

    • 1.1 Cloning the IBM PC BIOS
    • 1.2 1987–1989
    • 1.3 1990s
    • 1.4 2001–2003
    • 1.5 2005–2008
    • 1.6 2009–2010
  • 2 See also
  • 3 References
  • 4 External links

History

In 1979, Neil Colvin formed what was then called Phoenix Software Associates after his prior employer, Xitan, went out of business. Neil hired Dave Hirschman, a former Xitan employee. During 1980–1981, they rented office space for the first official Phoenix location at 151 Franklin Street, Boston, Massachusetts.

In this same time period Phoenix purchased a non-exclusive license for Seattle Computer Products 86-DOS. Phoenix developed customized versions of 86-DOS (or sometimes called PDOS for Phoenix DOS) for various microprocessor platforms. Phoenix also provided PMate as a replacement for Edlin as the DOS file editor. Phoenix also developed C language libraries, called PForCe, along with Plink-86/Plink-86plus, overlay linkers, and Pfix-86, a windowed Debugger for DOS. These products only provided a small revenue stream to Phoenix during the early 1980s and the company did not significantly expand in size.

Cloning the IBM PC BIOS

After the success of the IBM PC, many companies began making PC clones. Some, like Compaq, developed their own compatible ROM BIOS, but others violated copyright by directly copying the PC’s BIOS from the IBM PC Technical Reference Manual. After Apple Computer, Inc. v. Franklin Computer Corp. IBM sued companies that it claimed infringed IBM’s copyright. Clone manufacturers needed a legal, fully compatible BIOS.[5][6][7]

To develop a legal BIOS, Phoenix used a clean room technique. Engineers read the BIOS source listings in the IBM PC Technical Reference Manual. They wrote technical specifications for the BIOS APIs for a single, separate engineer—one with experience programming the Texas Instruments TMS9900, not the Intel 8088 or 8086—who had not been exposed to IBM BIOS source code. The single engineer developed code to mimic the BIOS APIs. By recording the audit trail of the two groups’ interactions, Phoenix developed a defensibly non-infringing IBM PC compatible ROM BIOS. Because the programmers who wrote the Phoenix code never read IBM’s reference manuals, nothing they wrote could have been copied from IBM’s code, no matter how closely the two matched.[6][7] This reverse engineering technique is commonly referred to as a “Chinese wall.”

The first Phoenix PC ROM BIOS was introduced in May 1984, which enabled OEMs to build essentially 100%-compatible clones without having to reverse-engineer the IBM PC BIOS themselves, as Compaq had done for the Portable, helping fuel the growth in the PC compatibles industry and sales of non-IBM versions of DOS.[8]

Phoenix licensed the BIOS to clone makers for $290,000. To reassure customers, the company obtained a $2 million insurance policy from The Hartford against copyright-infringement lawsuits.[6] The availability of an IBM PC-compatible ROM BIOS helped fuel the 70% increase in sales that Phoenix experienced in 1988;[citation needed] competitors appeared, such as AMI BIOS.[7] Phoenix also developed IBM Personal System/2 Micro Channel BIOS, including the ABIOS,[9][10][11] and EISA compatible BIOS during 1988 and 1989.[12]

1987–1989

In 1987, Phoenix began the first of many expansion, acquisition, and collapse cycles. It acquired Softstyle, Inc, and Softset, Inc, and began a printer emulation product line, and a Phoenix publishing division. Phoenix also tripled the number of employees from late 1986 to 1989.

Phoenix launched an IPO in June 1988 and made the founder and early employees instant millionaires on paper. The stock price did not sustain its peak of 18¾, and by late 1989 it had plummeted to 3¾. In addition, the company posted a loss of 7.7 million dollars in 1989, due primarily to the consolidation of the PC market, and Phoenix’s unsuccessful branching out into collateral markets. After that, Ron Fisher took over as CEO, and again the company focused on the core PC BIOS products, and prevented a hostile takeover bid by Norwood Partners Limited Partnership.

1990s

Phoenix Bios, 1999

By 1992, Phoenix was financially healthy enough to start another expansion and acquisition cycle. In 1992, Phoenix acquired Quadtel, a leading BIOS supplier. The Quadtel BIOS code base was newer than the original Phoenix ROM BIOS code base, and the development effort switched to the Quadtel products. It was rebranded as PhoenixBIOS. The original ROM BIOS code base was used on a joint development effort with David Keenan at IBM (called SurePath), but Phoenix did no further development work on the original code.

Phoenix also expanded its presence in foreign markets. In 1993 Phoenix acquired SRI KK, a Phoenix distributor, and formed the Phoenix KK Japanese subsidiary. In addition, the offices in Taipei, and Europe were expanded in size. In 1994, Phoenix acquired Guildford, Surrey, UK-based DIP Research Ltd. and continued to expand European operations, who had previously developed the DIP DOS operating system for the DIP Pocket PC aka Atari Portfolio in 1989. In 1996, Phoenix acquired Virtual Chips, Inc., a maker of synthesizable cores for PC peripherals, and Mountain View, California-based Award Software in 1998. Due to these expansions, Phoenix reduced its global work force by 5% by ending 38 jobs.[13]

2001–2003

Phoenix continued to grow steadily from the late 1990s, and saw a significant increase in revenues from the Y2K product refreshes in the PC industry. However, by mid-2001, the PC industry suffered another downturn, and Phoenix was forced to reduce the less profitable product lines, such as the IA-64 effort, and close a number of redundant offices. Phoenix again focused on the core BIOS business for the next few years.

During late 2002 and 2003, Phoenix began to develop specialized firmware-based applications. These applications often had components embedded in the BIOS that allowed them to function in damaged PC systems. These included security applications for password hiding and authentication, PC backup and recovery applications, and basic diagnostic applications. Several applications were obtained through complete acquisitions of other companies, such as the SPEKE technology from Integrity Sciences, or the browser technology from Ravisent.

The PC BIOS business continued its steady, but slow, growth despite a rapidly declining unit price. The Award product line was focused on the low-margin, high volume Desktop product line, while the Phoenix TrustedCore BIOS was primarily successful in the high-end PC systems, and Servers. The revenues from the BIOS business continued to provide the capital to invest further in the applications business.

2005–2008

By late 2005, it became clear that the BIOS revenues could not sustain the losses incurred by the applications business. The BIOS revenue stream was heavily leveraged through fully paid-up licenses, and by early 2006 this business model was no longer sustainable. Phoenix announced some of the largest losses in the company history, and went through another consolidation cycle. Several offices were closed and over 70% of the employees were laid off. By late 2006, after senior management changes, the company refocused on the PC BIOS business and the couple of potentially profitable applications.

In September, the company named Woodson “Woody” Hobbs as president and CEO of Phoenix Technologies. Hobbs had a history of turning struggling companies around. According to company documents, “prior to joining Phoenix, Hobbs served as president and CEO of Intellisync Corporation from 2002 until the company’s acquisition by Nokia in February 2006. Under Hobbs’ leadership, Intellisync became the number two wireless email company, increased its stock price by nearly ten times, and grew enterprise value from zero to over $430 million.”[14]

By January 2008, Phoenix had posted higher-than-expected Q1 revenues and increased full year guidance.[15]

In 2008, Phoenix also acquired several companies:

  • In May, Phoenix acquired BeInSync, Ltd., an Israeli-based provider of an all-in-one solution that allows users to back up, synchronize, share and access data online.[16] Although Phoenix did not disclose the amount of the transaction, according to at least one online report, Phoenix acquired BeInSync for $25 million.[17]
  • In July, in an effort to develop a strong online presence and infrastructure for web-based automated service delivery, Phoenix acquired TouchStone Software Corporation for its online PC diagnostics and software update technology, eSupport.com this included the recently purchased HijackPro and Drivermagic software from Glenn Bluff.

[18] The net value of the transaction was approximately $17 million.[19]

  • In September, Phoenix acquired General Software of Bellevue, WA, to extend its firmware leadership to a wide array of specialized high-value, high-margin devices that use embedded processors (embedded systems), from mobile and consumer electronics to data communications.[20]

2009–2010

In 2009, Phoenix shut down their Engineering and Sales offices in Shanghai and Nanjing, China. Phoenix also laid off most of the staff in those offices, although some of the managers were moved to other offices in Taiwan. Phoenix opened a new office in Bangalore, India and closed its office in Hyderabad, India. Most of the Hyderabad employees were given the option to move to the new Bangalore office.

In late Q4 2009, Phoenix began exploring strategic alternatives for the products it had developed and purchased in its prior acquisition phase. On January 5, 2010, Phoenix announced it had hired GrowthPoint Technology partners to find alternative business strategies for the FailSafe, HyperSpace and eSupport.com products. Phoenix will refocus its business strategy on BIOS where it still retains a substantial majority of its revenue.[21]

On April 9, 2010 it was announced that Absolute Software would pay $6.9 million for Phoenix Technologies security technologies, including FailSafe and Freeze.[22]

On June 12, 2010 it was announced that Hewlett-Packard would be purchasing Phoenix Technologies’ instant-on operating system technologies, including HyperSpace, HyperCore and Flip.[citation needed]

See also

  • American Megatrends
  • Insyde Software
  • Falcon Technology[23]

References

  1. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=417323
  2. ^ “iolo acquired by Phoenix Technologies, Expanding PC and Mobile Device Optimization Market Reach”. PRWeb. Vocus. October 7, 2013..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .citation .cs1-lock-free a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
  3. ^ “Phoenix Acquires iolo technologies, Expands into PC and Mobile Device Optimization Market”. PRWeb. Vocus. October 8, 2013.
  4. ^ “Corporate Offices.” Phoenix Technologies. Retrieved on 2014-10-08.
  5. ^ Caruso, Denise (1984-02-27). “IBM wins disputes over PC copyrights”. InfoWorld: 15. Retrieved 2015-01-15.
  6. ^ abc Langdell, James (1984-07-10). “Phoenix Says Its BIOS May Foil IBM’s Lawsuits”. PC Magazine: 56. Retrieved 2013-10-25.
  7. ^ abc Schmidt, Robert (July 1994). “What Is The BIOS?”. Computing Basics. Archived from the original on 2012-03-10. Retrieved 2011-09-19.
  8. ^ Phoenix Eagerly Waiting to Clone Next-Generation IBM BIOS, InfoWorld, March 9, 1987
  9. ^ Phoenix Technologies, Ltd. (1989) [1987]. System BIOS for IBM PC/XT/AT Computers and Compatibles: The Complete Guide to ROM-Based System Software. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51806-6.
  10. ^ Phoenix Technologies, Ltd. (1989) [1987]. CBIOS for IBM PS/2 Computers and Compatibles: The Complete Guide to ROM-Based System Software for DOS. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51804-X.
  11. ^ Phoenix Technologies, Ltd. (1989) [1987]. ABIOS for IBM PS/2 Computers and Compatibles: The Complete Guide to ROM-Based System Software for OS/2. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51805-8.
  12. ^ Phoenix Technologies, Ltd. (June 1991). System BIOS for IBM PCs, Compatibles, and EISA Computers: The Complete Guide to ROM-Based System Software. Phoenix Technical Reference Series (2nd ed.). Amsterdam: Addison Wesley Publishing Company, Inc. ISBN 0-201-57760-7.
  13. ^ “PHOENIX TO CUT 38 JOBS, TAKE CHARGE FOR RESTRUCTURE..” Computergram International.
  14. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=210260
  15. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=284884
  16. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=307684
  17. ^ Nicholas Deleon (2008-03-26). “BeInSync Acquired by Phoenix Technologies for $25M”. TechCrunch. Retrieved 2011-09-19.
  18. ^ eSupport.com this included the recently purchased HijackPro and Drivermagic software from Glenn Bluff
  19. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=319106
  20. ^ http://investor.phoenix.com/releasedetail.cfm?ReleaseID=331506
  21. ^ “Phoenix Technologies Retains GrowthPoint Technology Partners to Explore Strategic Alternatives for FailSafe(R), HyperSpace(TM) … – MILPITAS, Calif., Jan. 5 /PRNewswire-FirstCall/”. California: Prnewswire.com. Retrieved 2011-09-19.
  22. ^ “Phoenix Sheds FailSafe”. Seeking Alpha. Retrieved 2011-09-19.
  23. ^ Schulman, Andrew; Michels, Raymond J.; Kyle, Jim; Paterson, Tim; Maxey, David; Brown, Ralf D. (1990). Undocumented DOS – A programmer’s guide to reserved MS-DOS functions and data structures (1 ed.). Addison Wesley. ISBN 978-0-201-57064-9.

External links

  • Official website Edit this at Wikidata
  • AwardBIOS motherboard download page at the Wayback Machine (archived August 17, 2000)

BIOS

A pair of AMD BIOS chips for a Dell 310 computer from the late 1980s

BIOS (/ˈbɒs/ BY-oss; an acronym for Basic Input/Output System and also known as the System BIOS, ROM BIOS or PC BIOS) is non-volatile firmware used to perform hardware initialization during the booting process (power-on startup), and to provide runtime services for operating systems and programs.[1] The BIOS firmware comes pre-installed on a personal computer’s system board, and it is the first software to run when powered on. The name originates from the Basic Input/Output System used in the CP/M operating system in 1975.[2][3] The BIOS originally proprietary to the IBM PC has been reverse engineered by companies looking to create compatible systems. The interface of that original system serves as a de facto standard.

The BIOS in modern PCs initializes and tests the system hardware components, and loads a boot loader from a mass memory device which then initializes an operating system. In the era of MS-DOS, the BIOS provided a hardware abstraction layer for the keyboard, display, and other input/output (I/O) devices that standardized an interface to application programs and the operating system. More recent operating systems do not use the BIOS after loading, instead accessing the hardware components directly.

Most BIOS implementations are specifically designed to work with a particular computer or motherboard model, by interfacing with various devices that make up the complementary system chipset. Originally, BIOS firmware was stored in a ROM chip on the PC motherboard. In modern computer systems, the BIOS contents are stored on flash memory so it can be rewritten without removing the chip from the motherboard. This allows easy, end-user updates to the BIOS firmware so new features can be added or bugs can be fixed, but it also creates a possibility for the computer to become infected with BIOS rootkits. Furthermore, a BIOS upgrade that fails can brick the motherboard permanently, unless the system includes some form of backup for this case.

Unified Extensible Firmware Interface (UEFI) is a successor to the legacy PC BIOS, aiming to address its technical shortcomings.[4]

Contents

  • 1 History
  • 2 User interface
  • 3 Operation

    • 3.1 System startup
    • 3.2 Boot process

      • 3.2.1 Boot priority
      • 3.2.2 Boot failure
    • 3.3 Boot environment
  • 4 Extensions (option ROMs)

    • 4.1 Boot procedure
    • 4.2 Initialization
    • 4.3 Physical placement
  • 5 Operating system services

    • 5.1 Processor microcode updates
    • 5.2 Identification
    • 5.3 Overclocking
    • 5.4 Modern use
  • 6 Configuration

    • 6.1 Setup utility
    • 6.2 Hardware monitoring
    • 6.3 Reprogramming
  • 7 Hardware
  • 8 Vendors and products
  • 9 Security
  • 10 Alternatives and successors
  • 11 See also
  • 12 Notes
  • 13 References
  • 14 Further reading
  • 15 External links

History

The term BIOS (Basic Input/Output System) was created by Gary Kildall[5] and first appeared in the CP/M operating system in 1975,[2][3][6][7][8] describing the machine-specific part of CP/M loaded during boot time that interfaces directly with the hardware.[3] (A CP/M machine usually has only a simple boot loader in its ROM.)

Versions of MS-DOS, PC DOS or DR-DOS contain a file called variously “IO.SYS”, “IBMBIO.COM”, “IBMBIO.SYS”, or “DRBIOS.SYS”; this file is known as the “DOS BIOS” (also known as the “DOS I/O System”) and contains the lower-level hardware-specific part of the operating system. Together with the underlying hardware-specific but operating system-independent “System BIOS”, which resides in ROM, it represents the analogue to the “CP/M BIOS”.

With the introduction of PS/2 machines, IBM divided the System BIOS into real- and protected-mode portions. The real-mode portion was meant to provide backward compatibility with existing operating systems such as DOS, and therefore was named “CBIOS” (for “Compatibility BIOS”), whereas the “ABIOS” (for “Advanced BIOS”) provided new interfaces specifically suited for multitasking operating systems such as OS/2.

User interface

The BIOS of the original IBM PC XT had no interactive user interface. Error codes or messages were displayed on the screen, or coded series of sounds were generated to signal errors when the power-on self-test (POST) had not proceeded to the point of successfully initializing a video display adapter. Options on the IBM PC and XT were set by switches and jumpers on the main board and on expansion cards. Starting around the mid-1990s, it became typical for the BIOS ROM to include a “BIOS configuration utility” (BCU[9]) or “BIOS setup utility”, accessed at system power-up by a particular key sequence. This program allowed the user to set system configuration options, of the type formerly set using DIP switches, through an interactive menu system controlled through the keyboard. In the interim period, IBM-compatible PCs‍—‌including the IBM AT‍—‌held configuration settings in battery-backed RAM and used a bootable configuration program on disk, not in the ROM, to set the configuration options contained in this memory. The disk was supplied with the computer, and if it was lost the system settings could not be changed. The same applied in general to computers with an EISA bus, for which the configuration program was called an EISA Configuration Utility (ECU).

A modern Wintel-compatible computer provides a setup routine essentially unchanged in nature from the ROM-resident BIOS setup utilities of the late 1990s; the user can configure hardware options using the keyboard and video display. Also, when errors occur at boot time, a modern BIOS usually displays user-friendly error messages, often presented as pop-up boxes in a TUI style, and offers to enter the BIOS setup utility or to ignore the error and proceed if possible. Instead of battery-backed RAM, the modern Wintel machine may store the BIOS configuration settings in flash ROM, perhaps the same flash ROM that holds the BIOS itself.

Operation

System startup

Early Intel processors started at physical address 000FFFF0h. Systems with later processors provide logic to start running the BIOS from the system ROM.
[10]

If the system has just been powered up or the reset button was pressed (“cold boot”), the full power-on self-test (POST) is run. If Ctrl+Alt+Delete was pressed (“warm boot”), a special flag value stored in nonvolatile BIOS memory (“CMOS”) tested by the BIOS allows bypass of the lengthy POST and memory detection.

The POST identifies, and initializes system devices such as the CPU, RAM, interrupt and DMA controllers and other parts of the chipset, video display card, keyboard, hard disk drive, optical disc drive and other basic hardware.

Early IBM PCs had a routine in the POST that would download a program into RAM through the keyboard port and run it. [11][12] This feature was intended for factory test or diagnostic purposes.

Boot process

After the option ROM scan is completed and all detected ROM modules with valid checksums have been called, or immediately after POST in a BIOS version that does not scan for option ROMs, the BIOS calls INT 19h to start boot processing. Post-boot, programs loaded can also call INT 19h to reboot the system, but they must be careful to disable interrupts and other asynchronous hardware processes that may interfere with the BIOS rebooting process, or else the system may hang or crash while it is rebooting.

When INT 19h is called, the BIOS attempts to locate boot loader software on a “boot device”, such as a hard disk, a floppy disk, CD, or DVD. It loads and executes the first boot software it finds, giving it control of the PC.[13]

The BIOS uses the boot devices set in EEPROM, CMOS RAM or, in the earliest PCs, DIP switches. The BIOS checks each device in order to see if it is bootable by attempting to load the first sector (boot sector). If the sector cannot be read , the BIOS proceeds to the next device. If the sector is read successfully, some BIOSes will also check for the boot sector signature 0x55 0xAA in the last two bytes of the sector (which is 512 bytes long), before accepting a boot sector and considering the device bootable.[nb 1]

When a bootable device is found, the BIOS transfers control to the loaded sector. The BIOS does not interpret the contents of the boot sector other than to possibly check for the boot sector signature in the last two bytes. Interpretation of data structures like partition tables and BIOS Parameter Blocks is done by the boot program in the boot sector itself or by other programs loaded through the boot process.

A non-disk device such as a network adapter attempts booting by a procedure that is defined by its option ROM or the equivalent integrated into the motherboard BIOS ROM. As such, option ROMs may also influence or supplant the boot process defined by the motherboard BIOS ROM.

Boot priority

The user can select the boot priority implemented by the BIOS. For example, most computers have a hard disk that is bootable, but usually there is a removable-media drive that has higher boot priority, so the user can cause a removable disk to be booted.

In most modern BIOSes, the boot priority order can be configured by the user. In older BIOSes, limited boot priority options are selectable; in the earliest BIOSes, a fixed priority scheme was implemented, with floppy disk drives first, fixed disks (i.e. hard disks) second, and typically no other boot devices supported, subject to modification of these rules by installed option ROMs. The BIOS in an early PC also usually would only boot from the first floppy disk drive or the first hard disk drive, even if there were two drives installed.

With the El Torito optical media boot standard, the optical drive actually emulates a 3.5″ high-density floppy disk to the BIOS for boot purposes. Reading the “first sector” of a CD-ROM or DVD-ROM is not a simply defined operation like it is on a floppy disk or a hard disk. Furthermore, the complexity of the medium makes it difficult to write a useful boot program in one sector. The bootable virtual floppy disk can contain software that provides access to the optical medium in its native format.

Boot failure

On the original IBM PC and XT, if no bootable disk was found, ROM BASIC was started by calling INT 18h. Since few programs used BASIC in ROM, clone PC makers left it out; then a computer that failed to boot from a disk would display “No ROM BASIC” and halt (in response to INT 18h).

Later computers would display a message like “No bootable disk found”; some would prompt for a disk to be inserted and a key to be pressed to retry the boot process. A modern BIOS may display nothing or may automatically enter the BIOS configuration utility when the boot process fails.

Boot environment

The environment for the boot program is very simple: the CPU is in real mode and the general-purpose and segment registers are undefined, except CS, SS, SP, and DL. CS is always zero and IP is initially 0x7C00. Because boot programs are always loaded at this fixed address, there is no need for a boot program to be relocatable. DL may contain the drive number, as used with INT 13h, of the boot device. SS:SP points to a valid stack that is presumably large enough to support hardware interrupts, but otherwise SS and SP are undefined. (A stack must be already set up in order for interrupts to be serviced, and interrupts must be enabled in order for the system timer-tick interrupt, which BIOS always uses at least to maintain the time-of-day count and which it initializes during POST, to be active and for the keyboard to work. The keyboard works even if the BIOS keyboard service is not called; keystrokes are received and placed in the 15-character type-ahead buffer maintained by BIOS.) The boot program must set up its own stack, because the size of the stack set up by BIOS is unknown and its location is likewise variable; although the boot program can investigate the default stack by examining SS:SP, it is easier and shorter to just unconditionally set up a new stack.

At boot time, all BIOS services are available, and the memory below address 0x00400 contains the interrupt vector table. BIOS POST has initialized the system timers, interrupt controller(s), DMA controller(s), and other motherboard/chipset hardware as necessary to bring all BIOS services to ready status. DRAM refresh for all system DRAM in conventional memory and extended memory, but not necessarily expanded memory, has been set up and is running. The interrupt vectors corresponding to the BIOS interrupts have been set to point at the appropriate entry points in the BIOS, hardware interrupt vectors for devices initialized by the BIOS have been set to point to the BIOS-provided ISRs, and some other interrupts, including ones that BIOS generates for programs to hook, have been set to a default dummy ISR that immediately returns. The BIOS maintains a reserved block of system RAM at addresses 0x00400–0x004FF with various parameters initialized during the POST. All memory at and above address 0x00500 can be used by the boot program; it may even overwrite itself.

Extensions (option ROMs)

Peripheral cards such as some hard disk drive controllers and some video display adapters have their own BIOS extension option ROMs, which provide additional functionality to BIOS. Code in these extensions runs before the BIOS boots the system from mass storage. These ROMs typically test and initialize hardware, add new BIOS services, and augment or replace existing BIOS services with their own versions of those services. For example, a SCSI controller usually has a BIOS extension ROM that adds support for hard drives connected through that controller. Some video cards have extension ROMs that replace the video services of the motherboard BIOS with their own video services. BIOS extension ROMs gain total control of the machine, so they can in fact do anything, and they may never return control to the BIOS that invoked them. An extension ROM could in principle contain an entire operating system or an application program, or it could implement an entirely different boot process such as booting from a network. Operation of an IBM-compatible computer system can be completely changed by removing or inserting an adapter card (or a ROM chip) that contains a BIOS extension ROM.

The motherboard BIOS typically contains code to access hardware components necessary for bootstrapping the system, such as the keyboard, display, and storage. In addition, plug-in adapter cards such as SCSI, RAID, network interface cards, and video boards often include their own BIOS (e.g. Video BIOS), complementing or replacing the system BIOS code for the given component. Even devices built into the motherboard can behave in this way; their option ROMs can be stored as separate code on the main BIOS flash chip, and upgraded either in tandem with, or separately from, the main BIOS.

An add-in card requires an option ROM if the card is not supported by the main BIOS and the card needs to be initialized or made accessible through BIOS services before the operating system can be loaded (usually this means it is required in the bootstrapping process). Even when it is not required, an option ROM can allow an adapter card to be used without loading driver software from a storage device after booting begins – with an option ROM, no time is taken to load the driver, the driver does not take up space in RAM nor on hard disk, and the driver software on the ROM always stays with the device so the two cannot be accidentally separated. Also, if the ROM is on the card, both the peripheral hardware and the driver software provided by the ROM are installed together with no extra effort to install the software. An additional advantage of ROM on some early PC systems (notably including the IBM PCjr) was that ROM was faster than main system RAM. (On modern systems, the case is very much the reverse of this, and BIOS ROM code is usually copied (“shadowed”) into RAM so it will run faster.)

There are many methods and utilities for examining the contents of various motherboard BIOS and expansion ROMs, such as Microsoft DEBUG or the Unix dd.

Boot procedure

If an expansion ROM wishes to change the way the system boots (such as from a network device or a SCSI adapter for which the BIOS has no driver code) in a cooperative way, it can use the BIOS Boot Specification (BBS) API to register its ability to do so. Once the expansion ROMs have registered using the BBS APIs, the user can select among the available boot options from within the BIOS’s user interface. This is why most BBS compliant PC BIOS implementations will not allow the user to enter the BIOS’s user interface until the expansion ROMs have finished executing and registering themselves with the BBS API.[citation needed] The specification can be downloaded from the ACPICA website. The official title is BIOS Boot Specification (Version 1.01, 11 January 1996).[14]

Also, if an expansion ROM wishes to change the way the system boots unilaterally, it can simply hook INT 19h or other interrupts normally called from interrupt 19h, such as INT 13h, the BIOS disk service, to intercept the BIOS boot process. Then it can replace the BIOS boot process with one of its own, or it can merely modify the boot sequence by inserting its own boot actions into it, by preventing the BIOS from detecting certain devices as bootable, or both. Before the BIOS Boot Specification was promulgated, this was the only way for expansion ROMs to implement boot capability for devices not supported for booting by the native BIOS of the motherboard.[citation needed]

Initialization

After the motherboard BIOS completes its POST, most BIOS versions search for option ROM modules, also called BIOS extension ROMs, and execute them. The motherboard BIOS scans for extension ROMs in a portion of the “upper memory area” (the part of the x86 real-mode address space at and above address 0xA0000) and runs each ROM found, in order. To discover memory-mapped ISA option ROMs, a BIOS implementation scans the real-mode address space from 0x0C0000 to 0x0F0000 on 2 KiB boundaries, looking for a two-byte ROM signature: 0x55 followed by 0xAA. In a valid expansion ROM, this signature is followed by a single byte indicating the number of 512-byte blocks the expansion ROM occupies in real memory, and the next byte is the option ROM’s entry point (also known as its “entry offset”). A checksum of the specified number of 512-byte blocks is calculated, and if the ROM has a valid checksum, the BIOS transfers control to the entry address, which in a normal BIOS extension ROM should be the beginning of the extension’s initialization routine.

At this point, the extension ROM code takes over, typically testing and initializing the hardware it controls and registering interrupt vectors for use by post-boot applications. It may use BIOS services (including those provided by previously initialized option ROMs) to provide a user configuration interface, to display diagnostic information, or to do anything else that it requires. It is possible that an option ROM will not return to BIOS, pre-empting the BIOS’s boot sequence altogether.

An option ROM should normally return to the BIOS after completing its initialization process. Once (and if) an option ROM returns, the BIOS continues searching for more option ROMs, calling each as it is found, until the entire option ROM area in the memory space has been scanned.

Physical placement

Option ROMs normally reside on adapter cards. However, the original PC, and perhaps also the PC XT, have a spare ROM socket on the motherboard (the “system board” in IBM’s terms) into which an option ROM can be inserted, and the four ROMs that contain the BASIC interpreter can also be removed and replaced with custom ROMs which can be option ROMs. The IBM PCjr is unique among PCs in having two ROM cartridge slots on the front. Cartridges in these slots map into the same region of the upper memory area used for option ROMs, and the cartridges can contain option ROM modules that the BIOS would recognize. The cartridges can also contain other types of ROM modules, such as BASIC programs, that are handled differently. One PCjr cartridge can contain several ROM modules of different types, possibly stored together in one ROM chip.

Operating system services

The BIOS ROM is customized to the particular manufacturer’s hardware, allowing low-level services (such as reading a keystroke or writing a sector of data to diskette) to be provided in a standardized way to programs, including operating systems. For example, an IBM PC might have either a monochrome or a color display adapter (using different display memory addresses and hardware), but a single, standard, BIOS system call may be invoked to display a character at a specified position on the screen in text mode or graphics mode.

The BIOS provides a small library of basic input/output functions to operate peripherals (such as the keyboard, rudimentary text and graphics display functions and so forth). When using MS-DOS, BIOS services could be accessed by an application program (or by MS-DOS) by executing an INT 13h interrupt instruction to access disk functions, or by executing one of a number of other documented BIOS interrupt calls to access video display, keyboard, cassette, and other device functions.

Operating systems and executive software that are designed to supersede this basic firmware functionality provide replacement software interfaces to application software. Applications can also provide these services to themselves. This began even in the 1980s under MS-DOS, when programmers observed that using the BIOS video services for graphics display was very slow. To increase the speed of screen output, many programs bypassed the BIOS and programmed the video display hardware directly. Other graphics programmers, particularly but not exclusively in the demoscene, observed that there were technical capabilities of the PC display adapters that were not supported by the IBM BIOS and could not be taken advantage of without circumventing it. Since the AT-compatible BIOS ran in Intel real mode, operating systems that ran in protected mode on 286 and later processors required hardware device drivers compatible with protected mode operation to replace BIOS services.

In modern personal computers running modern operating systems the BIOS is used only during booting and initial loading of system software. Before the operating system’s first graphical screen is displayed, input and output are typically handled through BIOS. A boot menu such as the textual menu of Windows, which allows users to choose an operating system to boot, to boot into the safe mode, or to use the last known good configuration, is displayed through BIOS and receives keyboard input through BIOS.[citation needed]

Most modern PCs can still boot and run legacy operating systems such as MS-DOS or DR-DOS that rely heavily on BIOS for their console and disk I/O, providing that the system has a BIOS or BIOS-compatible firmware, which is not necessarily the case with UEFI-based PCs.

Processor microcode updates

Intel processors have reprogrammable microcode since the P6 microarchitecture.[15][16] The BIOS may contain patches to the processor microcode that fix errors in the initial processor microcode; reprogramming is not persistent, thus loading of microcode updates is performed each time the system is powered up. Without reprogrammable microcode, an expensive processor swap would be required;[17] for example, the Pentium FDIV bug became an expensive fiasco for Intel as it required a product recall because the original Pentium processor’s defective microcode could not be reprogrammed.

Identification

Some BIOSes contain a software licensing description table (SLIC), a digital signature placed inside the BIOS by the original equipment manufacturer (OEM), for example Dell. The SLIC is inserted into the ACPI table and contains no active code.[18][19]

Computer manufacturers that distribute OEM versions of Microsoft Windows and Microsoft application software can use the SLIC to authenticate licensing to the OEM Windows Installation disk and system recovery disc containing Windows software. Systems with an SLIC can be preactivated with an OEM product key, and they verify an XML formatted OEM certificate against the SLIC in the BIOS as a means of self-activating (see System Locked Preinstallation, SLP). If a user performs a fresh install of Windows, they will need to have possession of both the OEM key (either SLP or COA) and the digital certificate for their SLIC in order to bypass activation.[18] This can be achieved if the user performs a restore using a pre-customised image provided by the OEM. Power users can copy the necessary certificate files from the OEM image, decode the SLP product key, then perform SLP activation manually. Cracks for non-genuine Windows distributions usually edit the SLIC or emulate it in order to bypass Windows activation.[citation needed]

Overclocking

Some BIOS implementations allow overclocking, an action in which the CPU is adjusted to a higher clock rate than its manufacturer rating for guaranteed capability. Overclocking may, however, seriously compromise system reliability in insufficiently cooled computers and generally shorten component lifespan. Overclocking, when incorrectly performed, may also cause components to overheat so quickly that they mechanically destroy themselves.[20]

Modern use

Some operating systems, for example MS-DOS, rely on the BIOS to carry out most input/output tasks within the PC.[21]

Because the BIOS still runs in 16-bit real mode, calling BIOS services directly is inefficient for protected-mode operating systems. BIOS services are not used by modern multitasking operating systems after they initially load, so the importance of the primary part of BIOS is greatly reduced from what it was initially.

Later BIOS implementations took on more complex functions, by including interfaces such as Advanced Configuration and Power Interface (ACPI); these functions include power management, hot swapping, and thermal management. At the same time, since 2010, BIOS technology is in a transitional process toward UEFI.[4]

Configuration

Setup utility

Historically, the BIOS in the IBM PC and XT had no built-in user interface. The BIOS versions in earlier PCs (XT-class) were not software configurable; instead, users set the options via DIP switches on the motherboard. Later computers, including all IBM-compatibles with 80286 CPUs, had a battery-backed nonvolatile BIOS memory (CMOS RAM chip) that held BIOS settings.[22] These settings, such as video-adapter type, memory size, and hard-disk parameters, could only be configured by running a configuration program from a disk, not built into the ROM. A special “reference diskette” was inserted in an IBM AT to configure settings such as memory size.

Early BIOS versions did not have passwords or boot-device selection options. The BIOS was hard-coded to boot from the first floppy drive, or, if that failed, the first hard disk. Access control in early AT-class machines was by a physical keylock switch (which was not hard to defeat if the computer case could be opened). Anyone who could switch on the computer could boot it.[citation needed]

Later, 386-class computers started integrating the BIOS setup utility in the ROM itself, alongside the BIOS code; these computers usually boot into the BIOS setup utility if a certain key or key combination is pressed, otherwise the BIOS POST and boot process are executed.

Award BIOS setup utility on a standard PC

A modern BIOS setup utility has a menu-based user interface (UI) accessed by pressing a certain key on the keyboard when the PC starts. Usually the key is advertised for short time during the early startup, for example “Press F1 to enter CMOS setup”. The actual key depends on specific hardware. Features present in the BIOS setup utility typically include:

  • Configuring the hardware components, including setting their various operating modes and frequencies (for example, selecting how the storage controllers are visible to the operating system, or overclocking the CPU)
  • Setting the system clock
  • Enabling or disabling system components
  • Selecting which devices are potential boot devices, and in which order booting from them will be attempted
  • Setting various passwords, such as a password for securing access to the BIOS user interface functions itself and preventing malicious users from booting the system from unauthorized portable storage devices, a password for booting the system, or a hard disk drive password that limits access to it and stays assigned even if the hard disk drive is moved to another computer

Hardware monitoring

A modern BIOS setup screen often features a PC Health Status or a Hardware Monitoring tab, which directly interfaces with a Hardware Monitor chip of the mainboard.[23] This makes it possible to monitor CPU and chassis temperature, the voltage provided by the power supply unit, as well as monitor and control the speed of the fans connected to the motherboard.

Once the system is booted, hardware monitoring and computer fan control is normally done directly by the Hardware Monitor chip itself, which can be a separate chip, interfaced through I²C or SMBus, or come as a part of a Super I/O solution, interfaced through Low Pin Count (LPC).[24] Some operating systems, like NetBSD with envsys and OpenBSD with sysctl hw.sensors, feature integrated interfacing with hardware monitors, which is normally done without any interaction with the BIOS.

However, in certain circumstances, the BIOS vendor also provides the underlying information about hardware monitoring through ACPI, in which case, the operating system may be using ACPI to perform hardware monitoring; this is done, for example, on some ASUSTeK motherboards with the AI Booster feature.[25]

Reprogramming

BIOS replacement kit for a Dell 310 from the late 1980s. Included are two chips, a plastic holder for the chips, and a chip puller.

In modern PCs the BIOS is stored in rewritable memory, allowing the contents to be replaced and modified. This rewriting of the contents is sometimes termed flashing, based on the common use of a kind of EEPROM known technically as “flash EEPROM” and colloquially as “flash memory”. It can be done by a special program, usually provided by the system’s manufacturer, or at POST, with a BIOS image in a hard drive or USB flash drive. A file containing such contents is sometimes termed “a BIOS image”. A BIOS might be reflashed in order to upgrade to a newer version to fix bugs or provide improved performance or to support newer hardware, or a reflashing operation might be needed to fix a damaged BIOS

Hardware

American Megatrends BIOS 686. This BIOS chip is housed in a PLCC package in a socket.

The original IBM PC BIOS (and cassette BASIC) was stored on mask-programmed read-only memory (ROM) chips in sockets on the motherboard. ROMs could be replaced, but not altered, by users. To allow for updates, many compatible computers used re-programmable memory devices such as EPROM and later flash memory devices. According to Robert Braver, the president of the BIOS manufacturer Micro Firmware, Flash BIOS chips became common around 1995 because the electrically erasable PROM (EEPROM) chips are cheaper and easier to program than standard ultraviolet erasable PROM (EPROM) chips. Flash chips are programmed (and re-programmed) in-circuit, while EPROM chips need to be removed from the motherboard for re-programming.[26] BIOS versions are upgraded to take advantage of newer versions of hardware and to correct bugs in previous revisions of BIOSes.[27]

Beginning with the IBM AT, PCs supported a hardware clock settable through BIOS. It had a century bit which allowed for manually changing the century when the year 2000 happened. Most BIOS revisions created in 1995 and nearly all BIOS revisions in 1997 supported the year 2000 by setting the century bit automatically when the clock rolled past midnight, December 31, 1999.[28]

The first flash chips were attached to the ISA bus. Starting in 1997, the BIOS flash moved to the LPC bus, a functional replacement for ISA, following a new standard implementation known as “firmware hub” (FWH). In 2006, the first systems supporting a Serial Peripheral Interface (SPI) appeared, and the BIOS flash memory moved again.[citation needed]

The size of the BIOS, and the capacity of the ROM, EEPROM, or other media it may be stored on, has increased over time as new features have been added to the code; BIOS versions now exist with sizes up to 16 megabytes. For contrast, the original IBM PC BIOS was contained in an 8 KiB mask ROM. Some modern motherboards are including even bigger NAND flash memory ICs on board which are capable of storing whole compact operating systems, such as some Linux distributions. For example, some ASUS motherboards included Splashtop OS embedded into their NAND flash memory ICs.[29] However, the idea of including an operating system along with BIOS in the ROM of a PC is not new; in the 1980s, Microsoft offered a ROM option for MS-DOS, and it was included in the ROMs of some PC clones such as the Tandy 1000 HX.

Another type of firmware chip was found on the IBM PC AT and early compatibles. In the AT, the keyboard interface was controlled by a microcontroller with its own programmable memory. On the IBM AT, that was a 40-pin socketed device, while some manufacturers used an EPROM version of this chip which resembled an EPROM. This controller was also assigned the A20 gate function to manage memory above the one-megabyte range; occasionally an upgrade of this “keyboard BIOS” was necessary to take advantage of software that could use upper memory.[citation needed]

The BIOS may contain components such as the Memory Reference Code (MRC), which is responsible for handling memory timings and related hardware settings.[30]:8[31]

Vendors and products

Comparison of different BIOS implementations
Company AwardBIOS AMIBIOS Insyde SeaBIOS
License Proprietary Proprietary Proprietary LGPL v3
Maintained / developed Yes Yes Yes Yes
32-bit PCI BIOS calls Yes Yes Yes Yes
AHCI Yes Yes Yes Yes
APM Yes Yes Yes (1.2) Yes (1.2)
BBS Yes Yes Yes Yes
Boot menu Yes Yes Yes Yes
Compression Yes (LHA[32]) Yes (LHA) Yes (RLE) Yes (LZMA)
CMOS Yes Yes Yes Yes
EDD Yes Yes Yes Yes (3.0)
ESCD Yes Yes ? No
Flash from ROM ? Yes ? No
Language Assembly Assembly Assembly C
LBA Yes (48) Yes (48) Yes Yes (48)
MultiProcessor Specification Yes Yes Yes Yes
Option ROM Yes Yes Yes Yes
Password Yes Yes Yes No
PMM ? Yes ? Yes
Setup screen Yes Yes Yes No
SMBIOS Yes Yes Yes Yes (2.4)
Splash screen Yes (EPA)[33] Yes (PCX) Yes Yes (BMP, JPG)
TPM Unknown Unknown Unknown Some
USB booting Yes Yes Yes Yes
USB hub ? ? ? Yes
USB keyboard Yes Yes Yes Yes
USB mouse Yes Yes Yes Yes

IBM published the entire listings of the BIOS for its original PC, PC XT, PC AT, and other contemporary PC models, in an appendix of the IBM PC Technical Reference Manual for each machine type. The effect of the publication of the BIOS listings is that anyone can see exactly what a definitive BIOS does and how it does it.

In May 1984 Phoenix Software Associates released its first ROM-BIOS which enabled OEMs to build essentially 100%-compatible clones without having to reverse-engineer the IBM PC BIOS themselves, as Compaq had done for the Portable, helping fuel the growth in the PC compatibles industry and sales of non-IBM versions of DOS.[34] And the first American Megatrends (AMI) BIOS was released on 1986.

New standards grafted onto the BIOS are usually without complete public documentation or any BIOS listings. As a result, it is not as easy to learn the intimate details about the many non-IBM additions to BIOS as about the core BIOS services.

Most PC motherboard suppliers license a BIOS “core” and toolkit from a commercial third-party, known as an “independent BIOS vendor” or IBV. The motherboard manufacturer then customizes this BIOS to suit its own hardware. For this reason, updated BIOSes are normally obtained directly from the motherboard manufacturer. Major BIOS vendors include American Megatrends (AMI), Insyde Software, Phoenix Technologies and Byosoft. Former vendors include Award Software and Microid Research that were acquired by Phoenix Technologies in 1998; Phoenix later phased out the Award Brand name. General Software, which was also acquired by Phoenix in 2007, sold BIOS for Intel processor based embedded systems.

The open source community increased their effort to develop a replacement for proprietary BIOSes and their future incarnations with an open sourced counterpart through the libreboot, coreboot and OpenBIOS/Open Firmware projects. AMD provided product specifications for some chipsets, and Google is sponsoring the project. Motherboard manufacturer Tyan offers coreboot next to the standard BIOS with their Opteron line of motherboards. MSI and Gigabyte Technology have followed suit with the MSI K9ND MS-9282 and MSI K9SD MS-9185 resp. the M57SLI-S4 models.

Security

An American Megatrends BIOS showing a “Intel CPU uCode Loading Error” after a failed attempt to upload microcode patches into the CPU

A detached BIOS chip

EEPROM chips are advantageous because they can be easily updated by the user; it is customary for hardware manufacturers to issue BIOS updates to upgrade their products, improve compatibility and remove bugs. However, this advantage had the risk that an improperly executed or aborted BIOS update could render the computer or device unusable. To avoid these situations, more recent BIOSes use a “boot block”; a portion of the BIOS which runs first and must be updated separately. This code verifies if the rest of the BIOS is intact (using hash checksums or other methods) before transferring control to it. If the boot block detects any corruption in the main BIOS, it will typically warn the user that a recovery process must be initiated by booting from removable media (floppy, CD or USB flash drive) so the user can try flashing the BIOS again. Some motherboards have a backup BIOS (sometimes referred to as DualBIOS boards) to recover from BIOS corruptions.

There are at least four known BIOS attack viruses, two of which were for demonstration purposes. The first one found in the wild was Mebromi, targeting Chinese users.

The first BIOS virus was CIH, whose name matches the initials of its creator, Chen Ing Hau. CIH was also called the “Chernobyl Virus”, because its payload date was 1999-04-26, the 13th anniversary of the Chernobyl accident. CIH appeared in mid-1998 and became active in April 1999. It was able to erase flash ROM BIOS content. Often, infected computers could no longer boot, and people had to remove the flash ROM IC from the motherboard and reprogram it. CIH targeted the then-widespread Intel i430TX motherboard chipset and took advantage of the fact that the Windows 9x operating systems, also widespread at the time, allowed direct hardware access to all programs.

Modern systems are not vulnerable to CIH because of a variety of chipsets being used which are incompatible with the Intel i430TX chipset, and also other flash ROM IC types. There is also extra protection from accidental BIOS rewrites in the form of boot blocks which are protected from accidental overwrite or dual and quad BIOS equipped systems which may, in the event of a crash, use a backup BIOS. Also, all modern operating systems such as FreeBSD, Linux, macOS, Windows NT-based Windows OS like Windows 2000, Windows XP and newer, do not allow user-mode programs to have direct hardware access.

As a result, as of 2008, CIH has become essentially harmless, at worst causing annoyance by infecting executable files and triggering antivirus software. Other BIOS viruses remain possible, however;[35] since most Windows home users without Windows Vista/7’s UAC run all applications with administrative privileges, a modern CIH-like virus could in principle still gain access to hardware without first using an exploit. The operating system OpenBSD prevents all users from having this access and the grsecurity patch for the Linux kernel also prevents this direct hardware access by default, the difference being an attacker requiring a much more difficult kernel level exploit or reboot of the machine.

The second BIOS virus was a technique presented by John Heasman, principal security consultant for UK-based Next-Generation Security Software. In 2006, at the Black Hat Security Conference, he showed how to elevate privileges and read physical memory, using malicious procedures that replaced normal ACPI functions stored in flash memory.

The third BIOS virus was a technique called “Persistent BIOS infection.” It appeared in 2009 at the CanSecWest Security Conference in Vancouver, and at the SyScan Security Conference in Singapore. Researchers Anibal Sacco[36] and Alfredo Ortega, from Core Security Technologies, demonstrated how to insert malicious code into the decompression routines in the BIOS, allowing for nearly full control of the PC at start-up, even before the operating system is booted. The proof-of-concept does not exploit a flaw in the BIOS implementation, but only involves the normal BIOS flashing procedures. Thus, it requires physical access to the machine, or for the user to be root. Despite these requirements, Ortega underlined the profound implications of his and Sacco’s discovery: “We can patch a driver to drop a fully working rootkit. We even have a little code that can remove or disable antivirus.”[37]

Mebromi is a trojan which targets computers with AwardBIOS, Microsoft Windows, and antivirus software from two Chinese companies: Rising Antivirus and Jiangmin KV Antivirus.[38][39][40] Mebromi installs a rootkit which infects the master boot record.

In a December 2013 interview with 60 Minutes, Deborah Plunkett, Information Assurance Director for the US National Security Agency claimed that NSA analysts had uncovered and thwarted a possible BIOS attack by a foreign nation state. The attack on the world’s computers could have allegedly “literally taken down the US economy.” The segment further cites anonymous cyber security experts briefed on the operation as alleging the plot was conceived in China.[41] A later article in The Guardian cast doubt on the likelihood of such a threat, quoting Berkeley computer-science researcher Nicholas Weaver, Matt Blaze, a computer and information sciences professor at the University of Pennsylvania, and cybersecurity expert Robert David Graham in an analysis of the NSA’s claims.[42]

Alternatives and successors

As of 2011[update], the BIOS is being replaced by the more complex Extensible Firmware Interface (EFI) in many new machines. EFI is a specification which replaces the runtime interface of the legacy BIOS. Initially written for the Intel Itanium architecture, EFI is now available for x86 and x86-64 platforms; the specification development is driven by The Unified EFI Forum, an industry Special Interest Group. EFI booting has been supported in only Microsoft Windows versions supporting GPT,[43] the Linux kernel 2.6.1 and later, and macOS on Intel-based Macs.[44] As of 2014[update], new PC hardware predominantly ships with UEFI firmware. The architecture of the rootkit safeguard can also prevent the system from running the user’s own software changes, which makes UEFI controversial as a BIOS replacement in the open hardware community.

Other alternatives to the functionality of the “Legacy BIOS” in the x86 world include coreboot and libreboot.

Some servers and workstations use a platform-independent Open Firmware (IEEE-1275) based on the Forth programming language; it is included with Sun’s SPARC computers, IBM’s RS/6000 line, and other PowerPC systems such as the CHRP motherboards, along with the x86-based OLPC XO-1.

As of at least 2015, Apple has removed legacy BIOS support from MacBook Pro computers. As such the bless utility no longer supports the –legacy switch, and prints “Legacy mode not supported on this system”. These Macs also cannot boot from CD-ROM or USB flash drives.[citation needed]

See also

  • Double boot
  • e820
  • Extended System Configuration Data (ESCD)
  • Legacy Plug and Play (PnP) – specifications supporting automated configuration of hardware devices, primarily those on the ISA bus
  • Ralf Brown’s Interrupt List (RBIL) – interrupts, calls, interfaces, data structures, memory and port addresses, and processor opcodes for the x86 architecture
  • System Management BIOS (SMBIOS)
  • Unified Extensible Firmware Interface (UEFI)
  • VESA BIOS Extensions (VBE) – an interface for using compliant video boards at high resolutions and bit depths, beyond the standard BIOS support

Notes

  1. ^ The signature at offset +0x1FE in boot sectors is 0x55 0xAA, that is 0x55 at offset +0x1FE and 0xAA at offset +0x1FF. Since little-endian representation must be assumed in the context of IBM PC compatible machines, this can be written as 16-bit word 0xAA55 in programs for x86 processors (note the swapped order), whereas it would have to be written as 0x55AA in programs for other CPU architectures using a big-endian representation. Since this has been mixed up numerous times in books and even in original Microsoft reference documents, this article uses the offset-based byte-wise on-disk representation to avoid any possible misinterpretation.

References

  1. ^ “Ref — System BIOS”. PCGuide. Archived from the original on 21 December 2014. Retrieved 6 December 2014..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .citation .cs1-lock-free a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
  2. ^ abc Kildall, Gary A. (June 1975), CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories
  3. ^ abcd Kildall, Gary A. (January 1980). “The History of CP/M, THE EVOLUTION OF AN INDUSTRY: ONE PERSON’S VIEWPOINT” (Vol. 5, No. 1, Number 41 ed.). Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia. pp. 6–7. Archived from the original on 2016-11-24. Retrieved 2013-06-03.
  4. ^ ab Bradley, Tony. “R.I.P. BIOS: A UEFI Primer”. PCWorld. Archived from the original on 2014-01-27. Retrieved 2014-01-27.
  5. ^ Swaine, Michael (1997-04-01). “Gary Kildall and Collegial Entrepreneurship”. Dr. Dobb’s Journal. Archived from the original on 2007-01-24. Retrieved 2006-11-20.
  6. ^ Shustek, Len (2016-08-02). “In His Own Words: Gary Kildall”. Remarkable People. Computer History Museum. Archived from the original on 2016-12-17.
  7. ^ ab Killian, A. Joseph “Joe” (2001). “Gary Kildall’s CP/M: Some early CP/M history – 1976-1977”. Thomas “Todd” Fischer, IMSAI. Archived from the original on 2012-12-29. Retrieved 2013-06-03.
  8. ^ ab Fraley, Bob; Spicer, Dag (2007-01-26). “Oral History of Joseph Killian, Interviewed by: Bob Fraley, Edited by: Dag Spicer, Recorded: January 26, 2007, Mountain View, California, CHM Reference number: X3879.2007,” (PDF). Computer History Museum. Archived (PDF) from the original on July 14, 2014. Retrieved 2013-06-03.
  9. ^ “HP BIOS Configuration Utility”. Hewlett-Packard. 2013. Archived from the original on 2015-01-12. Retrieved 2015-01-12.
  10. ^ See Intel® 64 and IA-32 Architectures Software Developer’s Manual Archived 2012-01-26 at the Wayback Machine, volume 3, section 9.1.2
  11. ^ page 5-27 IBM Personal Computer Hardware Reference Library Technical Reference, 1984, publication number 6361459
  12. ^ “IBM 5162 PC XT286 TechRef 68X2537 Technical Reference manual” (PDF). August 1986. p. 35 (System BIOS A-5). Archived (PDF) from the original on 2014-12-11. Retrieved 2014-12-11.
  13. ^ How StuffWorks: What BIOS Does Archived 2008-02-07 at the Wayback Machine.
  14. ^ BIOS Boot Specification (Version 1.01, 11 January 1996) Archived April 22, 2012, at the Wayback Machine
  15. ^ Mueller, Scott (2001-06-08). “Processor Update Feature | Microprocessor Types and Specifications”. InformIT. Archived from the original on 2014-04-16. Retrieved 2014-04-15.
  16. ^ “Linux* Processor Microcode Data File”. Download Center. Downloadcenter.intel.com. 2009-09-23. Archived from the original on 2014-04-16. Retrieved 2014-04-15.
  17. ^ Scott Mueller, Upgrading and repairing PCs 15th edition, Que Publishing, 2003
    ISBN 0-7897-2974-1, pages 109-110
  18. ^ ab “How SLP and SLIC Works”. guytechie.com. 2010-02-25. Archived from the original on 2015-02-03. Retrieved 2015-02-03.
  19. ^ “Create and add an OEM ACPI SLIC table module to a congatec BIOS” (PDF). congatec.com. 2011-06-16. Archived (PDF) from the original on 2014-08-02. Retrieved 2015-02-03.
  20. ^ Whitson Gordon. “A Beginner’s Introduction to Overclocking Your Intel Processor”. Lifehacker. Gawker Media. Archived from the original on 7 December 2014. Retrieved 6 December 2014.
  21. ^ Smart Computing Article – What Is The BIOS? Archived 2012-03-10 at the Wayback Machine – Computing Basics July 1994 • Vol.5 Issue 7
  22. ^ Torres, Gabriel (24 November 2004). “Introduction and Lithium Battery”. Replacing the Motherboard Battery. hardwaresecrets.com. Archived from the original on 24 December 2013. Retrieved June 20, 2013.
  23. ^ Constantine A. Murenin (2010-05-21). “11.1. Interfacing from the BIOS”. OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (MMath thesis). University of Waterloo: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.
  24. ^ Constantine A. Murenin (2007-04-17). “2. Hardware review”. Generalised Interfacing with Microprocessor System Hardware Monitors. Proceedings of 2007 IEEE International Conference on Networking, Sensing and Control, 15–17 April 2007. London, United Kingdom: IEEE. pp. 901–906. doi:10.1109/ICNSC.2007.372901. ISBN 1-4244-1076-2. IEEE ICNSC 2007, pp. 901—906.
  25. ^ “aibs — ASUSTeK AI Booster ACPI ATK0110 voltage, temperature and fan sensor”. OpenBSD, DragonFly BSD, NetBSD and FreeBSD. 2010.
  26. ^ “Decoding RAM & ROM Archived 2012-04-06 at the Wayback Machine.” Smart Computing. June 1997. Volume 8, Issue 6.
  27. ^ “Upgrading Your Flash BIOS For Plug And Play Archived 2012-04-06 at the Wayback Machine.” Smart Computing. March 1996. Volume 7, Issue 3.
  28. ^ “Time To Check BIOS Archived 2011-07-16 at the Wayback Machine.” Smart Computing. April 1999. Volume 7, Issue 4.
  29. ^ SplashTop’s Instant-On Linux Desktop | Geek.com Archived 2008-09-07 at the Wayback Machine
  30. ^ Posted by Alex Watson, possibly repost from original content on custompc.com [unclear]. “The life and times of the modern motherboard”. 2007-11-27. Archived from the original on 24 July 2012. Retrieved 2 February 2013.
  31. ^ David Hilber, Jr. (August 2009). “Considerations for Designing an Embedded Intel Architecture System with System Memory Down ®” (PDF). Intel. Archived (PDF) from the original on 18 October 2012. Retrieved 2 February 2013.
  32. ^ Stiller, Andreas (2001). “Prozessor-Patches”. c’t (in German). Heise (5): 240. Archived from the original on 2015-11-22. Retrieved 2015-11-21.
  33. ^ “Award BIOS logo”. 2015-06-15. Archived from the original on 2015-12-21. Retrieved 2015-12-06.
  34. ^ Phoenix Eagerly Waiting to Clone Next-Generation IBM BIOS Archived 2014-01-22 at the Wayback Machine, InfoWorld, March 9, 1987
  35. ^ New BIOS Virus Withstands HDD Wipes, March 27, 2009. Marcus Yam. Tom’s Hardware US
  36. ^ Sacco, Anibal; Alfredo Ortéga. “Persistent BIOS Infection”. Exploiting Stuff. Archived from the original on 2009-08-04. Retrieved 2010-02-06.
  37. ^ Fisher, Dennis. “Researchers unveil persistent BIOS attack methods”. Threat Post. Archived from the original on 30 January 2010. Retrieved 2010-02-06.
  38. ^ Giuliani, Marco. “Mebromi: the first BIOS rootkit in the wild”. blog. Archived from the original on 2011-09-23. Retrieved 2011-09-19.
  39. ^ “360发布”BMW病毒”技术分析报告”. blog. Archived from the original on 2011-09-25. Retrieved 2011-09-19.
  40. ^ Yuan, Liang. “Trojan.Mebromi”. Threat Response. Archived from the original on 2011-09-23. Retrieved 2011-09-19.
  41. ^ “How did 60 Minutes get cameras into a spy agency?”. CBS News. Archived from the original on 2014-04-22. Retrieved 2014-04-15.
  42. ^ Spencer Ackerman in Washington (2013-12-16). “NSA goes on 60 Minutes: the definitive facts behind CBS’s flawed report | World news”. theguardian.com. Archived from the original on 2014-01-25. Retrieved 2014-01-27.
  43. ^ “Windows and GPT FAQ”. microsoft.com. Microsoft. Archived from the original on 19 February 2011. Retrieved 6 December 2014.
  44. ^ “Extensible Firmware Interface (EFI) and Unified EFI (UEFI)”. Intel. Archived from the original on 5 January 2010. Retrieved 6 December 2014.

Further reading

  • IBM Personal Computer Technical Reference (Revised ed.). IBM Corporation. March 1983.
  • IBM Personal Computer AT Technical Reference. IBM Personal Computer Hardware Reference Library. 0, 1, 2 (Revised ed.). IBM Corporation. March 1986 [1984-03]. 1502494, 6139362, 6183310, 6183312, 6183355, 6280070, 6280099.
  • Phoenix Technologies, Ltd. (1989) [1987]. System BIOS for IBM PC/XT/AT Computers and Compatibles — The Complete Guide to ROM-Based System Software. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51806-6.
  • Phoenix Technologies, Ltd. (1989) [1987]. CBIOS for IBM PS/2 Computers and Compatibles — The Complete Guide to ROM-Based System Software for DOS. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51804-X.
  • Phoenix Technologies, Ltd. (1989) [1987]. ABIOS for IBM PS/2 Computers and Compatibles — The Complete Guide to ROM-Based System Software for OS/2. Phoenix Technical Reference Series (1st ed.). Addison Wesley Publishing Company, Inc. ISBN 0-201-51805-8.
  • Phoenix Technologies, Ltd. (June 1991). System BIOS for IBM PCs, Compatibles, and EISA Computers — The Complete Guide to ROM-Based System Software. Phoenix Technical Reference Series (2nd ed.). Amsterdam: Addison Wesley Publishing Company, Inc. ISBN 0-201-57760-7.
  • BIOS Disassembly Ninjutsu Uncovered, 1st edition, a freely available book in PDF format
  • More Power To Firmware, free bonus chapter to the Mac OS X Internals: A Systems Approach book

External links

  • “BIOS Boot Specification 1.01” (PDF). Phoenix.com. January 11, 1996.
  • “How BIOS Works”. How Stuff Works.
  • “Implementing a Plug and Play BIOS Using Intel’s Boot Block Flash Memory” (PDF). Intel. February 1995. Retrieved November 28, 2007.
  • “List of BIOS options”. techarp.com.
  • “Persistent BIOS Infection”. Phrack (66). June 1, 2009. Retrieved April 30, 2011.
  • “Preventing BIOS Failures Using Intel Boot Block Flash Memory” (PDF). Intel. December 1998. Retrieved March 29, 2007.

Modifying the default bashrc alert command

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

1

I was scrolling through my bashrc (bored) and I got interested in the alert command that is concatenated in there by default. It’s practical and everything, but it requires you to type ; alert at the end of every comand you want to be notified about.

Is there a smart way of turning this alias into something like a universal command option?

Examples:

sudo apt update -a 
cp <someBigFile> <someOtherPlace> -a

etc. (end of thinking capacity 🙂

I know that I can’t necessarily use “-a”, as it might be an existing option for some commmands, it’s just an example I put up there to clarify.

share|improve this question

    1

    I was scrolling through my bashrc (bored) and I got interested in the alert command that is concatenated in there by default. It’s practical and everything, but it requires you to type ; alert at the end of every comand you want to be notified about.

    Is there a smart way of turning this alias into something like a universal command option?

    Examples:

    sudo apt update -a 
    cp <someBigFile> <someOtherPlace> -a
    

    etc. (end of thinking capacity 🙂

    I know that I can’t necessarily use “-a”, as it might be an existing option for some commmands, it’s just an example I put up there to clarify.

    share|improve this question

      1

      1

      1

      I was scrolling through my bashrc (bored) and I got interested in the alert command that is concatenated in there by default. It’s practical and everything, but it requires you to type ; alert at the end of every comand you want to be notified about.

      Is there a smart way of turning this alias into something like a universal command option?

      Examples:

      sudo apt update -a 
      cp <someBigFile> <someOtherPlace> -a
      

      etc. (end of thinking capacity 🙂

      I know that I can’t necessarily use “-a”, as it might be an existing option for some commmands, it’s just an example I put up there to clarify.

      share|improve this question

      I was scrolling through my bashrc (bored) and I got interested in the alert command that is concatenated in there by default. It’s practical and everything, but it requires you to type ; alert at the end of every comand you want to be notified about.

      Is there a smart way of turning this alias into something like a universal command option?

      Examples:

      sudo apt update -a 
      cp <someBigFile> <someOtherPlace> -a
      

      etc. (end of thinking capacity 🙂

      I know that I can’t necessarily use “-a”, as it might be an existing option for some commmands, it’s just an example I put up there to clarify.

      alias bashrc

      share|improve this question

      share|improve this question

      share|improve this question

      share|improve this question

      asked Feb 25 at 11:24

      Ciarán J. HagenCiarán J. Hagen

      84

      84

          1 Answer
          1

          active

          oldest

          votes

          1

          I can think of two ways how to achieve it. But TBH I’m using the same approach as You described. command; alert.

          1. create function which calls Your command You want to be notified after it finishes.

          function alert(){
                  $@
                  echo -en "a"
          }
          

          So running alert sudo apt-update will ring a bell after it finishes.

          2. function to set/unset alerting and call it with PROMPT_COMMAND

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          then You can enable alerts:

          alert set
          command1
          command2
          alert unset
          

          2b. both combined

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                          *)
                                  $@
                                  echo -en "a";;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          both ways described above:
          alert sudo apt update
          or

          alert set
          command1
          command2
          aler unset
          

          share|improve this answer

          • Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

            – Ciarán J. Hagen
            Feb 25 at 12:03

          • what do you mean with “make a sort of concatenation”?

            – Jakub Jindra
            Feb 25 at 12:14

          • 1

            I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

            – Ciarán J. Hagen
            Feb 25 at 12:19

          • yes, sure add another case matching everything else.

            – Jakub Jindra
            Feb 25 at 12:25

          • Nice! Thanks a lot.

            – Ciarán J. Hagen
            Feb 25 at 12:30

          Your Answer

          StackExchange.ready(function() {
          var channelOptions = {
          tags: “”.split(” “),
          id: “106”
          };
          initTagRenderer(“”.split(” “), “”.split(” “), channelOptions);

          StackExchange.using(“externalEditor”, function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using(“snippets”, function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: ‘answer’,
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: “”,
          imageUploader: {
          brandingHtml: “Powered by u003ca class=”icon-imgur-white” href=”https://imgur.com/”u003eu003c/au003e”,
          contentPolicyHtml: “User contributions licensed under u003ca href=”https://creativecommons.org/licenses/by-sa/3.0/”u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href=”https://stackoverflow.com/legal/content-policy”u003e(content policy)u003c/au003e”,
          allowUrls: true
          },
          onDemand: true,
          discardSelector: “.discard-answer”
          ,immediatelyShowMarkdownHelp:true
          });

          }
          });

          draft saved
          draft discarded

          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502845%2fmodifying-the-default-bashrc-alert-command%23new-answer’, ‘question_page’);
          }
          );

          Post as a guest

          Required, but never shown

          1 Answer
          1

          active

          oldest

          votes

          1 Answer
          1

          active

          oldest

          votes

          active

          oldest

          votes

          active

          oldest

          votes

          1

          I can think of two ways how to achieve it. But TBH I’m using the same approach as You described. command; alert.

          1. create function which calls Your command You want to be notified after it finishes.

          function alert(){
                  $@
                  echo -en "a"
          }
          

          So running alert sudo apt-update will ring a bell after it finishes.

          2. function to set/unset alerting and call it with PROMPT_COMMAND

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          then You can enable alerts:

          alert set
          command1
          command2
          alert unset
          

          2b. both combined

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                          *)
                                  $@
                                  echo -en "a";;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          both ways described above:
          alert sudo apt update
          or

          alert set
          command1
          command2
          aler unset
          

          share|improve this answer

          • Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

            – Ciarán J. Hagen
            Feb 25 at 12:03

          • what do you mean with “make a sort of concatenation”?

            – Jakub Jindra
            Feb 25 at 12:14

          • 1

            I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

            – Ciarán J. Hagen
            Feb 25 at 12:19

          • yes, sure add another case matching everything else.

            – Jakub Jindra
            Feb 25 at 12:25

          • Nice! Thanks a lot.

            – Ciarán J. Hagen
            Feb 25 at 12:30

          1

          I can think of two ways how to achieve it. But TBH I’m using the same approach as You described. command; alert.

          1. create function which calls Your command You want to be notified after it finishes.

          function alert(){
                  $@
                  echo -en "a"
          }
          

          So running alert sudo apt-update will ring a bell after it finishes.

          2. function to set/unset alerting and call it with PROMPT_COMMAND

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          then You can enable alerts:

          alert set
          command1
          command2
          alert unset
          

          2b. both combined

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                          *)
                                  $@
                                  echo -en "a";;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          both ways described above:
          alert sudo apt update
          or

          alert set
          command1
          command2
          aler unset
          

          share|improve this answer

          • Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

            – Ciarán J. Hagen
            Feb 25 at 12:03

          • what do you mean with “make a sort of concatenation”?

            – Jakub Jindra
            Feb 25 at 12:14

          • 1

            I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

            – Ciarán J. Hagen
            Feb 25 at 12:19

          • yes, sure add another case matching everything else.

            – Jakub Jindra
            Feb 25 at 12:25

          • Nice! Thanks a lot.

            – Ciarán J. Hagen
            Feb 25 at 12:30

          1

          1

          1

          I can think of two ways how to achieve it. But TBH I’m using the same approach as You described. command; alert.

          1. create function which calls Your command You want to be notified after it finishes.

          function alert(){
                  $@
                  echo -en "a"
          }
          

          So running alert sudo apt-update will ring a bell after it finishes.

          2. function to set/unset alerting and call it with PROMPT_COMMAND

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          then You can enable alerts:

          alert set
          command1
          command2
          alert unset
          

          2b. both combined

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                          *)
                                  $@
                                  echo -en "a";;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          both ways described above:
          alert sudo apt update
          or

          alert set
          command1
          command2
          aler unset
          

          share|improve this answer

          I can think of two ways how to achieve it. But TBH I’m using the same approach as You described. command; alert.

          1. create function which calls Your command You want to be notified after it finishes.

          function alert(){
                  $@
                  echo -en "a"
          }
          

          So running alert sudo apt-update will ring a bell after it finishes.

          2. function to set/unset alerting and call it with PROMPT_COMMAND

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          then You can enable alerts:

          alert set
          command1
          command2
          alert unset
          

          2b. both combined

          function alert(){
                  case $1 in
                          "")
                                  [[ -n $alert ]] && echo -en "a";;
                          set)
                                  export alert=true;;
                          unset)
                                  unset alert;;
                          *)
                                  $@
                                  echo -en "a";;
                  esac
          }
          
          # add function alert to your PROMPT_COMMAND
          PROMPT_COMMAND='alert'
          

          both ways described above:
          alert sudo apt update
          or

          alert set
          command1
          command2
          aler unset
          

          share|improve this answer

          share|improve this answer

          share|improve this answer

          edited Feb 25 at 12:28

          answered Feb 25 at 11:52

          Jakub JindraJakub Jindra

          389310

          389310

          • Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

            – Ciarán J. Hagen
            Feb 25 at 12:03

          • what do you mean with “make a sort of concatenation”?

            – Jakub Jindra
            Feb 25 at 12:14

          • 1

            I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

            – Ciarán J. Hagen
            Feb 25 at 12:19

          • yes, sure add another case matching everything else.

            – Jakub Jindra
            Feb 25 at 12:25

          • Nice! Thanks a lot.

            – Ciarán J. Hagen
            Feb 25 at 12:30

          • Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

            – Ciarán J. Hagen
            Feb 25 at 12:03

          • what do you mean with “make a sort of concatenation”?

            – Jakub Jindra
            Feb 25 at 12:14

          • 1

            I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

            – Ciarán J. Hagen
            Feb 25 at 12:19

          • yes, sure add another case matching everything else.

            – Jakub Jindra
            Feb 25 at 12:25

          • Nice! Thanks a lot.

            – Ciarán J. Hagen
            Feb 25 at 12:30

          Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

          – Ciarán J. Hagen
          Feb 25 at 12:03

          Nice! I like both ideas 😀 Those are getting added to my bashrc. Thx for the help. If I understand correctly you can make a sort of concatenation of both solutions right?

          – Ciarán J. Hagen
          Feb 25 at 12:03

          what do you mean with “make a sort of concatenation”?

          – Jakub Jindra
          Feb 25 at 12:14

          what do you mean with “make a sort of concatenation”?

          – Jakub Jindra
          Feb 25 at 12:14

          1

          1

          I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

          – Ciarán J. Hagen
          Feb 25 at 12:19

          I could add version one as an else clause to option two… So basically put “set” or “unset” or “<other command>” as cases. Or am I completely off here and missing omething?

          – Ciarán J. Hagen
          Feb 25 at 12:19

          yes, sure add another case matching everything else.

          – Jakub Jindra
          Feb 25 at 12:25

          yes, sure add another case matching everything else.

          – Jakub Jindra
          Feb 25 at 12:25

          Nice! Thanks a lot.

          – Ciarán J. Hagen
          Feb 25 at 12:30

          Nice! Thanks a lot.

          – Ciarán J. Hagen
          Feb 25 at 12:30

          draft saved
          draft discarded

          Thanks for contributing an answer to Unix & Linux Stack Exchange!

          • Please be sure to answer the question. Provide details and share your research!

          But avoid

          • Asking for help, clarification, or responding to other answers.
          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.

          draft saved

          draft discarded

          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502845%2fmodifying-the-default-bashrc-alert-command%23new-answer’, ‘question_page’);
          }
          );

          Post as a guest

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Required, but never shown

          Why are samba client and NFS client used differently?

          The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

          2

          Can you compare why samba client and NFS client are used differently?

          For example, Why do I have to mount a shared directory on a NFS client side, while I don’t have to for samba client side?

          In pcmanfm, why can I just type smb://192.168.1.198 on the address bar of file manager, and connect to samba server, while I can’t do similarly to access a NFS shared directory, or how can I?

          Thanks.

          share|improve this question

            2

            Can you compare why samba client and NFS client are used differently?

            For example, Why do I have to mount a shared directory on a NFS client side, while I don’t have to for samba client side?

            In pcmanfm, why can I just type smb://192.168.1.198 on the address bar of file manager, and connect to samba server, while I can’t do similarly to access a NFS shared directory, or how can I?

            Thanks.

            share|improve this question

              2

              2

              2

              1

              Can you compare why samba client and NFS client are used differently?

              For example, Why do I have to mount a shared directory on a NFS client side, while I don’t have to for samba client side?

              In pcmanfm, why can I just type smb://192.168.1.198 on the address bar of file manager, and connect to samba server, while I can’t do similarly to access a NFS shared directory, or how can I?

              Thanks.

              share|improve this question

              Can you compare why samba client and NFS client are used differently?

              For example, Why do I have to mount a shared directory on a NFS client side, while I don’t have to for samba client side?

              In pcmanfm, why can I just type smb://192.168.1.198 on the address bar of file manager, and connect to samba server, while I can’t do similarly to access a NFS shared directory, or how can I?

              Thanks.

              samba nfs lubuntu

              share|improve this question

              share|improve this question

              share|improve this question

              share|improve this question

              edited Feb 25 at 12:00

              Tim

              asked Feb 25 at 11:26

              TimTim

              28k78269488

              28k78269488

                  2 Answers
                  2

                  active

                  oldest

                  votes

                  4

                  pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common.

                  GVFS requires D-Bus and/or GIO module support for programs to use it, or a gvfs-fuse package that uses FUSE to allow mounting GVFS-accessible filesystems to be accessible by generic programs.

                  Also, a NFS server and client will trust each other on a much deeper level than a SMB server and client, if the classic NFS sec=sys security model is used, and so mounting a NFS filesystem must require administrative access. (Think of what you could do as a regular user if you could freely mount a filesystem containing setuid binaries of your choice from a server specified by you. The answer is “anything”.) That is why implementing a user-accessible nfs:// protocol would not be trivial.

                  share|improve this answer

                  • Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                    – Tim
                    Feb 25 at 12:04

                  • (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                    – telcoM
                    Feb 25 at 14:38

                  • “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                    – Tim
                    Feb 25 at 14:42

                  • Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                    – telcoM
                    Feb 26 at 8:52

                  2

                  Tim, you ask more than one question. But let me answer one (which I found interesting)

                  You do not need to mount the NFS share. You can access it on this way:

                  cd /net/<NFS server IP or hostname/path/to/shared/dir
                  

                  and then copy, view, etc. the files and directories inside. You do not need to specity the protocol as this (/net ) is a special directory like /proc for example. TO use /net you need to install autofs package.

                  You can mount SMB share on this way:

                  mount -t cifs -o user=<username> //<IP or hostname of SMB server>/<share name> /mount/point
                  

                  For more details you can check Samba documentation

                  share|improve this answer

                  • Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                    – Tim
                    Feb 25 at 11:36

                  • @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                    – Romeo Ninov
                    Feb 25 at 11:47

                  Your Answer

                  StackExchange.ready(function() {
                  var channelOptions = {
                  tags: “”.split(” “),
                  id: “106”
                  };
                  initTagRenderer(“”.split(” “), “”.split(” “), channelOptions);

                  StackExchange.using(“externalEditor”, function() {
                  // Have to fire editor after snippets, if snippets enabled
                  if (StackExchange.settings.snippets.snippetsEnabled) {
                  StackExchange.using(“snippets”, function() {
                  createEditor();
                  });
                  }
                  else {
                  createEditor();
                  }
                  });

                  function createEditor() {
                  StackExchange.prepareEditor({
                  heartbeatType: ‘answer’,
                  autoActivateHeartbeat: false,
                  convertImagesToLinks: false,
                  noModals: true,
                  showLowRepImageUploadWarning: true,
                  reputationToPostImages: null,
                  bindNavPrevention: true,
                  postfix: “”,
                  imageUploader: {
                  brandingHtml: “Powered by u003ca class=”icon-imgur-white” href=”https://imgur.com/”u003eu003c/au003e”,
                  contentPolicyHtml: “User contributions licensed under u003ca href=”https://creativecommons.org/licenses/by-sa/3.0/”u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href=”https://stackoverflow.com/legal/content-policy”u003e(content policy)u003c/au003e”,
                  allowUrls: true
                  },
                  onDemand: true,
                  discardSelector: “.discard-answer”
                  ,immediatelyShowMarkdownHelp:true
                  });

                  }
                  });

                  draft saved
                  draft discarded

                  StackExchange.ready(
                  function () {
                  StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502846%2fwhy-are-samba-client-and-nfs-client-used-differently%23new-answer’, ‘question_page’);
                  }
                  );

                  Post as a guest

                  Required, but never shown

                  2 Answers
                  2

                  active

                  oldest

                  votes

                  2 Answers
                  2

                  active

                  oldest

                  votes

                  active

                  oldest

                  votes

                  active

                  oldest

                  votes

                  4

                  pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common.

                  GVFS requires D-Bus and/or GIO module support for programs to use it, or a gvfs-fuse package that uses FUSE to allow mounting GVFS-accessible filesystems to be accessible by generic programs.

                  Also, a NFS server and client will trust each other on a much deeper level than a SMB server and client, if the classic NFS sec=sys security model is used, and so mounting a NFS filesystem must require administrative access. (Think of what you could do as a regular user if you could freely mount a filesystem containing setuid binaries of your choice from a server specified by you. The answer is “anything”.) That is why implementing a user-accessible nfs:// protocol would not be trivial.

                  share|improve this answer

                  • Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                    – Tim
                    Feb 25 at 12:04

                  • (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                    – telcoM
                    Feb 25 at 14:38

                  • “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                    – Tim
                    Feb 25 at 14:42

                  • Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                    – telcoM
                    Feb 26 at 8:52

                  4

                  pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common.

                  GVFS requires D-Bus and/or GIO module support for programs to use it, or a gvfs-fuse package that uses FUSE to allow mounting GVFS-accessible filesystems to be accessible by generic programs.

                  Also, a NFS server and client will trust each other on a much deeper level than a SMB server and client, if the classic NFS sec=sys security model is used, and so mounting a NFS filesystem must require administrative access. (Think of what you could do as a regular user if you could freely mount a filesystem containing setuid binaries of your choice from a server specified by you. The answer is “anything”.) That is why implementing a user-accessible nfs:// protocol would not be trivial.

                  share|improve this answer

                  • Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                    – Tim
                    Feb 25 at 12:04

                  • (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                    – telcoM
                    Feb 25 at 14:38

                  • “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                    – Tim
                    Feb 25 at 14:42

                  • Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                    – telcoM
                    Feb 26 at 8:52

                  4

                  4

                  4

                  pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common.

                  GVFS requires D-Bus and/or GIO module support for programs to use it, or a gvfs-fuse package that uses FUSE to allow mounting GVFS-accessible filesystems to be accessible by generic programs.

                  Also, a NFS server and client will trust each other on a much deeper level than a SMB server and client, if the classic NFS sec=sys security model is used, and so mounting a NFS filesystem must require administrative access. (Think of what you could do as a regular user if you could freely mount a filesystem containing setuid binaries of your choice from a server specified by you. The answer is “anything”.) That is why implementing a user-accessible nfs:// protocol would not be trivial.

                  share|improve this answer

                  pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common.

                  GVFS requires D-Bus and/or GIO module support for programs to use it, or a gvfs-fuse package that uses FUSE to allow mounting GVFS-accessible filesystems to be accessible by generic programs.

                  Also, a NFS server and client will trust each other on a much deeper level than a SMB server and client, if the classic NFS sec=sys security model is used, and so mounting a NFS filesystem must require administrative access. (Think of what you could do as a regular user if you could freely mount a filesystem containing setuid binaries of your choice from a server specified by you. The answer is “anything”.) That is why implementing a user-accessible nfs:// protocol would not be trivial.

                  share|improve this answer

                  share|improve this answer

                  share|improve this answer

                  answered Feb 25 at 11:51

                  telcoMtelcoM

                  19.6k12449

                  19.6k12449

                  • Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                    – Tim
                    Feb 25 at 12:04

                  • (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                    – telcoM
                    Feb 25 at 14:38

                  • “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                    – Tim
                    Feb 25 at 14:42

                  • Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                    – telcoM
                    Feb 26 at 8:52

                  • Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                    – Tim
                    Feb 25 at 12:04

                  • (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                    – telcoM
                    Feb 25 at 14:38

                  • “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                    – Tim
                    Feb 25 at 14:42

                  • Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                    – telcoM
                    Feb 26 at 8:52

                  Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                  – Tim
                  Feb 25 at 12:04

                  Thanks. (1) How can I access a NFS shared irectory in pcmanfm, maybe similarly to a Samba shared directory? (2) ” a NFS server and client will trust each other on a much deeper level than a SMB server and client”. But I configured NFS server by /share 192.168.1.0/24(rw,sync,no_subtree_check) by following linuxconfig.org/…, It turns out that there is no explicit authentication from a client side (another computer in the same local network). How can I configure the NFS server so that it can securely share a directory?

                  – Tim
                  Feb 25 at 12:04

                  (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                  – telcoM
                  Feb 25 at 14:38

                  (1) mount it as root, or have an admin set up a prepared /etc/fstab line that allows user mounting, then use pcmanfm to access it like a local filesystem. That is the only way. (2) …and this is why (1) is so: no authentication, just blind trust. NFSv4 allows secure sharing with Kerberos authentication and optional traffic encryption, but you’ll need to set up a Kerberos authentication environment first… and that is not exactly trivial.

                  – telcoM
                  Feb 25 at 14:38

                  “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                  – Tim
                  Feb 25 at 14:42

                  “That is the only way” for NFS, whereas “pcmanfm uses gvfs, a GNOME Virtual FileSystem. It has SMB support in the gvfs-backends package, which depends on libsmbclient and suggests samba-common. ” Does gvfs, not have NFS support? Surprising if yes, given that NFS seems more native to Linux than Samba is

                  – Tim
                  Feb 25 at 14:42

                  Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                  – telcoM
                  Feb 26 at 8:52

                  Looks like I was wrong… there is a NFS backend for GVFS, but it seems to be packaged separately, so it might be still experimental or have other issues with it. The NFS protocol was originally designed for sharing disks between multi-user systems, so it does not quite have a concept of “allow only this one particular user to access the share according to their permissions”: the protocol basically allows full access and trusts that the client will restrict the client-side users as appropriate. But if the client is evil, it can do anything… the root_squash was the first fix for this.

                  – telcoM
                  Feb 26 at 8:52

                  2

                  Tim, you ask more than one question. But let me answer one (which I found interesting)

                  You do not need to mount the NFS share. You can access it on this way:

                  cd /net/<NFS server IP or hostname/path/to/shared/dir
                  

                  and then copy, view, etc. the files and directories inside. You do not need to specity the protocol as this (/net ) is a special directory like /proc for example. TO use /net you need to install autofs package.

                  You can mount SMB share on this way:

                  mount -t cifs -o user=<username> //<IP or hostname of SMB server>/<share name> /mount/point
                  

                  For more details you can check Samba documentation

                  share|improve this answer

                  • Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                    – Tim
                    Feb 25 at 11:36

                  • @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                    – Romeo Ninov
                    Feb 25 at 11:47

                  2

                  Tim, you ask more than one question. But let me answer one (which I found interesting)

                  You do not need to mount the NFS share. You can access it on this way:

                  cd /net/<NFS server IP or hostname/path/to/shared/dir
                  

                  and then copy, view, etc. the files and directories inside. You do not need to specity the protocol as this (/net ) is a special directory like /proc for example. TO use /net you need to install autofs package.

                  You can mount SMB share on this way:

                  mount -t cifs -o user=<username> //<IP or hostname of SMB server>/<share name> /mount/point
                  

                  For more details you can check Samba documentation

                  share|improve this answer

                  • Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                    – Tim
                    Feb 25 at 11:36

                  • @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                    – Romeo Ninov
                    Feb 25 at 11:47

                  2

                  2

                  2

                  Tim, you ask more than one question. But let me answer one (which I found interesting)

                  You do not need to mount the NFS share. You can access it on this way:

                  cd /net/<NFS server IP or hostname/path/to/shared/dir
                  

                  and then copy, view, etc. the files and directories inside. You do not need to specity the protocol as this (/net ) is a special directory like /proc for example. TO use /net you need to install autofs package.

                  You can mount SMB share on this way:

                  mount -t cifs -o user=<username> //<IP or hostname of SMB server>/<share name> /mount/point
                  

                  For more details you can check Samba documentation

                  share|improve this answer

                  Tim, you ask more than one question. But let me answer one (which I found interesting)

                  You do not need to mount the NFS share. You can access it on this way:

                  cd /net/<NFS server IP or hostname/path/to/shared/dir
                  

                  and then copy, view, etc. the files and directories inside. You do not need to specity the protocol as this (/net ) is a special directory like /proc for example. TO use /net you need to install autofs package.

                  You can mount SMB share on this way:

                  mount -t cifs -o user=<username> //<IP or hostname of SMB server>/<share name> /mount/point
                  

                  For more details you can check Samba documentation

                  share|improve this answer

                  share|improve this answer

                  share|improve this answer

                  edited Feb 25 at 12:50

                  answered Feb 25 at 11:29

                  Romeo NinovRomeo Ninov

                  6,79432129

                  6,79432129

                  • Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                    – Tim
                    Feb 25 at 11:36

                  • @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                    – Romeo Ninov
                    Feb 25 at 11:47

                  • Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                    – Tim
                    Feb 25 at 11:36

                  • @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                    – Romeo Ninov
                    Feb 25 at 11:47

                  Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                  – Tim
                  Feb 25 at 11:36

                  Thanks. (1) Why is there no protocol name like nfs:// in the URL in your cd command, while I have to type smb:// in the address bar of a file manager? (2) can you mount a samba shared directory? If yes, how?

                  – Tim
                  Feb 25 at 11:36

                  @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                  – Romeo Ninov
                  Feb 25 at 11:47

                  @Tim, you can mount SMB share on the same way you mount filesystem, see my edited answer

                  – Romeo Ninov
                  Feb 25 at 11:47

                  draft saved
                  draft discarded

                  Thanks for contributing an answer to Unix & Linux Stack Exchange!

                  • Please be sure to answer the question. Provide details and share your research!

                  But avoid

                  • Asking for help, clarification, or responding to other answers.
                  • Making statements based on opinion; back them up with references or personal experience.

                  To learn more, see our tips on writing great answers.

                  draft saved

                  draft discarded

                  StackExchange.ready(
                  function () {
                  StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502846%2fwhy-are-samba-client-and-nfs-client-used-differently%23new-answer’, ‘question_page’);
                  }
                  );

                  Post as a guest

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Required, but never shown

                  Mosaic (web browser)

                  web browser
                  NCSA Mosaic
                  NCSA Mosaic Logo.gif
                  NCSA Mosaic 3.0 for Microsoft Windows

                  NCSA Mosaic 3.0 for Microsoft Windows
                  Developer(s) NCSA
                  Initial release 0.5 / January 23, 1993; 26 years ago (1993-01-23)[1]
                  Final release
                  3.0
                  / January 7, 1997; 22 years ago (1997-01-07)
                  Written in C[2]
                  Platform AmigaOS
                  Classic Mac OS
                  Unix
                  OpenVMS
                  Microsoft Windows
                  Available in English
                  Type Web browser
                  License Proprietary
                  Website www.ncsa.illinois.edu/enabling/mosaic

                  NCSA Mosaic, or simply Mosaic, is the web browser that popularized the World Wide Web and the Internet. It was also a client for earlier internet protocols such as File Transfer Protocol, Network News Transfer Protocol, and Gopher. The browser was named for its support of multiple internet protocols.[3] Its intuitive interface, reliability, Microsoft Windows port and simple installation all contributed to its popularity within the web, as well as on Microsoft operating systems.[4] Mosaic was also the first browser to display images inline with text instead of displaying images in a separate window.[5] While often described as the first graphical web browser, Mosaic was preceded by WorldWideWeb, the lesser-known Erwise[6] and ViolaWWW.

                  Mosaic was developed at the National Center for Supercomputing Applications (NCSA)[5] at the University of Illinois at Urbana–Champaign beginning in late 1992. NCSA released the browser in 1993,[7] and officially discontinued development and support on January 7, 1997.[8]

                  Starting in 1995 Mosaic lost market share to Netscape Navigator, and by 1997 only had a tiny fraction of users left, by which time the project was discontinued. Microsoft licensed Mosaic to create Internet Explorer in 1995.

                  Contents

                  • 1 History
                  • 2 Licensing
                  • 3 Features
                  • 4 Impact of Mosaic
                  • 5 Branches and descendants
                  • 6 See also
                  • 7 References
                  • 8 Further reading
                  • 9 External links

                  History

                  Mosaic 1.0 running under System 7.1, displaying the Mosaic Communications Corporation (later Netscape) website.

                  After trying ViolaWWW, David Thompson demonstrated it to the NCSA software design group; Marc Andreessen.[9] Andreessen and Eric Bina originally designed and programmed NCSA Mosaic for Unix’s X Window System called xmosaic.[5][7][9][10] Then, in December 1991, the Gore Bill created and introduced by then Senator and future Vice President Al Gore was passed, which provided the funding for the Mosaic project. Development began in December 1992. Marc Andreessen announced the project on January 23, 1993.[11] The first alpha release (numbered 0.1a) was published in June 1993, and the first beta release (numbered 0.6b) followed quickly thereafter in September 1993. Ports to Microsoft Windows and Macintosh had been released in September.[9] A port of Mosaic to the Commodore Amiga was available by October 1993. NCSA Mosaic for Unix (X-Windows) version 2.0 was released on November 10, 1993.[12] Version 1.0 for Microsoft Windows was released on November 11, 1993.[13][14] From 1994 to 1997, the National Science Foundation supported the further development of Mosaic.[15]

                  Marc Andreessen, the leader of the team that developed Mosaic, left NCSA and, with James H. Clark, one of the founders of Silicon Graphics, Inc. (SGI), and four other former students and staff of the University of Illinois, started Mosaic Communications Corporation. Mosaic Communications eventually became Netscape Communications Corporation, producing Netscape Navigator. Mosaic’s popularity as a separate browser began to lessen upon the release of Andreessen’s Netscape Navigator in 1994. This was noted at the time in The HTML Sourcebook: The Complete Guide to HTML: “Netscape Communications has designed an all-new WWW browser Netscape, that has significant enhancements over the original Mosaic program.”[16]:332

                  1994 saw the first commercial product to incorporate Mosaic: SCO Global Access, a modified version of its Open Desktop version of Unix that served as an Internet gateway.[17]

                  By 1998 its user base had almost completely evaporated, being replaced by other web browsers.

                  Licensing

                  The licensing terms for NCSA Mosaic were generous for a proprietary software program. In general, non-commercial use was free of charge for all versions (with certain limitations). Additionally, the X Window System/Unix version publicly provided source code (source code for the other versions was available after agreements were signed). Despite persistent rumors to the contrary, however, Mosaic was never released as open source software during its brief reign as a major browser; there were always constraints on permissible uses without payment.

                  As of 1993[update], license holders included these:[18]

                  • Amdahl Corporation
                  • Fujitsu Limited (Product: Infomosaic, a Japanese version of Mosaic. Price: Yen5,000 (approx US$50)
                  • Infoseek Corporation (Product: No commercial Mosaic. May use Mosaic as part of a commercial database effort)
                  • Quadralay Corporation (Consumer version of Mosaic. Also using Mosaic in its online help and information product, GWHIS. Price: US$249)
                  • Quarterdeck Office Systems Inc.
                  • The Santa Cruz Operation Inc. (Product: Incorporating Mosaic into “SCO Global Access,” a communications package for Unix machines that works with SCO’s Open Server. Runs a graphical e-mail service and accesses newsgroups.)
                  • SPRY Inc. (Products: A communication suite: Air Mail, Air News, Air Mosaic, etc. Also producing Internet In a Box with O’Reilly & Associates. Price: US$149–$399 for Air Series.)
                  • Spyglass, Inc. (Product: Relicensing to other vendors. Signed deal with Digital Equipment Corp., which would ship Mosaic with all its machines.)

                  Features

                  Robert Reid notes that Andreessen’s team hoped:

                  .mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 40px}.mw-parser-output .templatequote .templatequotecite{line-height:1.5em;text-align:left;padding-left:1.6em;margin-top:0}

                  … to rectify many of the shortcomings of the very primitive prototypes then floating around the Internet. Most significantly, their work transformed the appeal of the Web from niche uses in the technical area to mass-market appeal. In particular, these University of Illinois students made two key changes to the Web browser, which hyper-boosted its appeal: they added graphics to what was otherwise boring text-based software, and, most importantly, they ported the software from so-called Unix computers that are popular only in technical and academic circles, to the [Microsoft] Windows operating system, which is used on more than 80 percent of the computers in the world, especially personal and commercial computers.[19]:xxv

                  Mosaic is based on the libwww library[20][21][22] and thus supported a wide variety of Internet protocols included in the library: Archie, FTP, gopher, HTTP, NNTP, telnet, WAIS.[7]

                  Mosaic is not the first web browser for Microsoft Windows; this is Thomas R. Bruce’s little-known Cello. The Unix version of Mosaic was already famous before the Microsoft Windows, Amiga, and Mac versions were released. Other than displaying images embedded in the text rather than in a separate window, Mosaic’s original feature set is not greater than of the browsers on which it was modeled, such as ViolaWWW.[5] But Mosaic was the first browser written and supported by a team of full-time programmers, was reliable and easy enough for novices to install, and the inline graphics reportedly proved immensely appealing. Mosaic is said to have made the Web accessible to the ordinary person for the first time and already had 53% market share in 1995.[23].

                  Impact of Mosaic

                  Mosaic was the web browser that led to the Internet boom of the 1990s[19]:xlii. Other browsers existed during this period, notably Erwise, ViolaWWW, MidasWWW and tkWWW did not have the same effect as Mosaic on public use of the Internet.[24]

                  In the October 1994 issue of Wired Magazine, Gary Wolfe notes in the article titled “The (Second Phase of the) Revolution Has Begun: Don’t look now, but Prodigy, AOL, and CompuServe are all suddenly obsolete – and Mosaic is well on its way to becoming the world’s standard interface”:

                  When it comes to smashing a paradigm, pleasure is not the most important thing. It is the only thing. If this sounds wrong, consider Mosaic. Mosaic is the celebrated graphical “browser” that allows users to travel through the world of electronic information using a point-and-click interface. Mosaic’s charming appearance encourages users to load their own documents onto the Net, including color photos, sound bites, video clips, and hypertext “links” to other documents. By following the links – click, and the linked document appears – you can travel through the online world along paths of whim and intuition. Mosaic is not the most direct way to find online information. Nor is it the most powerful. It is merely the most pleasurable way, and in the 18 months since it was released, Mosaic has incited a rush of excitement and commercial energy unprecedented in the history of the Net.[18]

                  Reid also refers to Matthew K. Gray’s website, Internet Statistics: Growth and Usage of the Web and the Internet, which indicates a dramatic leap in web use around the time of Mosaic’s introduction.[19]:xxv

                  In addition, David Hudson concurs with Reid, noting that:

                  Marc Andreessen’s realization of Mosaic, based on the work of Berners-Lee and the hypertext theorists before him, is generally recognized as the beginning of the web as it is now known. Mosaic, the first web browser to win over the Net masses, was released in 1993 and made freely accessible to the public. The adjective phenomenal, so often overused in this industry, is genuinely applicable to the… ‘explosion’ in the growth of the web after Mosaic appeared on the scene. Starting with next to nothing, the rates of the web growth (quoted in the press) hovering around tens of thousands of percent over ridiculously short periods of time were no real surprise.[25]:42

                  Ultimately, web browsers such as Mosaic became the killer applications of the 1990s. Web browsers were the first to bring a graphical interface to search tools the Internet’s burgeoning wealth of distributed information services. A mid-1994 guide lists Mosaic alongside the traditional, text-oriented information search tools of the time, Archie and Veronica, Gopher, and WAIS[26] but Mosaic quickly subsumed and displaced them all. Joseph Hardin, the director of the NCSA group within which Mosaic was developed, said downloads were up to 50,000 a month in mid-1994.[27]

                  In November 1992, there were twenty-six websites in the world[28] and each one attracted attention. In its release year of 1993, Mosaic had a What’s New page, and about one new link was being added per day. This was a time when access to the Internet was expanding rapidly outside its previous domain of academia and large industrial research institutions. Yet it was the availability of Mosaic and Mosaic-derived graphical browsers themselves that drove the explosive growth of the Web to over 10,000 sites by Aug 1995 and millions by 1998.[29] Metcalfe expressed the pivotal role of Mosaic this way:

                  In the Web’s first generation, Tim Berners-Lee launched the Uniform Resource Locator (URL), Hypertext Transfer Protocol (HTTP), and HTML standards with prototype Unix-based servers and browsers. A few people noticed that the Web might be better than Gopher.

                  In the second generation, Marc Andreessen and Eric Bina developed NCSA Mosaic at the University of Illinois. Several million then suddenly noticed that the Web might be better than sex.

                  In the third generation, Andreessen and Bina left NCSA to found Netscape…

                  — —Bob Metcalfe[30][31]

                  Branches and descendants

                  Netscape Navigator was later developed by Netscape, which employed many of the original Mosaic authors; however, it intentionally shared no code with Mosaic. Netscape Navigator’s code descendant is Mozilla Firefox.[32]

                  Spyglass, Inc. licensed the technology and trademarks from NCSA for producing their own web browser but never used any of the NCSA Mosaic source code.[33]Microsoft licensed Spyglass Mosaic in 1995 for US$2 million, modified it, and renamed it Internet Explorer.[34] After a later auditing dispute, Microsoft paid Spyglass $8 million.[34][35] The 1995 user guide The HTML Sourcebook: The Complete Guide to HTML, specifically states, in a section called Coming Attractions, that Internet Explorer “will be based on the Mosaic program”.[16]:331 Versions of Internet Explorer before version 7 stated “Based on NCSA Mosaic” in the About box. Internet Explorer 7 was audited by Microsoft to ensure that it contained no Mosaic code[36], and thus no longer credits Spyglass or Mosaic.

                  After NCSA stopped work on Mosaic, development of the NCSA Mosaic for the X Window System source code was continued by several independent groups. These independent development efforts include mMosaic (multicast Mosaic)[37] which ceased development in early 2004, and Mosaic-CK and VMS Mosaic.

                  VMS Mosaic, a version specifically targeting OpenVMS operating system, was one of the longest-lived efforts to maintain Mosaic. Using the VMS support already built-in in original version (Bjorn S. Nilsson ported Mosaic 1.2 to VMS in the summer of 1993),[38] developers incorporated a substantial part of the HTML engine from mMosaic, another defunct flavor of the browser.[39] the last (4.2) release[update], VMS Mosaic supported HTML 4.0, OpenSSL, cookies, and various image formats including GIF, JPEG, PNG, BMP, TGA, TIFF and JPEG 2000 image formats.[40] The browser works on VAX, Alpha, and Itanium platforms.[41]

                  Another long-lived version of Mosaic – Mosaic-CK, developed by Cameron Kaiser – saw its last release (version 2.7ck9) on July 11, 2010; a maintenance release with minor compatibility fixes (version 2.7ck10) was released on 9 January 2015, followed by another one (2.7ck11) in October 2015.[42] The stated goal of the project is “Lynx with graphics” and runs on Mac OS X, Power MachTen, Linux and other compatible Unix-like OSs.[42]

                  See also

                  • Comparison of web browsers
                  • History of the World Wide Web
                  • List of web browsers

                  References

                  1. ^ Stewart, William. “Mosaic — The First Global Web Browser”. Retrieved 22 February 2011..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .citation .cs1-lock-free a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
                  2. ^ “xmosaic 1.2 source code”. NCSA. 1994-06-29. Retrieved 2009-06-02.
                  3. ^ Douglas Crockford (Sep 10, 2011). Crockford on JavaScript – Volume 1: The Early Years. YouTube. Event occurs at 1:35:50.
                  4. ^ Andreessen, Marc. “Mosaic — The First Global Web Browser”. Retrieved 2006-12-16.
                  5. ^ abcd Berners-Lee, Tim. “What were the first WWW browsers?”. World Wide Web Consortium. Retrieved 2010-06-15.
                  6. ^ Holwerda, Thom (3 Mar 2009). “The World’s First Graphical Browser: Erwise”. OSNews. Retrieved 2009-06-02.
                  7. ^ abc Vetter, Ronald J. (October 1994). “Mosaic and the World-Wide Web” (PDF). North Dakota State University. Archived from the original (PDF) on 24 August 2014. Retrieved 20 November 2010.
                  8. ^ “Exhibits – Internet History – 1990’s”. Computer History Museum. 2006. Retrieved 2006-12-16.
                  9. ^ abc Berners-Lee, Tim. “A Brief History of the Web”. World Wide Web Consortium. Retrieved 16 August 2010.
                  10. ^ Andreessen, Marc; Bina, Eric (1994). “NCSA Mosaic: A Global Hypermedia System”. Internet Research. Bingley, U.K.: Emerald Group Publishing Limited. 4 (1): 7–17. doi:10.1108/10662249410798803. ISSN 1066-2243.
                  11. ^ “NCSA X Mosaic 0.5 released”. Retrieved 2013-07-06.
                  12. ^ “NCSA Mosaic for X 2.0 available”. Retrieved 2013-07-06.
                  13. ^ “The History of NCSA Mosaic”. NCSA.
                  14. ^ “About NCSA Mosaic”. NCSA. Archived from the original on September 27, 2013.
                  15. ^ https://nsf.gov/discoveries/disc_summ.jsp?cntn_id=100274&org=NSF
                  16. ^ ab Graham, Ian S. (1995). The HTML Sourcebook: The Complete Guide to HTML (First ed.). New York: John Wiley & Sons. ISBN 0-471-11849-4.
                  17. ^ Mace, Scott (7 March 1994). “SCO brings Internet access to PCs”. InfoWorld. p. 47.
                  18. ^ ab Wolfe, Gary (October 1994). “The (Second Phase of the) Revolution Has Begun”. Wired. 2: 10. Retrieved January 7, 2015.
                  19. ^ abc Reid, Robert H. (1997). Architects of the Web: 1000 Days That Built the Future of Business. John Wiley and Sons. ISBN 0-471-17187-5.
                  20. ^ Kahan, José (7 June 2002). “Change History of libwww”. World Wide Web Consortium. Retrieved 30 May 2010.
                  21. ^ Petrie, Charles; Cailliau, Robert (November 1997). “Interview Robert Cailliau on the WWW Proposal: “How It Really Happened.“. Institute of Electrical and Electronics Engineers. Retrieved 18 August 2010.
                  22. ^ Kahan, José (5 August 1999). “Why Libwww?”. Retrieved 15 June 2010.
                  23. ^ Cockburn, Andy; Jones, Steve (6 December 2000). “Which Way Now? Analysing and Easing Inadequacies in WWW Navigation”. CiteSeerX 10.1.1.25.8504.
                  24. ^ “A Little History of the World Wide Web From 1960s to 1995”. CERN. 2001-05-05. Retrieved 2006-12-16.
                  25. ^ Hudson, David (1997). Rewired: A Brief and Opinionated Net History. Indianapolis: Macmillan Technical Publishing. ISBN 1-57870-003-5.
                  26. ^ Lucey, Sean (9 May 1994). “Internet tools help navigate the busy virtual highway”. MacWeek: 51.
                  27. ^ Levitt, Jason (9 May 1994). “A Matter of Attribution: Can’t Forget to Give Credit for Mosaic Where Credit is Due”. Open Systems Today: 71.
                  28. ^ “home of the first website”. Retrieved 2014-06-16.
                  29. ^ Web Server Survey | Netcraft. News.netcraft.com. Retrieved on 2014-06-16.
                  30. ^ “InfoWorld”. 17 (34). August 21, 1995.
                  31. ^ Roads and Crossroads of Internet History Chapter 4: Birth of the Web
                  32. ^ Clark, Jim (1999). Netscape Time. St. Martin’s Press.
                  33. ^ Sink, Eric (2003-05-15). “Memoirs From the Browser Wars”. Eric Sink’s Weblog. Retrieved 2006-12-16.
                  34. ^ ab Thurrott, Paul (22 January 1997). “Microsoft and Spyglass kiss and make up”. Archived from the original on 19 September 2012. Retrieved 9 February 2011.
                  35. ^ Elstrom, Peter (22 January 1997). “MICROSOFT’S $8 MILLION GOODBYE TO SPYGLASS”. Bloomberg Businessweek. Retrieved 9 February 2011.
                  36. ^ https://tedium.co/2015/03/19/the-history-of-internet-explorer-hatred/
                  37. ^ dauphin, Gilles (1996). “W3C mMosaic”. World Wide Web Consortium. Retrieved 2007-11-02.
                  38. ^ Nilsson, Bjorn (1993). “README.VMS”. National Center for Supercomputing Applications. Retrieved 2007-11-02.
                  39. ^ NCSA and VMS Mosaic Version Information
                  40. ^ “OpenVMS.org – OpenVMS Community Portal (VMS Mosaic V4.2)”. OpenVMS.org. 2007. Retrieved 2007-11-02.
                  41. ^ “Mosaic 4.0 freeware_readme.txt”. Hewlett-Packard Development Company, L.P. 2006. Retrieved 2007-11-02.
                  42. ^ ab “Official Mosaic-CK homepage”.

                  Further reading

                  • Tikka, Juha-Pekka (March 3, 2009). “The Greatest Internet Pioneers You Never Heard Of: The Story of Erwise and Four Finns Who Showed the Way to the Web Browser”. Xconomy.

                  External links

                  • Official website
                  • Goldberg, Ken (1994). Beyond the web: Excavating the real world via mosaic. Second International WWW Conference.
                  • NCSA Mosaic 2.7 on GitHub
                  • Kaiser, Cameron (2015-10-24). “Mosaic-CK: An Updated, Unsupported Port of NCSA Mosaic”.


                  Cross Compiling GCC – ‘glibc’ on windows for linux platform

                  The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

                  0

                  I am trying to cross compile the gcc for linux – i686-elf platform from windows PC. As per the toolchain steps, I have successfully compiled:

                  1. binutils using /binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
                  2. basic gcc using gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
                  3. linux headers using make headers_install ARCH=i386 CROSS_COMPILE=i386-linux- INDTALL_HDR_PATH=my/path/
                  4. NOW, I am trying to compile the ‘glibc’ core c library using CC=${TARGET}-gcc ../glibc-2.29/configure --target=$TARGET --host=i686-pc-linux-gnu --prefix=$PREFIX --with-headers=$HOME/opt/cross/include

                  BUT I am getting the follwing errors 🙁

                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__close_nocancel_nostatus':
                  /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/not-cancel.h:57: undefined reference to `__GI___close_nocancel'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `invalid_name':
                  /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/posix/opendir.c:43: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fxstatat64':
                  /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:55: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:37: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__closedir':
                  /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:52: undefined reference to `__GI___close_nocancel'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:36: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__readdir':
                  /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:41: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:76: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:71: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__rewinddir':
                  /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/rewinddir.c:31: undefined reference to `__lseek'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__getdents':
                  /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:96: undefined reference to `__lseek64'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:99: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:54: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fdopendir':
                  /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:32: undefined reference to `__GI___fxstat64'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:41: undefined reference to `__GI___fcntl64_nocancel'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:36: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:46: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_scratch_buffer_set_array_size':
                  /home/MyPcUserName/src/glibc-2.29/malloc/scratch_buffer_set_array_size.c:41: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mmap':
                  /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:39: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:42: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `munmap':
                  /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mprotect':
                  /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `uname':
                  /home/MyPcUserName/src/glibc-2.29/posix/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_sigaction':
                  /home/MyPcUserName/src/glibc-2.29/signal/../sysdeps/unix/sysv/linux/sigaction.c:58: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__sigaction':
                  /home/MyPcUserName/src/glibc-2.29/signal/../nptl/sigaction.c:26: undefined reference to `rtld_errno'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `setitimer':
                  /home/MyPcUserName/src/glibc-2.29/time/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/ld.so.new: hidden symbol `__lseek64' isn't defined
                  /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: final link failed: bad value
                  collect2: error: ld returned 1 exit status
                  make[2]: *** [Makefile:496: /home/MyPcUserName/src/build-glibc/elf/ld.so] Error 1
                  make[2]: Leaving directory '/home/MyPcUserName/src/glibc-2.29/elf'
                  make[1]: *** [Makefile:258: elf/subdir_lib] Error 2
                  make[1]: Leaving directory '/home/MyPcUserName/src/glibc-2.29'
                  make: *** [Makefile:9: all] Error 2
                  

                  Does anybody has any idea.. How to deal with this issue ??

                  share|improve this question

                    0

                    I am trying to cross compile the gcc for linux – i686-elf platform from windows PC. As per the toolchain steps, I have successfully compiled:

                    1. binutils using /binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
                    2. basic gcc using gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
                    3. linux headers using make headers_install ARCH=i386 CROSS_COMPILE=i386-linux- INDTALL_HDR_PATH=my/path/
                    4. NOW, I am trying to compile the ‘glibc’ core c library using CC=${TARGET}-gcc ../glibc-2.29/configure --target=$TARGET --host=i686-pc-linux-gnu --prefix=$PREFIX --with-headers=$HOME/opt/cross/include

                    BUT I am getting the follwing errors 🙁

                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__close_nocancel_nostatus':
                    /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/not-cancel.h:57: undefined reference to `__GI___close_nocancel'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `invalid_name':
                    /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/posix/opendir.c:43: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fxstatat64':
                    /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:55: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:37: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__closedir':
                    /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:52: undefined reference to `__GI___close_nocancel'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:36: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__readdir':
                    /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:41: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:76: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:71: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__rewinddir':
                    /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/rewinddir.c:31: undefined reference to `__lseek'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__getdents':
                    /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:96: undefined reference to `__lseek64'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:99: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:54: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fdopendir':
                    /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:32: undefined reference to `__GI___fxstat64'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:41: undefined reference to `__GI___fcntl64_nocancel'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:36: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:46: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_scratch_buffer_set_array_size':
                    /home/MyPcUserName/src/glibc-2.29/malloc/scratch_buffer_set_array_size.c:41: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mmap':
                    /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:39: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:42: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `munmap':
                    /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mprotect':
                    /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `uname':
                    /home/MyPcUserName/src/glibc-2.29/posix/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_sigaction':
                    /home/MyPcUserName/src/glibc-2.29/signal/../sysdeps/unix/sysv/linux/sigaction.c:58: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__sigaction':
                    /home/MyPcUserName/src/glibc-2.29/signal/../nptl/sigaction.c:26: undefined reference to `rtld_errno'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `setitimer':
                    /home/MyPcUserName/src/glibc-2.29/time/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/ld.so.new: hidden symbol `__lseek64' isn't defined
                    /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: final link failed: bad value
                    collect2: error: ld returned 1 exit status
                    make[2]: *** [Makefile:496: /home/MyPcUserName/src/build-glibc/elf/ld.so] Error 1
                    make[2]: Leaving directory '/home/MyPcUserName/src/glibc-2.29/elf'
                    make[1]: *** [Makefile:258: elf/subdir_lib] Error 2
                    make[1]: Leaving directory '/home/MyPcUserName/src/glibc-2.29'
                    make: *** [Makefile:9: all] Error 2
                    

                    Does anybody has any idea.. How to deal with this issue ??

                    share|improve this question

                      0

                      0

                      0

                      I am trying to cross compile the gcc for linux – i686-elf platform from windows PC. As per the toolchain steps, I have successfully compiled:

                      1. binutils using /binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
                      2. basic gcc using gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
                      3. linux headers using make headers_install ARCH=i386 CROSS_COMPILE=i386-linux- INDTALL_HDR_PATH=my/path/
                      4. NOW, I am trying to compile the ‘glibc’ core c library using CC=${TARGET}-gcc ../glibc-2.29/configure --target=$TARGET --host=i686-pc-linux-gnu --prefix=$PREFIX --with-headers=$HOME/opt/cross/include

                      BUT I am getting the follwing errors 🙁

                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__close_nocancel_nostatus':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/not-cancel.h:57: undefined reference to `__GI___close_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `invalid_name':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/posix/opendir.c:43: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fxstatat64':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:55: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:37: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__closedir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:52: undefined reference to `__GI___close_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:36: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__readdir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:41: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:76: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:71: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__rewinddir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/rewinddir.c:31: undefined reference to `__lseek'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__getdents':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:96: undefined reference to `__lseek64'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:99: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:54: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fdopendir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:32: undefined reference to `__GI___fxstat64'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:41: undefined reference to `__GI___fcntl64_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:36: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:46: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_scratch_buffer_set_array_size':
                      /home/MyPcUserName/src/glibc-2.29/malloc/scratch_buffer_set_array_size.c:41: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mmap':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:39: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:42: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `munmap':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mprotect':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `uname':
                      /home/MyPcUserName/src/glibc-2.29/posix/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_sigaction':
                      /home/MyPcUserName/src/glibc-2.29/signal/../sysdeps/unix/sysv/linux/sigaction.c:58: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__sigaction':
                      /home/MyPcUserName/src/glibc-2.29/signal/../nptl/sigaction.c:26: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `setitimer':
                      /home/MyPcUserName/src/glibc-2.29/time/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/ld.so.new: hidden symbol `__lseek64' isn't defined
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: final link failed: bad value
                      collect2: error: ld returned 1 exit status
                      make[2]: *** [Makefile:496: /home/MyPcUserName/src/build-glibc/elf/ld.so] Error 1
                      make[2]: Leaving directory '/home/MyPcUserName/src/glibc-2.29/elf'
                      make[1]: *** [Makefile:258: elf/subdir_lib] Error 2
                      make[1]: Leaving directory '/home/MyPcUserName/src/glibc-2.29'
                      make: *** [Makefile:9: all] Error 2
                      

                      Does anybody has any idea.. How to deal with this issue ??

                      share|improve this question

                      I am trying to cross compile the gcc for linux – i686-elf platform from windows PC. As per the toolchain steps, I have successfully compiled:

                      1. binutils using /binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
                      2. basic gcc using gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
                      3. linux headers using make headers_install ARCH=i386 CROSS_COMPILE=i386-linux- INDTALL_HDR_PATH=my/path/
                      4. NOW, I am trying to compile the ‘glibc’ core c library using CC=${TARGET}-gcc ../glibc-2.29/configure --target=$TARGET --host=i686-pc-linux-gnu --prefix=$PREFIX --with-headers=$HOME/opt/cross/include

                      BUT I am getting the follwing errors 🙁

                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__close_nocancel_nostatus':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/not-cancel.h:57: undefined reference to `__GI___close_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `invalid_name':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/posix/opendir.c:43: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fxstatat64':
                      /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:55: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/elf/../sysdeps/unix/sysv/linux/fxstatat64.c:37: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__closedir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:52: undefined reference to `__GI___close_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/closedir.c:36: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__readdir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:41: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:76: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/readdir.c:71: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__rewinddir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/rewinddir.c:31: undefined reference to `__lseek'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__getdents':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:96: undefined reference to `__lseek64'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:99: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/unix/sysv/linux/getdents.c:54: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__fdopendir':
                      /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:32: undefined reference to `__GI___fxstat64'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:41: undefined reference to `__GI___fcntl64_nocancel'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:36: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/dirent/../sysdeps/posix/fdopendir.c:46: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_scratch_buffer_set_array_size':
                      /home/MyPcUserName/src/glibc-2.29/malloc/scratch_buffer_set_array_size.c:41: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mmap':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:39: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/sysv/linux/mmap.c:42: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `munmap':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__mprotect':
                      /home/MyPcUserName/src/glibc-2.29/misc/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `uname':
                      /home/MyPcUserName/src/glibc-2.29/posix/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__libc_sigaction':
                      /home/MyPcUserName/src/glibc-2.29/signal/../sysdeps/unix/sysv/linux/sigaction.c:58: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `__sigaction':
                      /home/MyPcUserName/src/glibc-2.29/signal/../nptl/sigaction.c:26: undefined reference to `rtld_errno'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/librtld.os: in function `setitimer':
                      /home/MyPcUserName/src/glibc-2.29/time/../sysdeps/unix/syscall-template.S:78: undefined reference to `__syscall_error'
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: /home/MyPcUserName/src/build-glibc/elf/ld.so.new: hidden symbol `__lseek64' isn't defined
                      /home/MyPcUserName/opt/cross/lib/gcc/i686-elf/7.4.0/../../../../i686-elf/bin/ld: final link failed: bad value
                      collect2: error: ld returned 1 exit status
                      make[2]: *** [Makefile:496: /home/MyPcUserName/src/build-glibc/elf/ld.so] Error 1
                      make[2]: Leaving directory '/home/MyPcUserName/src/glibc-2.29/elf'
                      make[1]: *** [Makefile:258: elf/subdir_lib] Error 2
                      make[1]: Leaving directory '/home/MyPcUserName/src/glibc-2.29'
                      make: *** [Makefile:9: all] Error 2
                      

                      Does anybody has any idea.. How to deal with this issue ??

                      linux gcc glibc cross-compilation elf

                      share|improve this question

                      share|improve this question

                      share|improve this question

                      share|improve this question

                      edited Feb 25 at 12:01

                      alpha

                      asked Feb 25 at 11:26

                      alphaalpha

                      12

                      12

                          0

                          active

                          oldest

                          votes

                          Your Answer

                          StackExchange.ready(function() {
                          var channelOptions = {
                          tags: “”.split(” “),
                          id: “106”
                          };
                          initTagRenderer(“”.split(” “), “”.split(” “), channelOptions);

                          StackExchange.using(“externalEditor”, function() {
                          // Have to fire editor after snippets, if snippets enabled
                          if (StackExchange.settings.snippets.snippetsEnabled) {
                          StackExchange.using(“snippets”, function() {
                          createEditor();
                          });
                          }
                          else {
                          createEditor();
                          }
                          });

                          function createEditor() {
                          StackExchange.prepareEditor({
                          heartbeatType: ‘answer’,
                          autoActivateHeartbeat: false,
                          convertImagesToLinks: false,
                          noModals: true,
                          showLowRepImageUploadWarning: true,
                          reputationToPostImages: null,
                          bindNavPrevention: true,
                          postfix: “”,
                          imageUploader: {
                          brandingHtml: “Powered by u003ca class=”icon-imgur-white” href=”https://imgur.com/”u003eu003c/au003e”,
                          contentPolicyHtml: “User contributions licensed under u003ca href=”https://creativecommons.org/licenses/by-sa/3.0/”u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href=”https://stackoverflow.com/legal/content-policy”u003e(content policy)u003c/au003e”,
                          allowUrls: true
                          },
                          onDemand: true,
                          discardSelector: “.discard-answer”
                          ,immediatelyShowMarkdownHelp:true
                          });

                          }
                          });

                          draft saved
                          draft discarded

                          StackExchange.ready(
                          function () {
                          StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502847%2fcross-compiling-gcc-glibc-on-windows-for-linux-platform%23new-answer’, ‘question_page’);
                          }
                          );

                          Post as a guest

                          Required, but never shown

                          0

                          active

                          oldest

                          votes

                          0

                          active

                          oldest

                          votes

                          active

                          oldest

                          votes

                          active

                          oldest

                          votes

                          draft saved
                          draft discarded

                          Thanks for contributing an answer to Unix & Linux Stack Exchange!

                          • Please be sure to answer the question. Provide details and share your research!

                          But avoid

                          • Asking for help, clarification, or responding to other answers.
                          • Making statements based on opinion; back them up with references or personal experience.

                          To learn more, see our tips on writing great answers.

                          draft saved

                          draft discarded

                          StackExchange.ready(
                          function () {
                          StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f502847%2fcross-compiling-gcc-glibc-on-windows-for-linux-platform%23new-answer’, ‘question_page’);
                          }
                          );

                          Post as a guest

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Required, but never shown

                          Caron Accent v{a} doesn’t render without usepackage{xeCJK}

                          The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

                          3

                          I am encountering an odd problem. I want to create composite characters such as ǎ using the newunicodechar package. However, it only yields a result in combination with the xeCJK package.

                          This code produces missing characters:

                          documentclass[a4paper,12pt,article,oneside]{memoir}
                          usepackage{fontspec}
                          usepackage{xunicode}
                          
                          usepackage[british]{babel}
                          
                          setmainfont[Ligatures=TeX]{Minion Pro}
                          
                          usepackage{newunicodechar}
                          newunicodechar{ǚ}{v{ü}}
                          newunicodechar{Ǚ}{v{Ü}}
                          newunicodechar{ǎ}{v{a}}
                          newunicodechar{Ǎ}{v{A}}
                          newunicodechar{ǒ}{v{o}}
                          newunicodechar{Ǒ}{v{O}}
                          
                          
                          begin{document}
                          
                          ǚ Ǚ ǎ
                          
                          
                          end{document}
                          

                          If I load the xeCJK package then the characters render just fine.
                          Why is that? And how to generate composite characters without the named package?

                          Note:

                          • this is reproducible with other fonts that do not contain the unicode characters (e.g. Adobe Garamond Pro)
                          • Minion Pro does contain a caron character (unicode 02C7, index 136)
                          share|improve this question

                            3

                            I am encountering an odd problem. I want to create composite characters such as ǎ using the newunicodechar package. However, it only yields a result in combination with the xeCJK package.

                            This code produces missing characters:

                            documentclass[a4paper,12pt,article,oneside]{memoir}
                            usepackage{fontspec}
                            usepackage{xunicode}
                            
                            usepackage[british]{babel}
                            
                            setmainfont[Ligatures=TeX]{Minion Pro}
                            
                            usepackage{newunicodechar}
                            newunicodechar{ǚ}{v{ü}}
                            newunicodechar{Ǚ}{v{Ü}}
                            newunicodechar{ǎ}{v{a}}
                            newunicodechar{Ǎ}{v{A}}
                            newunicodechar{ǒ}{v{o}}
                            newunicodechar{Ǒ}{v{O}}
                            
                            
                            begin{document}
                            
                            ǚ Ǚ ǎ
                            
                            
                            end{document}
                            

                            If I load the xeCJK package then the characters render just fine.
                            Why is that? And how to generate composite characters without the named package?

                            Note:

                            • this is reproducible with other fonts that do not contain the unicode characters (e.g. Adobe Garamond Pro)
                            • Minion Pro does contain a caron character (unicode 02C7, index 136)
                            share|improve this question

                              3

                              3

                              3

                              0

                              I am encountering an odd problem. I want to create composite characters such as ǎ using the newunicodechar package. However, it only yields a result in combination with the xeCJK package.

                              This code produces missing characters:

                              documentclass[a4paper,12pt,article,oneside]{memoir}
                              usepackage{fontspec}
                              usepackage{xunicode}
                              
                              usepackage[british]{babel}
                              
                              setmainfont[Ligatures=TeX]{Minion Pro}
                              
                              usepackage{newunicodechar}
                              newunicodechar{ǚ}{v{ü}}
                              newunicodechar{Ǚ}{v{Ü}}
                              newunicodechar{ǎ}{v{a}}
                              newunicodechar{Ǎ}{v{A}}
                              newunicodechar{ǒ}{v{o}}
                              newunicodechar{Ǒ}{v{O}}
                              
                              
                              begin{document}
                              
                              ǚ Ǚ ǎ
                              
                              
                              end{document}
                              

                              If I load the xeCJK package then the characters render just fine.
                              Why is that? And how to generate composite characters without the named package?

                              Note:

                              • this is reproducible with other fonts that do not contain the unicode characters (e.g. Adobe Garamond Pro)
                              • Minion Pro does contain a caron character (unicode 02C7, index 136)
                              share|improve this question

                              I am encountering an odd problem. I want to create composite characters such as ǎ using the newunicodechar package. However, it only yields a result in combination with the xeCJK package.

                              This code produces missing characters:

                              documentclass[a4paper,12pt,article,oneside]{memoir}
                              usepackage{fontspec}
                              usepackage{xunicode}
                              
                              usepackage[british]{babel}
                              
                              setmainfont[Ligatures=TeX]{Minion Pro}
                              
                              usepackage{newunicodechar}
                              newunicodechar{ǚ}{v{ü}}
                              newunicodechar{Ǚ}{v{Ü}}
                              newunicodechar{ǎ}{v{a}}
                              newunicodechar{Ǎ}{v{A}}
                              newunicodechar{ǒ}{v{o}}
                              newunicodechar{Ǒ}{v{O}}
                              
                              
                              begin{document}
                              
                              ǚ Ǚ ǎ
                              
                              
                              end{document}
                              

                              If I load the xeCJK package then the characters render just fine.
                              Why is that? And how to generate composite characters without the named package?

                              Note:

                              • this is reproducible with other fonts that do not contain the unicode characters (e.g. Adobe Garamond Pro)
                              • Minion Pro does contain a caron character (unicode 02C7, index 136)

                              xetex fontspec accents xecjk newunicodechar

                              share|improve this question

                              share|improve this question

                              share|improve this question

                              share|improve this question

                              asked Feb 25 at 9:58

                              PaulPaul

                              12718

                              12718

                                  2 Answers
                                  2

                                  active

                                  oldest

                                  votes

                                  6

                                  The default setup doesn’t use unicode U+02C7, but the combining accent U+030C which is missing in your font. xecjk contains some code to use U+02C7 instead, but seems to use this code only if xunicode is loaded too – which is a bit of a pain, as normally one shouldn’t use it anymore.

                                  You can clone the xeCJK code by using add@accent. If more fonts are involved where some have the combining accent, some additional checks for glyph existence are probably needed.

                                  documentclass[a4paper,12pt,article,oneside]{memoir}
                                  
                                  usepackage{fontspec}
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
                                  
                                  usepackage{newunicodechar}
                                  makeatletter
                                  
                                  newunicodechar{ǚ}{add@accent{`^^^^02c7}{ü}}
                                  newunicodechar{Ǚ}{add@accent{`^^^^02c7}{Ü}}
                                  newunicodechar{ǎ}{add@accent{`^^^^02c7}{a}}
                                  makeatother
                                  %newunicodechar{Ǎ}{v{A}}
                                  %newunicodechar{ǒ}{v{o}}
                                  %newunicodechar{Ǒ}{v{O}}
                                  %
                                  begin{document}
                                  abc 
                                  
                                  ǚ Ǚ ǎ
                                  
                                  end{document}
                                  

                                  enter image description here

                                  share|improve this answer

                                  • Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                    – Paul
                                    Feb 25 at 11:06

                                  • No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                    – Ulrike Fischer
                                    Feb 25 at 11:11

                                  • Are you sure I can just submit it to the Latex2e github?

                                    – Paul
                                    Feb 25 at 11:34

                                  3

                                  Based on a trick by Egreg, this uses the accent primitive. I chose to simply redefine v.

                                  documentclass{standalone}
                                  usepackage{fontspec, newunicodechar}
                                  
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{Cardo}
                                  
                                  renewcommandv[1]{accentstring"02C7 #1}
                                  
                                  newunicodechar{ǚ}{v{ü}}
                                  newunicodechar{Ǚ}{v{Ü}}
                                  newunicodechar{ǎ}{v{a}}
                                  newunicodechar{Ǎ}{v{A}}
                                  newunicodechar{ǒ}{v{o}}
                                  newunicodechar{Ǒ}{v{O}}
                                  
                                  begin{document}
                                  
                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ
                                  
                                  end{document}
                                  

                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ

                                  I picked Cardo as a common font that contains the caron accent, but not the precomposed ǚ.

                                  share|improve this answer

                                  • I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                    – Paul
                                    Feb 25 at 11:23

                                  • You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                    – Davislor
                                    Feb 25 at 11:32

                                  • I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                    – Paul
                                    Feb 25 at 11:34

                                  • I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                    – Davislor
                                    Feb 25 at 11:42

                                  • I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                    – Paul
                                    Feb 25 at 12:27

                                  Your Answer

                                  StackExchange.ready(function() {
                                  var channelOptions = {
                                  tags: “”.split(” “),
                                  id: “85”
                                  };
                                  initTagRenderer(“”.split(” “), “”.split(” “), channelOptions);

                                  StackExchange.using(“externalEditor”, function() {
                                  // Have to fire editor after snippets, if snippets enabled
                                  if (StackExchange.settings.snippets.snippetsEnabled) {
                                  StackExchange.using(“snippets”, function() {
                                  createEditor();
                                  });
                                  }
                                  else {
                                  createEditor();
                                  }
                                  });

                                  function createEditor() {
                                  StackExchange.prepareEditor({
                                  heartbeatType: ‘answer’,
                                  autoActivateHeartbeat: false,
                                  convertImagesToLinks: false,
                                  noModals: true,
                                  showLowRepImageUploadWarning: true,
                                  reputationToPostImages: null,
                                  bindNavPrevention: true,
                                  postfix: “”,
                                  imageUploader: {
                                  brandingHtml: “Powered by u003ca class=”icon-imgur-white” href=”https://imgur.com/”u003eu003c/au003e”,
                                  contentPolicyHtml: “User contributions licensed under u003ca href=”https://creativecommons.org/licenses/by-sa/3.0/”u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href=”https://stackoverflow.com/legal/content-policy”u003e(content policy)u003c/au003e”,
                                  allowUrls: true
                                  },
                                  onDemand: true,
                                  discardSelector: “.discard-answer”
                                  ,immediatelyShowMarkdownHelp:true
                                  });

                                  }
                                  });

                                  draft saved
                                  draft discarded

                                  StackExchange.ready(
                                  function () {
                                  StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2ftex.stackexchange.com%2fquestions%2f476566%2fcaron-accent-va-doesnt-render-without-usepackagexecjk%23new-answer’, ‘question_page’);
                                  }
                                  );

                                  Post as a guest

                                  Required, but never shown

                                  2 Answers
                                  2

                                  active

                                  oldest

                                  votes

                                  2 Answers
                                  2

                                  active

                                  oldest

                                  votes

                                  active

                                  oldest

                                  votes

                                  active

                                  oldest

                                  votes

                                  6

                                  The default setup doesn’t use unicode U+02C7, but the combining accent U+030C which is missing in your font. xecjk contains some code to use U+02C7 instead, but seems to use this code only if xunicode is loaded too – which is a bit of a pain, as normally one shouldn’t use it anymore.

                                  You can clone the xeCJK code by using add@accent. If more fonts are involved where some have the combining accent, some additional checks for glyph existence are probably needed.

                                  documentclass[a4paper,12pt,article,oneside]{memoir}
                                  
                                  usepackage{fontspec}
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
                                  
                                  usepackage{newunicodechar}
                                  makeatletter
                                  
                                  newunicodechar{ǚ}{add@accent{`^^^^02c7}{ü}}
                                  newunicodechar{Ǚ}{add@accent{`^^^^02c7}{Ü}}
                                  newunicodechar{ǎ}{add@accent{`^^^^02c7}{a}}
                                  makeatother
                                  %newunicodechar{Ǎ}{v{A}}
                                  %newunicodechar{ǒ}{v{o}}
                                  %newunicodechar{Ǒ}{v{O}}
                                  %
                                  begin{document}
                                  abc 
                                  
                                  ǚ Ǚ ǎ
                                  
                                  end{document}
                                  

                                  enter image description here

                                  share|improve this answer

                                  • Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                    – Paul
                                    Feb 25 at 11:06

                                  • No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                    – Ulrike Fischer
                                    Feb 25 at 11:11

                                  • Are you sure I can just submit it to the Latex2e github?

                                    – Paul
                                    Feb 25 at 11:34

                                  6

                                  The default setup doesn’t use unicode U+02C7, but the combining accent U+030C which is missing in your font. xecjk contains some code to use U+02C7 instead, but seems to use this code only if xunicode is loaded too – which is a bit of a pain, as normally one shouldn’t use it anymore.

                                  You can clone the xeCJK code by using add@accent. If more fonts are involved where some have the combining accent, some additional checks for glyph existence are probably needed.

                                  documentclass[a4paper,12pt,article,oneside]{memoir}
                                  
                                  usepackage{fontspec}
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
                                  
                                  usepackage{newunicodechar}
                                  makeatletter
                                  
                                  newunicodechar{ǚ}{add@accent{`^^^^02c7}{ü}}
                                  newunicodechar{Ǚ}{add@accent{`^^^^02c7}{Ü}}
                                  newunicodechar{ǎ}{add@accent{`^^^^02c7}{a}}
                                  makeatother
                                  %newunicodechar{Ǎ}{v{A}}
                                  %newunicodechar{ǒ}{v{o}}
                                  %newunicodechar{Ǒ}{v{O}}
                                  %
                                  begin{document}
                                  abc 
                                  
                                  ǚ Ǚ ǎ
                                  
                                  end{document}
                                  

                                  enter image description here

                                  share|improve this answer

                                  • Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                    – Paul
                                    Feb 25 at 11:06

                                  • No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                    – Ulrike Fischer
                                    Feb 25 at 11:11

                                  • Are you sure I can just submit it to the Latex2e github?

                                    – Paul
                                    Feb 25 at 11:34

                                  6

                                  6

                                  6

                                  The default setup doesn’t use unicode U+02C7, but the combining accent U+030C which is missing in your font. xecjk contains some code to use U+02C7 instead, but seems to use this code only if xunicode is loaded too – which is a bit of a pain, as normally one shouldn’t use it anymore.

                                  You can clone the xeCJK code by using add@accent. If more fonts are involved where some have the combining accent, some additional checks for glyph existence are probably needed.

                                  documentclass[a4paper,12pt,article,oneside]{memoir}
                                  
                                  usepackage{fontspec}
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
                                  
                                  usepackage{newunicodechar}
                                  makeatletter
                                  
                                  newunicodechar{ǚ}{add@accent{`^^^^02c7}{ü}}
                                  newunicodechar{Ǚ}{add@accent{`^^^^02c7}{Ü}}
                                  newunicodechar{ǎ}{add@accent{`^^^^02c7}{a}}
                                  makeatother
                                  %newunicodechar{Ǎ}{v{A}}
                                  %newunicodechar{ǒ}{v{o}}
                                  %newunicodechar{Ǒ}{v{O}}
                                  %
                                  begin{document}
                                  abc 
                                  
                                  ǚ Ǚ ǎ
                                  
                                  end{document}
                                  

                                  enter image description here

                                  share|improve this answer

                                  The default setup doesn’t use unicode U+02C7, but the combining accent U+030C which is missing in your font. xecjk contains some code to use U+02C7 instead, but seems to use this code only if xunicode is loaded too – which is a bit of a pain, as normally one shouldn’t use it anymore.

                                  You can clone the xeCJK code by using add@accent. If more fonts are involved where some have the combining accent, some additional checks for glyph existence are probably needed.

                                  documentclass[a4paper,12pt,article,oneside]{memoir}
                                  
                                  usepackage{fontspec}
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
                                  
                                  usepackage{newunicodechar}
                                  makeatletter
                                  
                                  newunicodechar{ǚ}{add@accent{`^^^^02c7}{ü}}
                                  newunicodechar{Ǚ}{add@accent{`^^^^02c7}{Ü}}
                                  newunicodechar{ǎ}{add@accent{`^^^^02c7}{a}}
                                  makeatother
                                  %newunicodechar{Ǎ}{v{A}}
                                  %newunicodechar{ǒ}{v{o}}
                                  %newunicodechar{Ǒ}{v{O}}
                                  %
                                  begin{document}
                                  abc 
                                  
                                  ǚ Ǚ ǎ
                                  
                                  end{document}
                                  

                                  enter image description here

                                  share|improve this answer

                                  share|improve this answer

                                  share|improve this answer

                                  answered Feb 25 at 10:50

                                  Ulrike FischerUlrike Fischer

                                  196k8303689

                                  196k8303689

                                  • Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                    – Paul
                                    Feb 25 at 11:06

                                  • No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                    – Ulrike Fischer
                                    Feb 25 at 11:11

                                  • Are you sure I can just submit it to the Latex2e github?

                                    – Paul
                                    Feb 25 at 11:34

                                  • Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                    – Paul
                                    Feb 25 at 11:06

                                  • No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                    – Ulrike Fischer
                                    Feb 25 at 11:11

                                  • Are you sure I can just submit it to the Latex2e github?

                                    – Paul
                                    Feb 25 at 11:34

                                  Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                  – Paul
                                  Feb 25 at 11:06

                                  Thanks! As always you’re answering my questions 🙂 Could this be a potential feature request for newunicodechar: Substitute combining characters automatically?

                                  – Paul
                                  Feb 25 at 11:06

                                  No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                  – Ulrike Fischer
                                  Feb 25 at 11:11

                                  No, newunicodechar doesn’t care about the code you use, you could also input a picture. But you make a feature request for latex, the kernel could perhaps add a fall back to 02c7 to the definition of v.

                                  – Ulrike Fischer
                                  Feb 25 at 11:11

                                  Are you sure I can just submit it to the Latex2e github?

                                  – Paul
                                  Feb 25 at 11:34

                                  Are you sure I can just submit it to the Latex2e github?

                                  – Paul
                                  Feb 25 at 11:34

                                  3

                                  Based on a trick by Egreg, this uses the accent primitive. I chose to simply redefine v.

                                  documentclass{standalone}
                                  usepackage{fontspec, newunicodechar}
                                  
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{Cardo}
                                  
                                  renewcommandv[1]{accentstring"02C7 #1}
                                  
                                  newunicodechar{ǚ}{v{ü}}
                                  newunicodechar{Ǚ}{v{Ü}}
                                  newunicodechar{ǎ}{v{a}}
                                  newunicodechar{Ǎ}{v{A}}
                                  newunicodechar{ǒ}{v{o}}
                                  newunicodechar{Ǒ}{v{O}}
                                  
                                  begin{document}
                                  
                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ
                                  
                                  end{document}
                                  

                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ

                                  I picked Cardo as a common font that contains the caron accent, but not the precomposed ǚ.

                                  share|improve this answer

                                  • I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                    – Paul
                                    Feb 25 at 11:23

                                  • You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                    – Davislor
                                    Feb 25 at 11:32

                                  • I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                    – Paul
                                    Feb 25 at 11:34

                                  • I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                    – Davislor
                                    Feb 25 at 11:42

                                  • I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                    – Paul
                                    Feb 25 at 12:27

                                  3

                                  Based on a trick by Egreg, this uses the accent primitive. I chose to simply redefine v.

                                  documentclass{standalone}
                                  usepackage{fontspec, newunicodechar}
                                  
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{Cardo}
                                  
                                  renewcommandv[1]{accentstring"02C7 #1}
                                  
                                  newunicodechar{ǚ}{v{ü}}
                                  newunicodechar{Ǚ}{v{Ü}}
                                  newunicodechar{ǎ}{v{a}}
                                  newunicodechar{Ǎ}{v{A}}
                                  newunicodechar{ǒ}{v{o}}
                                  newunicodechar{Ǒ}{v{O}}
                                  
                                  begin{document}
                                  
                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ
                                  
                                  end{document}
                                  

                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ

                                  I picked Cardo as a common font that contains the caron accent, but not the precomposed ǚ.

                                  share|improve this answer

                                  • I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                    – Paul
                                    Feb 25 at 11:23

                                  • You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                    – Davislor
                                    Feb 25 at 11:32

                                  • I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                    – Paul
                                    Feb 25 at 11:34

                                  • I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                    – Davislor
                                    Feb 25 at 11:42

                                  • I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                    – Paul
                                    Feb 25 at 12:27

                                  3

                                  3

                                  3

                                  Based on a trick by Egreg, this uses the accent primitive. I chose to simply redefine v.

                                  documentclass{standalone}
                                  usepackage{fontspec, newunicodechar}
                                  
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{Cardo}
                                  
                                  renewcommandv[1]{accentstring"02C7 #1}
                                  
                                  newunicodechar{ǚ}{v{ü}}
                                  newunicodechar{Ǚ}{v{Ü}}
                                  newunicodechar{ǎ}{v{a}}
                                  newunicodechar{Ǎ}{v{A}}
                                  newunicodechar{ǒ}{v{o}}
                                  newunicodechar{Ǒ}{v{O}}
                                  
                                  begin{document}
                                  
                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ
                                  
                                  end{document}
                                  

                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ

                                  I picked Cardo as a common font that contains the caron accent, but not the precomposed ǚ.

                                  share|improve this answer

                                  Based on a trick by Egreg, this uses the accent primitive. I chose to simply redefine v.

                                  documentclass{standalone}
                                  usepackage{fontspec, newunicodechar}
                                  
                                  usepackage[british]{babel}
                                  
                                  setmainfont[Ligatures=TeX]{Cardo}
                                  
                                  renewcommandv[1]{accentstring"02C7 #1}
                                  
                                  newunicodechar{ǚ}{v{ü}}
                                  newunicodechar{Ǚ}{v{Ü}}
                                  newunicodechar{ǎ}{v{a}}
                                  newunicodechar{Ǎ}{v{A}}
                                  newunicodechar{ǒ}{v{o}}
                                  newunicodechar{Ǒ}{v{O}}
                                  
                                  begin{document}
                                  
                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ
                                  
                                  end{document}
                                  

                                  ǚ Ǚ ǎ Ǎ ǒ Ǒ

                                  I picked Cardo as a common font that contains the caron accent, but not the precomposed ǚ.

                                  share|improve this answer

                                  share|improve this answer

                                  share|improve this answer

                                  answered Feb 25 at 11:06

                                  DavislorDavislor

                                  6,7921429

                                  6,7921429

                                  • I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                    – Paul
                                    Feb 25 at 11:23

                                  • You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                    – Davislor
                                    Feb 25 at 11:32

                                  • I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                    – Paul
                                    Feb 25 at 11:34

                                  • I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                    – Davislor
                                    Feb 25 at 11:42

                                  • I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                    – Paul
                                    Feb 25 at 12:27

                                  • I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                    – Paul
                                    Feb 25 at 11:23

                                  • You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                    – Davislor
                                    Feb 25 at 11:32

                                  • I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                    – Paul
                                    Feb 25 at 11:34

                                  • I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                    – Davislor
                                    Feb 25 at 11:42

                                  • I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                    – Paul
                                    Feb 25 at 12:27

                                  I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                  – Paul
                                  Feb 25 at 11:23

                                  I can reproduce the MWE of this solution with Minion Pro. However, for some reason it doesn’t work in my actual main file. There is some clash with another package, and I cannot identify (yet) which one it is.

                                  – Paul
                                  Feb 25 at 11:23

                                  You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                  – Davislor
                                  Feb 25 at 11:32

                                  You might to change the documentclass back, if you didn’t. I switched to standalone for the convenience of creating a cropped image. Anyway, just adding the line renewcommandv[1]{accentstring"02C7 #1} ought to work.

                                  – Davislor
                                  Feb 25 at 11:32

                                  I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                  – Paul
                                  Feb 25 at 11:34

                                  I already checked and your solution definitely works with documentclass[a4paper,12pt,article,oneside]{memoir} Must be something else…

                                  – Paul
                                  Feb 25 at 11:34

                                  I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                  – Davislor
                                  Feb 25 at 11:42

                                  I also removed xunicode? Or maybe it’s related to setmainfont versus babelfont?

                                  – Davislor
                                  Feb 25 at 11:42

                                  I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                  – Paul
                                  Feb 25 at 12:27

                                  I identified the conflicting package: it’s hyperref But I have no idea what causes it

                                  – Paul
                                  Feb 25 at 12:27

                                  draft saved
                                  draft discarded

                                  Thanks for contributing an answer to TeX – LaTeX Stack Exchange!

                                  • Please be sure to answer the question. Provide details and share your research!

                                  But avoid

                                  • Asking for help, clarification, or responding to other answers.
                                  • Making statements based on opinion; back them up with references or personal experience.

                                  To learn more, see our tips on writing great answers.

                                  draft saved

                                  draft discarded

                                  StackExchange.ready(
                                  function () {
                                  StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2ftex.stackexchange.com%2fquestions%2f476566%2fcaron-accent-va-doesnt-render-without-usepackagexecjk%23new-answer’, ‘question_page’);
                                  }
                                  );

                                  Post as a guest

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Required, but never shown

                                  Code name

                                  A code name or cryptonym is a word or name used, sometimes clandestinely, to refer to another name, word, project or person. Names are often used for military purposes, or in espionage. They may also be used in industrial counter-industrial espionage to protect secret projects and the like from business rivals, or to give names to projects whose marketing name has not yet been determined. Another reason for the use of names and phrases in the military is that they transmit with a lower level of cumulative errors over a walkie-talkie or radio link than actual names.

                                  Contents

                                  • 1 Military origins

                                    • 1.1 German code names
                                    • 1.2 Code names of other powers
                                    • 1.3 Aircraft recognition reporting names
                                    • 1.4 Military operations since Churchill
                                  • 2 Project code name
                                  • 3 Famous code names

                                    • 3.1 Military
                                    • 3.2 Commercial
                                  • 4 See also
                                  • 5 References
                                  • 6 External links

                                  Military origins

                                  During World War I, names common to the Allies referring to nations, cities, geographical features, military units, military operations, diplomatic meetings, places, and individual persons were agreed upon, adapting pre-war naming procedures in use by the governments concerned. In the British case names were administered and controlled by the Inter Services Security Board (ISSB) staffed by the War Office.[1] This procedure was coordinated with the United States when America entered the war. Random lists of names were issued to users in alphabetical blocks of ten words and were selected as required. Words became available for re-use after six months and unused allocations could be reassigned at discretion and according to need. Judicious selection from the available allocation could result in clever meanings and result in an aptronym or backronym, although policy was to select words that had no obviously deducible connection with what they were supposed to be concealing. Those for the major conference meetings had a partial naming sequence referring to devices or instruments which had an ordinal number as part of their meaning, e.g., the third meeting was “TRIDENT”. Joseph Stalin, whose last name means “man of steel”, was given the name “GLYPTIC”, meaning “an image carved out of stone”.

                                  • Reference: Glossary of Names[2] from U.S. Army in World War II – Washington Command Post: The Operations Division
                                    • World War II Allied Operations[3]
                                    • Abbreviations, Acronyms, Codewords, Terms Appearing in WW II Histories and Documents[4]
                                    • Information from original files held at The National Archives (formerly The Public Record Office) which hold the publicly available records of central government for the UK

                                  German code names

                                  Ewen Montagu, a British Naval intelligence officer, discloses in Beyond Top Secret Ultra that during World War II, Nazi Germany habitually used ad hoc code names as nicknames which often openly revealed or strongly hinted at their content or function.

                                  Some German code names:

                                  • Golfplatz (German for “golf course”) – Britain, employed by the Abwehr
                                  • Samland – The United States (from Uncle Sam), employed by the Abwehr
                                  • Heimdall (a god whose power was “to see for a hundred miles”) – long-range radar
                                  • Wotan – a radar system. Knowing that the god Wotan had only one eye, R. V. Jones, a British scientist working for Air Intelligence of the British Air Ministry and SIS inferred that the device used a single beam and from that determined, correctly, how it must work. A counter-system was quickly created which made Wotan useless.
                                  • Operation Seelöwe (Sea-lion) – plans to invade Britain (lions being prominent in the coat of arms of the United Kingdom)
                                  • Operation Barbarossa (Frederick Barbarossa) – plans to go east and invade the Soviet Union

                                  Conversely, Operation Wacht am Rhein (Watch on the Rhine) was deliberately named to suggest the opposite of its purpose – a defensive “watch” as opposed to a massive blitzkrieg operation, just as was Operation Weserübung (Weser-exercise), which signified the plans to invade Norway and Denmark in April 1940.

                                  Code names of other powers

                                  Britain and the United States developed the security policy of assigning code names intended to give no such clues to the uninitiated. For example, the British counter measures against the V-2 was called Operation Crossbow. The atomic bomb project centered in New Mexico was called the Manhattan Project, derived from the Manhattan Engineer District which managed the program. The code name for the American A-12 / SR-71 spy plane project, producing the fastest, highest-flying aircraft in the world, was Oxcart. The American group that planned that country’s first ICBM was called the Teapot Committee.

                                  Although the word could stand for a menace to shipping (in this case, that of Japan), the American code name for the attack on the subtropical island of Okinawa in World War II was Operation Iceberg. The Soviet Union’s project to base missiles in Cuba was named Operation Anadyr after their closest bomber base to the US (just across the Bering Strait from Nome, Alaska). The names of colors are generally avoided in American practice to avoid confusion with meteorological reporting practices. Britain, in contrast, made deliberately non-meaningful use of them, through the system of rainbow codes.

                                  Aircraft recognition reporting names

                                  Although German and Italian aircraft were not given code names by their Allied opponents, in 1942, Captain Frank T. McCoy, an intelligence officer of the USAAF, invented a system for the identification of Japanese military aircraft. Initially using short, “hillbilly” boys’ names such as “Pete”, “Jake”, and “Rufe”, the system was later extended to include girls’ names and names of trees and birds, and became widely used by the Allies throughout the Pacific theater of war. This type of naming scheme differs from the other use of code names in that it does not have to be kept secret, but is a means of identification where the official nomenclature is unknown or uncertain.

                                  The policy of recognition reporting names was continued into the Cold War for Soviet, other Warsaw Pact, and Communist Chinese aircraft. Although this was started by the Air Standards Co-ordinating Committee (ASCC) formed by the United States, UK, Canada, Australia, and New Zealand, it was extended throughout NATO as the NATO reporting name for aircraft, rockets and missiles. These names were considered by the Soviets as being like a nickname given to one’s unit by the opponents in a battle, such as the U.S. Marines were called by the Germans in France “Devil Dogs”[citation needed], which they appreciated as a feather in their cap. The Soviets did not like the Sukhoi Su-25 getting the code name “Frogfoot”.[citation needed] However, some names were appropriate, such as “Condor” for the Antonov An-124, or, most famously, “Fulcrum” for the Mikoyan MiG-29, which had a “pivotal” role in Soviet air-strategy.

                                  Code names were adopted by the following process. Aerial or space reconnaissance would note a new aircraft at a Warsaw Pact airbase. The intelligence units would then assign it a code name consisting of the official abbreviation of the base, then a letter, for example, “Ram-A”, signifying an aircraft sighted at Ramenskoye Airport. Missiles were given designations like “TT-5”, for the fifth rocket seen at Tyura-Tam. When more information resulted in knowing a bit about what a missile was used for, it would be given a designation like “SS-6”, for the sixth surface-to-surface missile design reported. Finally, when either an aircraft or a missile was able to be photographed with a hand-held camera, instead of a reconnaissance aircraft, it was given a name like “Flanker” or “Scud” – always an English word, as international pilots worldwide are required to learn English. The Soviet manufacturer or designation – which may be mistakenly inferred by NATO – has nothing to do with it.

                                  Jet-powered aircraft received two-syllable names like Foxbat, while propeller aircraft were designated with short names like Bull. Fighter names began with an “F”, bombers with a “B”, cargo aircraft with a “C”. Training aircraft and reconnaissance aircraft were grouped under the word “miscellaneous”, and received “M”. The same convention applies to missiles, with air-launched ground attack missiles beginning with the letter “K” and surface-to-surface missiles (ranging from intercontinental ballistic missiles to antitank rockets) with the letter “S”, air-to-air missiles “A”, and surface-to-air missiles “G”.

                                  Military operations since Churchill

                                  Throughout the Second World War, the British allocation practice favored one-word code names (Jubilee, Frankton). That of the Americans favored longer compound words, although the name Overlord was personally chosen by Winston Churchill himself. Many examples of both types can be cited, as can exceptions.

                                  Winston Churchill was particular about the quality of code names. He insisted that code words, especially for dangerous operations, would be not overly grand nor petty nor common. One emotional goal he mentions is to never have to report to anyone that their son “was killed in an operation called ‘Bunnyhug’ or ‘Ballyhoo’.”[5]

                                  Presently, British forces tend to use one-word names, presumably in keeping with their post-World War II policy of reserving single words for operations and two-word names for exercises. British operation code names are usually randomly generated by a computer and rarely reveal its components or any political implications unlike the American names (e.g., the 2003 invasion of Iraq was called “Operation Telic” compared to Americans’ “Operation Iraqi Freedom”, obviously chosen for propaganda rather than secrecy). Americans prefer two-word names, whereas the Canadians and Australians use either. The French military currently prefer names drawn from nature (such as colors or the names of animals), for instance Opération Daguet (“brocket deer”) or Opération Baliste (“Triggerfish”). The CIA uses alphabetical prefixes to designate the part of the agency supporting an operation.

                                  In many cases with the United States, the first word of the name has to do with the intent of the program. Programs with “have” as the first word, such as Have Blue for the stealth fighter development, are developmental programs, not meant to produce a production aircraft. Programs that start with Senior, such as Senior Trend for the F-117, are for aircraft in testing meant to enter production.[citation needed]

                                  In the United States code names are commonly set entirely in upper case. This is not done in other countries, though for the UK in British documents the code name is in upper case while operation is shortened to OP e.g., “Op. TELIC”.

                                  This presents an opportunity for a bit of public-relations (Operation Just Cause), or for controversy over the naming choice (Operation Infinite Justice, renamed Operation Enduring Freedom). Computers are now used to aid in the selection. And further, there is a distinction between the secret names during former wars and the published names of recent ones.

                                  Project code name

                                  A project code name is a code name (usually a single word, short phrase or acronym) which is given to a project being developed by industry, academia, government, and other concerns.

                                  Project code names are typically used for several reasons:

                                  • To uniquely identify the project within the organization. Code names are frequently chosen to be outside the normal business/domain jargon that the organization uses, in order to not conflict with established terminology.
                                  • To assist with maintaining secrecy of the project against rival concerns. Some corporations routinely change project names in order to further confuse competitors.
                                  • When the goal of the project is to develop one or more commercial products, use of a code name allows the eventual choice of product nomenclature (the name the product(s) are marketed and sold under) to be decoupled from the development effort. This is especially important when one project generates multiple products, or multiple projects are needed to produce a single product. This allows for subprojects to be given a separate identity from the main project.
                                  • To decouple an early phase of a development effort (which may have failed) from a subsequent phase (which may be given a “fresh start”) as a political tool.
                                  • To prevent casual observers from concluding that a pre-release version is a new release of the product, thus helping reduce confusion.

                                  Different organizations have different policies regarding the use and publication of project code names. Some companies take great pains to never discuss or disclose project code names outside of the company (other than with outside entities who have a need to know, and typically are bound with a non-disclosure agreement). Other companies never use them in official or formal communications, but widely disseminate project code names through informal channels (often in an attempt to create a marketing buzz for the project). Still others (such as Microsoft) discuss code names publicly, and routinely use project code names on beta releases and such, but remove them from final product(s). At the other end of the spectrum, Apple Computer includes the project code names for Mac OS X as part of the official name of the final product, a practice that was started in 2002 with Mac OS X v10.2 “Jaguar”.

                                  Famous code names

                                  Military

                                  • Operation Anthropoid – assassination of top Nazi Reinhard Heydrich in Prague
                                  • Operation Arc Light – United States Air Force B-52 bombing campaign during the Vietnam War
                                  • Operation Barbarossa – German invasion of the Soviet Union
                                  • Operation Black Tornado – began on 26 November 2008 and lasted until 29 November when India’s National Security Guards (NSG) conducted Operation Black Tornado to flush out the attackers from the Hotel Taj Mahal, Mumbai
                                  • Operation Blue Star – was an Indian military operation which took place 3–8 June 1984, in order to remove Jarnail Singh Bhindranwale and his armed followers from the Harmandir Sahib in Amritsar, Punjab, India.
                                  • Operation Market Garden – failed invasion of Germany (1944)
                                  • Operation Morero – South African Special Forces sent to the Central African Republic to protect president François Bozizé.
                                  • Operation Neptune Spear – The operation, was carried out in a Central Intelligence Agency-led operation in which Osama bin Laden, the founder and head of the Islamist militant group al-Qaeda, was killed in Pakistan on May 2, 2011, by Navy SEALs of the U.S. Naval Special Warfare Development Group.

                                    • “Geronimo”, the codename for Osama bin Laden during Operation Neptune’s Spear
                                  • Operation Desert Storm – The US code name of the airland conflict from 17 January 1991, through 11 April 1991 in Kuwait during the First Gulf War.
                                  • Operation Overlord – Allied invasion of Normandy
                                  • Operation Rolling Thunder – the sustained bombing campaign conducted against North Vietnam by the United States and South Vietnam
                                  • Operation Sea Lion – the planned invasion of Britain by Nazi Germany which was never carried out
                                  • Operation Shakti – (Pokhran-II) refers to the series of five nuclear bomb test explosions conducted by India at the Indian Army’s Pokhran Test Range in May 1998. It was initiated with the detonation of one fusion and three fission bombs.
                                  • Operation Torch – British-American invasion of North Africa in 1942
                                  • Manhattan Project (with Trinity, Little Boy, and Fat Man) – early U.S. nuclear weapons program during World War II
                                  • MKULTRA – CIA project (an attempt at mind control technology & technique)
                                  • Smiling Buddha – (Pokhran-I), was an assigned codename of India’s first nuclear weapon explosion, which took place on 18 May 1974. The device was detonated by the Indian Army in the long-constructed army base, Pokhran Test Range. It was also the first confirmed nuclear test by a nation outside the five permanent members of the United Nations Security Council.
                                  • Project-706 (with Chagai-I and Chagai-II) – an early Pakistani secret code name for its nuclear weapons programme during the Cold War
                                  • Tank – originally a code name adopted in 1915 by the British government for the first tracked armoured vehicles, which were then under development
                                  • Tube Alloys – British nuclear program

                                  Commercial

                                  • AMD have also been naming their CPUs since 90 nm generations under the K8 micro-architecture after the name of cities around the world. For the CPUs under the Phenom brand, the names of stars were used as code names. For Opteron server CPUs and platforms, cities related to the Ferrari Formula One team were used. Mobile platforms are named after birds (except for Puma). For example:

                                    • Single-core Athlon 64 and Athlon 64 FX : Newcastle, Venice, San Diego and Lima
                                    • Dual-core Athlon 64 X2 and Athlon 64 FX: Manchester, Toledo, Windsor and Brisbane
                                    • Phenom CPUs: Agena (Beta Centauri), Toliman (Alpha Centauri), Kuma (Nu Draconis), Deneb (Alpha Cygni), Propus (Eta Geminorum), Heka (Lambda Orionis), Rana (Delta Eridani), Regor (Gamma Velorum)
                                    • Opteron CPUs: Barcelona, Shanghai, São Paulo, Istanbul
                                    • Server platforms: Catalunya, Fiorano, Maranello
                                    • Mobile CPUs: Griffin, Lion, Swift
                                    • Mobile platforms: Kite, Puma, Shrike, Eagle
                                  • Apple currently names the various major releases of macOS after major California landmarks, such as Mavericks (10.9), Yosemite (10.10), El Capitan (10.11), Sierra (10.12), and Mojave (10.14). Previous releases were named after big cats: Cheetah (10.0), Puma (10.1), Jaguar (10.2), Panther (10.3), Tiger (10.4), Leopard (10.5), Snow Leopard (10.6), Lion (10.7), and Mountain Lion (10.8).[6] Other former codenames include:

                                    • Composers, such as Copland, after composer Aaron Copland; and Gershwin, after George Gershwin.
                                    • Women’s names, e.g. Jennifer (rumored for the Macintosh IIx), and Lisa.
                                    • Varieties of apples, including Cortland for the Apple IIgs, and Macintosh (from McIntosh).
                                    • Carl Sagan, which was used for the Power Macintosh 7100 while it was under development. In 1994 astronomer Carl Sagan filed two lawsuits against Apple related to that usage, and lost both, reaching an out-of-court settlement with the company.
                                  • Intel often names CPU projects after rivers in the American West, particularly in the state of Oregon (where most of Intel’s CPU projects are designed). Examples include Willamette, Deschutes, Yamhill, Tualatin, and Clackamas. See List of Intel codenames.
                                  • Microsoft often names projects (in particular, versions of the Microsoft Windows operating systems) after place names. Examples include Chicago (Windows 95), Daytona (Windows NT 3.5), Memphis (Windows 98), Whistler (Windows XP), Longhorn (Windows Vista), Blackcomb/Vienna (Windows 7), and Cairo Windows NT 4.0.
                                  • For a period of time, Mozilla used code names which are mostly named after national parks to reference different versions of the Mozilla Firefox browser:
                                    • Firefox 2.0: Bon Echo
                                    • Firefox 3.0: Gran Paradiso
                                    • Firefox 3.5: Shiretoko
                                    • Firefox 3.6: Namoroka
                                    • Firefox 4.0: Tumucumaque
                                    • Firefox pre-beta: Aurora
                                    • Firefox trunk builds: Nightly
                                  • Nintendo often uses code names for new consoles. The best-known is that of Wii, which was code-named Revolution for over a year. Others include the GameCube’s code name of Dolphin, the Game Boy Advance’s code name of Atlantis, the Nintendo 64 as Project Reality, the DS code name Project Nitro, the Game Boy Micro code name Oxygen, the Wii U code name Project Cafe, and Nintendo’s latest console Nintendo Switch as NX.
                                  • Return of the Jedi was code-named “Blue Harvest” while in production and principal photography. This was reportedly to prevent disruption by fans and the media as well as to avoid price gouging by local merchants and vendors.
                                  • The Chamber of Secrets sequel of the Harry Potter film series was code-named “Incident of 57th Street” to disguise the production from its increasingly rabid fanbase, who would seek out filming locations and disrupt production.

                                  See also

                                  • CIA cryptonyms
                                  • Military Operations listed by Codename
                                  • NATO reporting name
                                  • Pseudonym, the term for a code name when applied to a single person
                                  • Rainbow Codes
                                  • Secret Service codename
                                  • Sensitive Compartmented Information
                                  • List of Microsoft codenames
                                  • Working title

                                  References

                                  1. ^ Webster, Graham (2013). “History of the British Inter-Services Security Board and the Allocation of Code-Names in the Second World War”. Intelligence and National Security. 29 (5): 1–31. doi:10.1080/02684527.2013.846731..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .citation .cs1-lock-free a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
                                  2. ^ “Glossary of Code Names”. www.army.mil. Retrieved 27 March 2018.
                                  3. ^ “Archived copy”. Archived from the original on 2016-03-04. Retrieved 2005-05-02.CS1 maint: Archived copy as title (link)
                                  4. ^ “HyperWar: Glossary of Abbreviations, Acronyms, Codewords, Terms of WWII”. www.ibiblio.org. Retrieved 27 March 2018.
                                  5. ^ Jablonsky, David (2013-09-13). Churchill, the Great Game and Total War. Routledge. p. 95. ISBN 9781135199296.
                                  6. ^ “OS X Mountain Lion – Move your Mac even further ahead”. Apple. Retrieved 2012-11-10.

                                  External links

                                  • William Arkin, Code Names: Deciphering U.S. Military Plans, Programs and Operations in the 9/11 World
                                  • Code Names for U.S. Military Projects and Operations
                                  • Code Names: A Look Behind Secret U.S. Military Plans in the Middle East, Africa and at Home – Broadcast on Democracy Now! January 27, 2005.
                                  • Gregory C. Sieminski, The Art of Naming Operations


                                  Illustrator to chemdraw [closed]

                                  The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

                                  4

                                  $begingroup$

                                  I am not sure that this is the right place for this question, but I’ll try.

                                  I am working on a scheme that I am developing on illustrator. I have a lot of chemical structure and plus I have some vectorial pictures included.

                                  The thing is that I would like to save/export my illustrator file in a way that I can reopen it and modify it in chemdraw. I am aware that the opposite procedure is possible.

                                  Is there any way of doing that?

                                  share|improve this question

                                  $endgroup$

                                  closed as off-topic by Tyberius, Todd Minehardt, Mathew Mahindaratne, Jon Custer, Zhe Mar 5 at 12:36

                                  • This question does not appear to be about chemistry within the scope defined in the help center.

                                  If this question can be reworded to fit the rules in the help center, please edit the question.

                                  • 1

                                    $begingroup$
                                    I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                    $endgroup$
                                    – Ivan Neretin
                                    Feb 25 at 10:17

                                  • 4

                                    $begingroup$
                                    I’m voting to close this question as off-topic because it’s a software issue.
                                    $endgroup$
                                    – Mithoron
                                    Feb 25 at 17:17

                                  4

                                  $begingroup$

                                  I am not sure that this is the right place for this question, but I’ll try.

                                  I am working on a scheme that I am developing on illustrator. I have a lot of chemical structure and plus I have some vectorial pictures included.

                                  The thing is that I would like to save/export my illustrator file in a way that I can reopen it and modify it in chemdraw. I am aware that the opposite procedure is possible.

                                  Is there any way of doing that?

                                  share|improve this question

                                  $endgroup$

                                  closed as off-topic by Tyberius, Todd Minehardt, Mathew Mahindaratne, Jon Custer, Zhe Mar 5 at 12:36

                                  • This question does not appear to be about chemistry within the scope defined in the help center.

                                  If this question can be reworded to fit the rules in the help center, please edit the question.

                                  • 1

                                    $begingroup$
                                    I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                    $endgroup$
                                    – Ivan Neretin
                                    Feb 25 at 10:17

                                  • 4

                                    $begingroup$
                                    I’m voting to close this question as off-topic because it’s a software issue.
                                    $endgroup$
                                    – Mithoron
                                    Feb 25 at 17:17

                                  4

                                  4

                                  4

                                  $begingroup$

                                  I am not sure that this is the right place for this question, but I’ll try.

                                  I am working on a scheme that I am developing on illustrator. I have a lot of chemical structure and plus I have some vectorial pictures included.

                                  The thing is that I would like to save/export my illustrator file in a way that I can reopen it and modify it in chemdraw. I am aware that the opposite procedure is possible.

                                  Is there any way of doing that?

                                  share|improve this question

                                  $endgroup$

                                  I am not sure that this is the right place for this question, but I’ll try.

                                  I am working on a scheme that I am developing on illustrator. I have a lot of chemical structure and plus I have some vectorial pictures included.

                                  The thing is that I would like to save/export my illustrator file in a way that I can reopen it and modify it in chemdraw. I am aware that the opposite procedure is possible.

                                  Is there any way of doing that?

                                  software

                                  share|improve this question

                                  share|improve this question

                                  share|improve this question

                                  share|improve this question

                                  edited Feb 25 at 18:37

                                  A.K.

                                  9,29962470

                                  9,29962470

                                  asked Feb 25 at 10:12

                                  Giovanni Di MauroGiovanni Di Mauro

                                  262

                                  262

                                  closed as off-topic by Tyberius, Todd Minehardt, Mathew Mahindaratne, Jon Custer, Zhe Mar 5 at 12:36

                                  • This question does not appear to be about chemistry within the scope defined in the help center.

                                  If this question can be reworded to fit the rules in the help center, please edit the question.

                                  closed as off-topic by Tyberius, Todd Minehardt, Mathew Mahindaratne, Jon Custer, Zhe Mar 5 at 12:36

                                  • This question does not appear to be about chemistry within the scope defined in the help center.

                                  If this question can be reworded to fit the rules in the help center, please edit the question.

                                  • 1

                                    $begingroup$
                                    I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                    $endgroup$
                                    – Ivan Neretin
                                    Feb 25 at 10:17

                                  • 4

                                    $begingroup$
                                    I’m voting to close this question as off-topic because it’s a software issue.
                                    $endgroup$
                                    – Mithoron
                                    Feb 25 at 17:17

                                  • 1

                                    $begingroup$
                                    I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                    $endgroup$
                                    – Ivan Neretin
                                    Feb 25 at 10:17

                                  • 4

                                    $begingroup$
                                    I’m voting to close this question as off-topic because it’s a software issue.
                                    $endgroup$
                                    – Mithoron
                                    Feb 25 at 17:17

                                  1

                                  1

                                  $begingroup$
                                  I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                  $endgroup$
                                  – Ivan Neretin
                                  Feb 25 at 10:17

                                  $begingroup$
                                  I doubt that. Better keep your chemical part in ChemDraw and paste from it when ready.
                                  $endgroup$
                                  – Ivan Neretin
                                  Feb 25 at 10:17

                                  4

                                  4

                                  $begingroup$
                                  I’m voting to close this question as off-topic because it’s a software issue.
                                  $endgroup$
                                  – Mithoron
                                  Feb 25 at 17:17

                                  $begingroup$
                                  I’m voting to close this question as off-topic because it’s a software issue.
                                  $endgroup$
                                  – Mithoron
                                  Feb 25 at 17:17

                                  1 Answer
                                  1

                                  active

                                  oldest

                                  votes

                                  8

                                  $begingroup$

                                  From p. 327 of ChemDraw 18 User Guide:

                                  Importing

                                  You can import graphics or documents from other applications into ChemDraw.

                                  Files
                                  Files that you insert become part of the drawing. You can edit a file only if it is in a ChemDraw format.
                                  To insert a file:

                                  1. Navigate to Edit → Insert File.
                                  2. In the Open dialog, select the file type from the drop-down list.
                                  3. Select the file and click Open. The file is embedded in the drawing.

                                  Further, there is a table of file formats ChemDraw is capable of importing and exporting, from which it is evident that only the following graphical formats can be imported:

                                  • Bitmap (BMP)
                                  • Graphic Image Format (GIF)
                                  • JPEG (JPG, JPEG)
                                  • Portable Network Graphics (PNG)
                                  • Windows Metafile (EMF, WMF)
                                  • Tagged Image File (TIF, TIFF)

                                  PDF or PostScript files can be attached as objects, but I suppose it’s not what you are after.
                                  Either way, it looks like there is no way to add AI files directly, so you need to convert them first to either raster (e.g. TIFF or PNG) or vector (WMF) format.
                                  I agree with @Ivan that crafting structures in ChemDraw in the first place and then post-processing them with Adobe Illustrator is arguably a better workflow.

                                  share|improve this answer

                                  $endgroup$

                                  • 1

                                    $begingroup$
                                    Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                    $endgroup$
                                    – Mathew Mahindaratne
                                    Feb 25 at 18:19

                                  1 Answer
                                  1

                                  active

                                  oldest

                                  votes

                                  1 Answer
                                  1

                                  active

                                  oldest

                                  votes

                                  active

                                  oldest

                                  votes

                                  active

                                  oldest

                                  votes

                                  8

                                  $begingroup$

                                  From p. 327 of ChemDraw 18 User Guide:

                                  Importing

                                  You can import graphics or documents from other applications into ChemDraw.

                                  Files
                                  Files that you insert become part of the drawing. You can edit a file only if it is in a ChemDraw format.
                                  To insert a file:

                                  1. Navigate to Edit → Insert File.
                                  2. In the Open dialog, select the file type from the drop-down list.
                                  3. Select the file and click Open. The file is embedded in the drawing.

                                  Further, there is a table of file formats ChemDraw is capable of importing and exporting, from which it is evident that only the following graphical formats can be imported:

                                  • Bitmap (BMP)
                                  • Graphic Image Format (GIF)
                                  • JPEG (JPG, JPEG)
                                  • Portable Network Graphics (PNG)
                                  • Windows Metafile (EMF, WMF)
                                  • Tagged Image File (TIF, TIFF)

                                  PDF or PostScript files can be attached as objects, but I suppose it’s not what you are after.
                                  Either way, it looks like there is no way to add AI files directly, so you need to convert them first to either raster (e.g. TIFF or PNG) or vector (WMF) format.
                                  I agree with @Ivan that crafting structures in ChemDraw in the first place and then post-processing them with Adobe Illustrator is arguably a better workflow.

                                  share|improve this answer

                                  $endgroup$

                                  • 1

                                    $begingroup$
                                    Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                    $endgroup$
                                    – Mathew Mahindaratne
                                    Feb 25 at 18:19

                                  8

                                  $begingroup$

                                  From p. 327 of ChemDraw 18 User Guide:

                                  Importing

                                  You can import graphics or documents from other applications into ChemDraw.

                                  Files
                                  Files that you insert become part of the drawing. You can edit a file only if it is in a ChemDraw format.
                                  To insert a file:

                                  1. Navigate to Edit → Insert File.
                                  2. In the Open dialog, select the file type from the drop-down list.
                                  3. Select the file and click Open. The file is embedded in the drawing.

                                  Further, there is a table of file formats ChemDraw is capable of importing and exporting, from which it is evident that only the following graphical formats can be imported:

                                  • Bitmap (BMP)
                                  • Graphic Image Format (GIF)
                                  • JPEG (JPG, JPEG)
                                  • Portable Network Graphics (PNG)
                                  • Windows Metafile (EMF, WMF)
                                  • Tagged Image File (TIF, TIFF)

                                  PDF or PostScript files can be attached as objects, but I suppose it’s not what you are after.
                                  Either way, it looks like there is no way to add AI files directly, so you need to convert them first to either raster (e.g. TIFF or PNG) or vector (WMF) format.
                                  I agree with @Ivan that crafting structures in ChemDraw in the first place and then post-processing them with Adobe Illustrator is arguably a better workflow.

                                  share|improve this answer

                                  $endgroup$

                                  • 1

                                    $begingroup$
                                    Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                    $endgroup$
                                    – Mathew Mahindaratne
                                    Feb 25 at 18:19

                                  8

                                  8

                                  8

                                  $begingroup$

                                  From p. 327 of ChemDraw 18 User Guide:

                                  Importing

                                  You can import graphics or documents from other applications into ChemDraw.

                                  Files
                                  Files that you insert become part of the drawing. You can edit a file only if it is in a ChemDraw format.
                                  To insert a file:

                                  1. Navigate to Edit → Insert File.
                                  2. In the Open dialog, select the file type from the drop-down list.
                                  3. Select the file and click Open. The file is embedded in the drawing.

                                  Further, there is a table of file formats ChemDraw is capable of importing and exporting, from which it is evident that only the following graphical formats can be imported:

                                  • Bitmap (BMP)
                                  • Graphic Image Format (GIF)
                                  • JPEG (JPG, JPEG)
                                  • Portable Network Graphics (PNG)
                                  • Windows Metafile (EMF, WMF)
                                  • Tagged Image File (TIF, TIFF)

                                  PDF or PostScript files can be attached as objects, but I suppose it’s not what you are after.
                                  Either way, it looks like there is no way to add AI files directly, so you need to convert them first to either raster (e.g. TIFF or PNG) or vector (WMF) format.
                                  I agree with @Ivan that crafting structures in ChemDraw in the first place and then post-processing them with Adobe Illustrator is arguably a better workflow.

                                  share|improve this answer

                                  $endgroup$

                                  From p. 327 of ChemDraw 18 User Guide:

                                  Importing

                                  You can import graphics or documents from other applications into ChemDraw.

                                  Files
                                  Files that you insert become part of the drawing. You can edit a file only if it is in a ChemDraw format.
                                  To insert a file:

                                  1. Navigate to Edit → Insert File.
                                  2. In the Open dialog, select the file type from the drop-down list.
                                  3. Select the file and click Open. The file is embedded in the drawing.

                                  Further, there is a table of file formats ChemDraw is capable of importing and exporting, from which it is evident that only the following graphical formats can be imported:

                                  • Bitmap (BMP)
                                  • Graphic Image Format (GIF)
                                  • JPEG (JPG, JPEG)
                                  • Portable Network Graphics (PNG)
                                  • Windows Metafile (EMF, WMF)
                                  • Tagged Image File (TIF, TIFF)

                                  PDF or PostScript files can be attached as objects, but I suppose it’s not what you are after.
                                  Either way, it looks like there is no way to add AI files directly, so you need to convert them first to either raster (e.g. TIFF or PNG) or vector (WMF) format.
                                  I agree with @Ivan that crafting structures in ChemDraw in the first place and then post-processing them with Adobe Illustrator is arguably a better workflow.

                                  share|improve this answer

                                  share|improve this answer

                                  share|improve this answer

                                  answered Feb 25 at 10:40

                                  andseliskandselisk

                                  18.1k656119

                                  18.1k656119

                                  • 1

                                    $begingroup$
                                    Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                    $endgroup$
                                    – Mathew Mahindaratne
                                    Feb 25 at 18:19

                                  • 1

                                    $begingroup$
                                    Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                    $endgroup$
                                    – Mathew Mahindaratne
                                    Feb 25 at 18:19

                                  1

                                  1

                                  $begingroup$
                                  Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                  $endgroup$
                                  – Mathew Mahindaratne
                                  Feb 25 at 18:19

                                  $begingroup$
                                  Yes, we can export or import files in certain format from ChemDraw and to ChemDraw easily. But my understanding was, those files imported to ChemDraw cannot be changed except you can add more ChemDraw figures etc. because imported parts appears as a picture. For example, if you import a NMR spectrum, then you can add the structure and peak assignments, etc. bur cant change the appearence of spectrum. After add all you want, then you can save it in cdx or other formats in your answer. That’s all I know. 🙂
                                  $endgroup$
                                  – Mathew Mahindaratne
                                  Feb 25 at 18:19

                                  Internet Explorer

                                  Internet Explorer
                                  Small blue "e" letter with a yellow aureola
                                  Internet Explorer 11 running on Windows 10

                                  Internet Explorer 11 running on Windows 10
                                  Original author(s) Thomas Reardon
                                  Developer(s) Microsoft
                                  Initial release August 16, 1995; 23 years ago (1995-08-16)[dubious ]
                                  Stable release(s)
                                  Windows 10 11.0.115 (March 12, 2019; 10 days ago (2019-03-12)[1]) [±]
                                  Mac OS X 5.2.3 (June 16, 2003; 15 years ago (2003-06-16)) [±]
                                  UNIX 5.01 SP1 (2001; 18 years ago (2001)) [±]
                                  Development status Discontinued, but maintained[2]
                                  Operating system Windows (and previously supported: Mac OS X, Solaris, HP-UX)
                                  Included with Windows 95 OSR1 and later
                                  Windows NT 4 and later
                                  Mac OS 8.1 through Mac OS X 10.2
                                  Xbox 360
                                  Xbox One
                                  Engines Trident, Chakra
                                  Platform IA-32, x86-64, ARMv7, IA-64 (and previously supported: MIPS, Alpha, PowerPC, 68k, SPARC, PA-RISC)
                                  Standard(s) HTML5, CSS3, WOFF, SVG, RSS, Atom, JPEG XR
                                  Available in 95 languages[3]
                                  Type Web browser
                                  Feed reader
                                  License Proprietary, requires a Windows license[4]
                                  Website www.microsoft.com/ie
                                  Internet Explorer versions:

                                  • 1
                                  • 2
                                  • 3
                                  • 4
                                  • 5
                                  • 6
                                  • 7
                                  • 8
                                  • 9
                                  • 10
                                  • 11

                                  Internet Explorer[a] (formerly Microsoft Internet Explorer[b] and Windows Internet Explorer,[c] commonly referred to as Explorer and abbreviated IE or MSIE) is a series of graphical web browsers (or as of 2019, a “compatibility solution”[5]) developed by Microsoft and included in the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year. Later versions were available as free downloads, or in service packs, and included in the original equipment manufacturer (OEM) service releases of Windows 95 and later versions of Windows. The browser is discontinued, but still maintained.[2]

                                  Internet Explorer was once the most widely used web browser, attaining a peak of about 95% usage share by 2003.[6] This came after Microsoft used bundling to win the first browser war against Netscape, which was the dominant browser in the 1990s. Its usage share has since declined with the launch of Firefox (2004) and Google Chrome (2008), and with the growing popularity of operating systems such as Android and iOS that do not run Internet Explorer. Estimates for Internet Explorer’s market share are about 2.58%% across all platforms or by StatCounter’s numbers ranked 7th, while on desktop, the only platform it’s ever had significant share (e.g. excluding mobile and Xbox) it’s ranked 4th at 5.34%,[7] just after macOS’s Safari (others[8] place IE 3rd with 4.79% after Firefox), as of February 2019[update] (browser market share is notoriously difficult to calculate). Microsoft spent over US$100 million per year on Internet Explorer in the late 1990s,[9] with over 1,000 people involved in the project by 1999.[10][11]

                                  Versions of Internet Explorer for other operating systems have also been produced, including an Xbox 360 version called Internet Explorer for Xbox and for platforms Microsoft no longer supports: Internet Explorer for Mac and Internet Explorer for UNIX (Solaris and HP-UX), and an embedded OEM version called Pocket Internet Explorer, later rebranded Internet Explorer Mobile made for Windows Phone, Windows CE, and previously, based on Internet Explorer 7 for Windows Mobile.

                                  On March 17, 2015, Microsoft announced that Microsoft Edge would replace Internet Explorer as the default browser on its Windows 10 devices (while support for older Windows has since been announced, as of 2019[update] Edge still has lower share than IE’s, that’s in decline). This effectively makes Internet Explorer 11 the last release (however IE 8, 9, and 10 also receive security updates as of 2019).[12][13][14] Internet Explorer, however, remains on Windows 10 and Windows Server 2019 primarily for enterprise purposes.[15][16] Since January 12, 2016, only Internet Explorer 11 has been supported.[17][18] Support varies based on the operating system’s technical capabilities and its support lifecycle.[19]

                                  The browser has been scrutinized throughout its development for use of third-party technology (such as the source code of Spyglass Mosaic, used without royalty in early versions) and security and privacy vulnerabilities, and the United States and the European Union have alleged that integration of Internet Explorer with Windows has been to the detriment of fair browser competition.[20]

                                  Contents

                                  • 1 History

                                    • 1.1 Internet Explorer 1
                                    • 1.2 Internet Explorer 2–10
                                    • 1.3 Internet Explorer 11
                                    • 1.4 End of life
                                  • 2 Features

                                    • 2.1 Standards support
                                    • 2.2 Non-standard extensions
                                    • 2.3 Favicon
                                    • 2.4 Usability and accessibility
                                    • 2.5 Cache
                                    • 2.6 Group Policy
                                  • 3 Architecture
                                  • 4 Extensibility
                                  • 5 Security

                                    • 5.1 Security vulnerabilities
                                    • 5.2 Vulnerability exploited in attacks on U.S. firms
                                    • 5.3 Major vulnerability across versions
                                  • 6 Market adoption and usage share

                                    • 6.1 Industry adoption
                                  • 7 Removal
                                  • 8 Impersonation by malware
                                  • 9 See also
                                  • 10 Notes
                                  • 11 References
                                  • 12 Further reading
                                  • 13 External links

                                  History

                                  Internet Explorer 1

                                  Internet Explorer 1

                                  The Internet Explorer project was started in the summer of 1994 by Thomas Reardon, who, according to the Massachusetts Institute of Technology Review of 2003,[21] used source code from Spyglass, Inc. Mosaic, which was an early commercial web browser with formal ties to the pioneering National Center for Supercomputing Applications (NCSA) Mosaic browser.[22][23] In late 1994, Microsoft licensed Spyglass Mosaic for a quarterly fee plus a percentage of Microsoft’s non-Windows revenues for the software.[23] Although bearing a name similar to NCSA Mosaic, Spyglass Mosaic had used the NCSA Mosaic source code sparingly.[24]

                                  The first version, dubbed Microsoft Internet Explorer, was installed as part of the Internet Jumpstart Kit in Microsoft Plus! for Windows 95 and Plus!.[25] The Internet Explorer team began with about six people in early development.[24][26] Internet Explorer 1.5 was released several months later for Windows NT and added support for basic table rendering. By including it free of charge on their operating system, they did not have to pay royalties to Spyglass Inc, resulting in a lawsuit and a US$8 million settlement on January 22, 1997.[22][27]

                                  Microsoft was sued by Synet Inc. in 1996, over the trademark infringement.[28]

                                  Internet Explorer 2–10

                                  Internet Explorer 11

                                  Internet Explorer 11 is featured in a Windows 8.1 update which was released on October 17, 2013. It includes an incomplete mechanism for syncing tabs. It is a major update to its developer tools,[29][30] enhanced scaling for high DPI screens,[31]HTML5 prerender and prefetch,[32]hardware-accelerated JPEG decoding,[33]closed captioning, HTML5 full screen,[34] and is the first Internet Explorer to support WebGL[35][36][37] and Google’s protocol SPDY (starting at v3).[38] This version of IE has features dedicated to Windows 8.1, including cryptography (WebCrypto),[29]adaptive bitrate streaming (Media Source Extensions)[39] and Encrypted Media Extensions.[34]

                                  Internet Explorer 11 was made available for Windows 7 users to download on November 7, 2013, with Automatic Updates in the following weeks.[40]

                                  Internet Explorer 11’s user agent string now identifies the agent as “Trident” (the underlying layout engine) instead of “MSIE”. It also announces compatibility with Gecko (the layout engine of Firefox).

                                  Microsoft claimed that Internet Explorer 11, running the WebKit SunSpider JavaScript Benchmark, was the fastest browser as of October 15, 2013.[41]

                                  End of life

                                  Microsoft Edge, officially unveiled on January 21, 2015, has replaced Internet Explorer as the default browser on Windows 10. Internet Explorer is still installed in Windows 10 in order to maintain compatibility with older websites and intranet sites that require ActiveX and other Microsoft legacy web technologies.[42][43][44]

                                  According to Microsoft, development of new features for Internet Explorer has ceased. However, it will continue to be maintained as part of the support policy for the versions of Windows with which it is included.[2]

                                  Features

                                  Page zoom as seen in IE9

                                  Internet Explorer has been designed to view a broad range of web pages and provide certain features within the operating system, including Microsoft Update. During the heyday of the browser wars, Internet Explorer superseded Netscape only when it caught up technologically to support the progressive features of the time.[45][better source needed]

                                  Standards support

                                  Internet Explorer, using the Trident layout engine:

                                  • Supports HTML 4.01, HTML 5, CSS Level 1, Level 2 and Level 3, XML 1.0, and DOM Level 1, with minor implementation gaps.
                                  • Fully supports XSLT 1.0 as well as an obsolete Microsoft dialect of XSLT often referred to as WD-xsl, which was loosely based on the December 1998 W3C Working Draft of XSL. Support for XSLT 2.0 lies in the future: semi-official Microsoft bloggers have indicated that development is underway, but no dates have been announced.
                                  • Almost full conformance to CSS 2.1 has been added in the Internet Explorer 8 release.[46][47] The trident rendering engine in Internet Explorer 9 in 2011, scored highest in the official W3C conformance test suite for CSS 2.1 of all major browsers.
                                  • Supports XHTML in Internet Explorer 9 (Trident version 5.0). Prior versions can render XHTML documents authored with HTML compatibility principles and served with a text/html MIME-type.
                                  • Supports a subset[48] of SVG in Internet Explorer 9 (Trident version 5.0), excluding SMIL, SVG fonts and filters.

                                  Internet Explorer uses DOCTYPE sniffing to choose between standards mode and a “quirks mode” in which it deliberately mimicks nonstandard behaviours of old versions of MSIE for HTML and CSS rendering on screen (Internet Explorer always uses standards mode for printing). It also provides its own dialect of ECMAScript called JScript.

                                  Internet Explorer was criticised by Tim Berners-Lee for its limited support for SVG which is promoted by W3C.[49]

                                  Non-standard extensions

                                  Internet Explorer has introduced an array of proprietary extensions to many of the standards, including HTML, CSS, and the DOM. This has resulted in a number of web pages that appear broken in standards-compliant web browsers and has introduced the need for a “quirks mode” to allow for rendering improper elements meant for Internet Explorer in these other browsers.

                                  Internet Explorer has introduced a number of extensions to the DOM that have been adopted by other browsers. These include the innerHTML property, which provides access to the HTML string within an element;[citation needed] the XMLHttpRequest object, which allows the sending of HTTP request and receiving of HTTP response, and may be used to perform AJAX; and the designMode attribute of the contentDocument object, which enables rich text editing of HTML documents.[citation needed] Some of these functionalities were not possible until the introduction of the W3C DOM methods. Its Ruby character extension to HTML is also accepted as a module in W3C XHTML 1.1, though it is not found in all versions of W3C HTML.

                                  Microsoft submitted several other features of IE for consideration by the W3C for standardization. These include the ‘behaviour’ CSS property, which connects the HTML elements with JScript behaviours (known as HTML Components, HTC); HTML+TIME profile, which adds timing and media synchronization support to HTML documents (similar to the W3C XHTML+SMIL), and the VML vector graphics file format. However, all were rejected, at least in their original forms; VML was subsequently combined with PGML (proposed by Adobe and Sun), resulting in the W3C-approved SVG format, one of the few vector image formats being used on the web, which IE did not support until version 9.[50]

                                  Other non-standard behaviours include: support for vertical text, but in a syntax different from W3C CSS3 candidate recommendation, support for a variety of image effects[51] and page transitions, which are not found in W3C CSS, support for obfuscated script code, in particular JScript.Encode.[52] Support for embedding EOT fonts in web pages.[53]

                                  Favicon

                                  Support for favicons was first added in Internet Explorer 5.[54] Internet Explorer supports favicons in PNG, static GIF and native Windows icon formats. In Windows Vista and later, Internet Explorer can display native Windows icons that have embedded PNG files.[55][56]

                                  Usability and accessibility

                                  Internet Explorer makes use of the accessibility framework provided in Windows. Internet Explorer is also a user interface for FTP, with operations similar to that of Windows Explorer. Pop-up blocking and tabbed browsing were added respectively in Internet Explorer 6 and Internet Explorer 7. Tabbed browsing can also be added to older versions by installing MSN Search Toolbar or Yahoo Toolbar.

                                  Cache

                                  Internet Explorer caches visited content in the Temporary Internet Files folder to allow quicker access (or offline access) to previously visited pages. The content is indexed in a database file, known as Index.dat. Multiple Index.dat files exist which index different content—visited content, web feeds, visited URLs, cookies, etc.[57]

                                  Prior to IE7, clearing the cache used to clear the index but the files themselves were not reliably removed, posing a potential security and privacy risk. In IE7 and later, when the cache is cleared, the cache files are more reliably removed, and the index.dat file is overwritten with null bytes.

                                  Caching has been improved in IE9.[58]

                                  Group Policy

                                  Internet Explorer is fully configurable using Group Policy. Administrators of Windows Server domains (for domain-joined computers) or the local computer can apply and enforce a variety of settings on computers that affect the user interface (such as disabling menu items and individual configuration options), as well as underlying security features such as downloading of files, zone configuration, per-site settings, ActiveX control behaviour and others. Policy settings can be configured for each user and for each machine. Internet Explorer also supports Integrated Windows Authentication.

                                  Architecture

                                  The architecture of IE8. Previous versions had a similar architecture, except that both tabs and the UI were within the same process. Consequently, each browser window could have only one “tab process”.

                                  Internet Explorer uses a componentized architecture built on the Component Object Model (COM) technology. It consists of several major components, each of which is contained in a separate Dynamic-link library (DLL) and exposes a set of COM programming interfaces hosted by the Internet Explorer main executable, iexplore.exe:[59]

                                  • WinInet.dll is the protocol handler for HTTP, HTTPS and FTP. It handles all network communication over these protocols.
                                  • URLMon.dll is responsible for MIME-type handling and download of web content, and provides a thread-safe wrapper around WinInet.dll and other protocol implementations.
                                  • MSHTML.dll houses the Trident rendering engine introduced in Internet Explorer 4, which is responsible for displaying the pages on-screen and handling the Document Object Model of the web pages. MSHTML.dll parses the HTML/CSS file and creates the internal DOM tree representation of it. It also exposes a set of APIs for runtime inspection and modification of the DOM tree. The DOM tree is further processed by a layout engine which then renders the internal representation on screen.
                                  • IEFrame.dll contains the user interface and window of IE in Internet Explorer 7 and above.
                                  • ShDocVw.dll provides the navigation, local caching and history functionalities for the browser.
                                  • BrowseUI.dll is responsible for rendering the browser user interface such as menus and toolbars.[60]

                                  Internet Explorer does not include any native scripting functionality. Rather, MSHTML.dll exposes an API that permits a programmer to develop a scripting environment to be plugged-in and to access the DOM tree. Internet Explorer 8 includes the bindings for the Active Scripting engine, which is a part of Microsoft Windows and allows any language implemented as an Active Scripting module to be used for client-side scripting. By default, only the JScript and VBScript modules are provided; third party implementations like ScreamingMonkey (for ECMAScript 4 support) can also be used. Microsoft also makes available the Microsoft Silverlight runtime (not supported in Windows RT) that allows CLI languages, including DLR-based dynamic languages like IronPython and IronRuby, to be used for client-side scripting.

                                  Internet Explorer 8 introduces some major architectural changes, called Loosely Coupled IE (LCIE). LCIE separates the main window process (frame process) from the processes hosting the different web applications in different tabs (tab processes). A frame process can create multiple tab processes, each of which can be of a different integrity level; each tab process can host multiple web sites. The processes use asynchronous Inter-Process Communication to synchronize themselves. Generally, there will be a single frame process for all web sites. In Windows Vista with Protected Mode turned on, however, opening privileged content (such as local HTML pages) will create a new tab process as it will not be constrained by Protected Mode.[61]

                                  Extensibility

                                  Internet Explorer exposes a set of Component Object Model (COM) interfaces that allows add-ons to extend the functionality of the browser.[59] Extensibility is divided into two types: Browser extensibility and content extensibility. Browser extensibility involves adding context menu entries, toolbars, menu items or Browser Helper Objects (BHO). BHOs are used to extend the feature set of the browser, whereas the other extensibility options are used to expose that feature in the user interface. Content extensibility adds support for non-native content formats.[59] It allows Internet Explorer to handle new file formats and new protocols, e.g. WebM or SPDY.[59] In addition, web pages can integrate widgets known as ActiveX controls which run on Windows only but have vast potentials to extend the content capabilities; Adobe Flash Player and Microsoft Silverlight are examples.[59] Add-ons can be installed either locally, or directly by a web site.

                                  Since malicious add-ons can compromise the security of a system, Internet Explorer implements several safeguards. Internet Explorer 6 with Service Pack 2 and later feature an Add-on Manager for enabling or disabling individual add-ons, complemented by a “No Add-Ons” mode. Starting with Windows Vista, Internet Explorer and its BHOs run with restricted privileges and are isolated from the rest of the system. Internet Explorer 9 introduced a new component – Add-on Performance Advisor. Add-on Performance Advisor shows a notification when one or more of installed add-ons exceed a pre-set performance threshold. The notification appears in the Notification Bar when the user launches the browser. Windows 8 and Windows RT introduce a Metro-style version of Internet Explorer that is entirely sandboxed and does not run add-ons at all.[62] In addition, Windows RT cannot download or install ActiveX controls at all; although existing ones bundled with Windows RT still run in the traditional version of Internet Explorer.[62]

                                  Internet Explorer itself can be hosted by other applications via a set of COM interfaces. This can be used to embed the browser functionality inside a computer program or create Internet Explorer shells.[59]

                                  Security

                                  Internet Explorer uses a zone-based security framework that groups sites based on certain conditions, including whether it is an Internet- or intranet-based site as well as a user-editable whitelist. Security restrictions are applied per zone; all the sites in a zone are subject to the restrictions.

                                  Internet Explorer 6 SP2 onwards uses the Attachment Execution Service of Microsoft Windows to mark executable files downloaded from the Internet as being potentially unsafe. Accessing files marked as such will prompt the user to make an explicit trust decision to execute the file, as executables originating from the Internet can be potentially unsafe. This helps in preventing accidental installation of malware.

                                  Internet Explorer 7 introduced the phishing filter, that restricts access to phishing sites unless the user overrides the decision. With version 8, it also blocks access to sites known to host malware. Downloads are also checked to see if they are known to be malware-infected.

                                  In Windows Vista, Internet Explorer by default runs in what is called Protected Mode, where the privileges of the browser itself are severely restricted—it cannot make any system-wide changes. One can optionally turn this mode off but this is not recommended. This also effectively restricts the privileges of any add-ons. As a result, even if the browser or any add-on is compromised, the damage the security breach can cause is limited.

                                  Patches and updates to the browser are released periodically and made available through the Windows Update service, as well as through Automatic Updates. Although security patches continue to be released for a range of platforms, most feature additions and security infrastructure improvements are only made available on operating systems which are in Microsoft’s mainstream support phase.

                                  On December 16, 2008, Trend Micro recommended users switch to rival browsers until an emergency patch was released to fix a potential security risk which “could allow outside users to take control of a person’s computer and steal their passwords”. Microsoft representatives countered this recommendation, claiming that “0.02% of internet sites” were affected by the flaw. A fix for the issue was released the following day with the Security Update for Internet Explorer KB960714, on Microsoft Windows Update.[63][64]

                                  In 2011, a report by Accuvant, funded by Google, rated the security (based on sandboxing) of Internet Explorer worse than Google Chrome but better than Mozilla Firefox.[65][66]

                                  A more recent browser security white paper comparing Google Chrome, Microsoft Edge, and Internet Explorer 11 by X41 D-Sec in 2017 came to similar conclusions, also based on sandboxing and support of legacy web technologies.[67]

                                  Security vulnerabilities

                                  Internet Explorer has been subjected to many security vulnerabilities and concerns: much of the spyware, adware, and computer viruses across the Internet are made possible by exploitable bugs and flaws in the security architecture of Internet Explorer, sometimes requiring nothing more than viewing of a malicious web page in order to install themselves. This is known as a “drive-by install”. There are also attempts to trick the user into installing malicious software by misrepresenting the software’s true purpose in the description section of an ActiveX security alert.

                                  A number of security flaws affecting IE originated not in the browser itself, but ActiveX-based add-ons used by it. Because the add-ons have the same privilege as IE, the flaws can be as critical as browser flaws. This has led to the ActiveX-based architecture being criticized for being fault-prone. By 2005, some experts maintained that the dangers of ActiveX have been overstated and there were safeguards in place.[68] In 2006, new techniques using automated testing found more than a hundred vulnerabilities in standard Microsoft ActiveX components.[69] Security features introduced in Internet Explorer 7 mitigated some of these vulnerabilities.

                                  Internet Explorer in 2008, had a number of published security vulnerabilities. According to research done by security research firm Secunia, Microsoft did not respond as quickly as its competitors in fixing security holes and making patches available.[70] The firm also reported 366 vulnerabilities in ActiveX controls, an increase from the prior year.

                                  According to an October 2010 report in The Register, researcher Chris Evans had detected a known security vulnerability which, then dating back to 2008, had not been fixed for at least 600 days.[71] Microsoft says that it had known about this vulnerability but it was of very low severity as the victim web site must be configured in a special way for this attack to be feasible at all.[72]

                                  In December 2010, researchers were able to bypass the “Protected Mode” feature in Internet Explorer.[73]

                                  Vulnerability exploited in attacks on U.S. firms

                                  Browser Market Share Worldwide July 2017 (for map);[74] rank/share in December 2018[75]

                                    Google Chrome (62.4%)
                                    Safari (14.56%)
                                    Firefox (5.1%)
                                    UC Browser (4.17%)
                                    Opera (3.13%)

                                  In an advisory on January 14, 2010, Microsoft said that attackers targeting Google and other U.S. companies used software that exploits a security hole, which had already been patched, in Internet Explorer. The vulnerability affected Internet Explorer 6 on Windows XP and Server 2003, IE6 SP1 on Windows 2000 SP4, IE7 on Windows Vista, XP, Server 2008 and Server 2003, and IE8 on Windows 7, Vista, XP, Server 2003, and Server 2008 (R2).[76]

                                  The German government warned users against using Internet Explorer and recommended switching to an alternative web browser, due to the major security hole described above that was exploited in Internet Explorer.[77] The Australian and French Government issued a similar warning a few days later.[78][79][80][81]

                                  Major vulnerability across versions

                                  On April 26, 2014, Microsoft issued a security advisory relating to CVE-2014-1776 (use-after-free vulnerability in Microsoft Internet Explorer 6 through 11[82]), a vulnerability that could allow “remote code execution” in Internet Explorer versions 6 to 11.[83] On April 28, 2014, the United States Department of Homeland Security’s United States Computer Emergency Readiness Team (US-CERT) released an advisory stating that the vulnerability could result in “the complete compromise” of an affected system.[84] US-CERT recommended reviewing Microsoft’s suggestions to mitigate an attack or using an alternate browser until the bug is fixed.[85][86] The UK National Computer Emergency Response Team (CERT-UK) published an advisory announcing similar concerns and for users to take the additional step of ensuring their antivirus software is up-to-date.[87]Symantec, a cyber security firm, confirmed that “the vulnerability crashes Internet Explorer on Windows XP”.[88] The vulnerability was resolved on May 1, 2014, with a security update.[89]

                                  Market adoption and usage share

                                  Usage share of web browsers according to StatCounter

                                  Historical market share of Internet Explorer

                                  The adoption rate of Internet Explorer seems to be closely related to that of Microsoft Windows, as it is the default web browser that comes with Windows. Since the integration of Internet Explorer 2.0 with Windows 95 OSR 1 in 1996, and especially after version 4.0’s release in 1997, the adoption was greatly accelerated: from below 20% in 1996, to about 40% in 1998, and over 80% in 2000. This made Microsoft the winner in the infamous ‘first browser war’ against Netscape. Netscape Navigator was the dominant browser during 1995 and until 1997, but rapidly lost share to IE starting in 1998, and eventually slipped behind in 1999. The integration of IE with Windows led to a lawsuit by AOL, Netscape’s owner, accusing Microsoft of unfair competition. The infamous case was eventually won by AOL but by then it was too late, as Internet Explorer had already become the dominant browser.

                                  Internet Explorer peaked during 2002 and 2003, with about 95% share. Its first notable competitor after beating Netscape was Firefox from Mozilla, which itself was an offshoot from Netscape.

                                  Firefox 1.0 had surpassed Internet Explorer 5 in early 2005, with Firefox 1.0 at roughly 8 percent market share.[90]

                                  Approximate usage over time based on various usage share counters averaged for the year overall, or for the fourth quarter, or for the last month in the year depending on availability of reference.[91][92][93][94][95][96]

                                  According to StatCounter Internet Explorer’s marketshare fell below 50% in September 2010.[97] In May 2012, Google Chrome overtook Internet Explorer as the most used browser worldwide, according to StatCounter.[98]

                                  Industry adoption

                                  Browser Helper Objects are also used by many search engine companies and third parties for creating add-ons that access their services, such as search engine toolbars. Because of the use of COM, it is possible to embed web-browsing functionality in third-party applications. Hence, there are a number of Internet Explorer shells, and a number of content-centric applications like RealPlayer also use Internet Explorer’s web browsing module for viewing web pages within the applications.

                                  Removal

                                  While a major upgrade of Internet Explorer can be uninstalled in a traditional way if the user has saved the original application files for installation, the matter of uninstalling the version of the browser that has shipped with an operating system remains a controversial one.

                                  The idea of removing a stock install of Internet Explorer from a Windows system was proposed during the United States v. Microsoft Corp. case. One of Microsoft’s arguments during the trial was that removing Internet Explorer from Windows may result in system instability. Indeed, programs that depend on libraries installed by IE, including Windows help and support system, fail to function without IE. Before Windows Vista, it was not possible to run Windows Update without IE because the service used ActiveX technology, which no other web browser supports.

                                  Impersonation by malware

                                  The popularity of Internet Explorer has led to the appearance of malware abusing its name. On January 28, 2011, a fake Internet Explorer browser calling itself “Internet Explorer – Emergency Mode” appeared. It closely resembles the real Internet Explorer, but has fewer buttons and no search bar. If a user launches any other browser such as Google Chrome, Mozilla Firefox, Opera, Safari or the real Internet Explorer, this browser will pop-up instead. It also displays a fake error message, claiming that the computer is infected with malware and Internet Explorer has entered Emergency Mode. It blocks access to legitimate sites such as Google if the user tries to access them.[99][100]

                                  See also

                                  • Bing Bar
                                  • History of the web browser
                                  • List of web browsers
                                  • Month of bugs
                                  • Web 2.0
                                  • Windows Filtering Platform
                                  • Winsock

                                  Notes

                                  1. ^ Since version 10
                                  2. ^ In version 6 and earlier
                                  3. ^ In versions 7, 8, and 9

                                  References

                                  1. ^ “Cumulative security update for Internet Explorer: March 12, 2019”. Support (18 ed.). Microsoft. 12 March 2019..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .citation .cs1-lock-free a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url(“//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png”)no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
                                  2. ^ abc “Frequently Asked Questions”. Microsoft Edge Development. Microsoft. Archived from the original on 2016-07-16. The latest features and platform updates will only be available in Microsoft Edge. We will continue to deliver security updates to Internet Explorer 11 through its supported lifespan. To ensure consistent behavior across Windows versions, we will evaluate Internet Explorer 11 bugs for servicing on a case by case basis.
                                  3. ^ “Internet Explorer 10 for Windows 7 released in 95 languages”.
                                  4. ^ “Microsoft Pre-Release Software License Terms: Internet Explorer 11 Developer Preview”. microsoft.com. Microsoft. Retrieved July 27, 2013.
                                  5. ^ Tung, Liam. “Microsoft security chief: IE is not a browser, so stop using it as your default”. ZDNet. Retrieved 2019-03-13.
                                  6. ^ “Microsoft’s Internet Explorer losing browser share”. BBC.
                                  7. ^ “Desktop Browser Market Share Worldwide | StatCounter Global Stats”. StatCounter Global Stats. Retrieved 2019-01-03.
                                  8. ^ “Market share for mobile, browsers, operating systems and search engines | NetMarketShare”. netmarketshare.com. Retrieved 2018-11-02.
                                  9. ^ “Victor: Software empire pays high price”. CNET News. CBS Interactive. Retrieved October 17, 2008.
                                  10. ^ “The rise, fall, and rehabilitation of Internet Explorer”. citeworld.com. Retrieved February 6, 2015.
                                  11. ^ Paul Maritz. “U.S. Antitrust Case 98-1232”. justice.gov. Retrieved February 6, 2015. There is talk about how we get more $’s from the 1000+ people we have working on browser related stuff…
                                  12. ^ “Microsoft Update Catalog”. www.catalog.update.microsoft.com. Retrieved 2019-03-13.
                                  13. ^ “Microsoft Update Catalog”. www.catalog.update.microsoft.com. Retrieved 2019-03-13.
                                  14. ^ “Cumulative security update for Internet Explorer: June 12, 2018: Applies to: Internet Explorer 11, Internet Explorer 10, Internet Explorer 9”. support.microsoft.com. Retrieved 2018-07-12.
                                  15. ^ “Microsoft is killing off the Internet Explorer brand”. The Verge. Vox Media. March 17, 2015. Retrieved March 18, 2015.
                                  16. ^ https://docs.microsoft.com/en-us/windows-insider/at-work/whats-new-wip-at-work-1809
                                  17. ^ “What is the Microsoft Lifecycle Support policy for Internet Explorer?”. March 31, 2016. Compared with older versions of Internet Explorer, Internet Explorer 11 offers improved security
                                  18. ^ “Stay up-to-date with Internet Explorer”. Microsofts’s MSDN blog. August 7, 2014. Retrieved August 29, 2014.
                                  19. ^ “Internet Explorer Support Lifecycle Policy FAQ”. Retrieved 2015-03-18.
                                  20. ^ “Internet Explorer”. Rotten Websites Wiki. Retrieved 2018-08-12.
                                  21. ^ “Thomas Reardon, 34”. MIT Technology Review. Retrieved 18 January 2015.
                                  22. ^ ab Elstrom, Peter (January 22, 1997). “Microsoft’s $8 Million Goodbye to Spyglass”. Businessweek. Bloomberg L.P. Archived from the original on June 29, 1997. Retrieved February 9, 2011.
                                  23. ^ ab Thurrott, Paul (January 22, 1997). “Microsoft and Spyglass kiss and make up”. Windows IT Pro. Penton. Archived from the original on September 19, 2012. Retrieved February 9, 2011.
                                  24. ^ ab “Memoirs From the Browser Wars”. Ericsink.com. Retrieved October 17, 2008.
                                  25. ^ The History of Internet Explorer at the Wayback Machine (archived 2005-10-01)
                                  26. ^ Borland, John (April 15, 2003). “Software empire pays high price”. CNET News. CBS Interactive. Retrieved February 9, 2011.
                                  27. ^ Thurrott, Paul (January 22, 1997). “Microsoft and Spyglass kiss and make up”. WindowsITPro. Archived from the original on September 19, 2012. Retrieved February 9, 2011.
                                  28. ^ Goodwins, Rupert (August 15, 1996). “Microsoft sued by minnow over Internet Explorer name”. ZDNet. Retrieved August 15, 2011.
                                  29. ^ ab Thurrott, Paul (July 25, 2013). “Internet Explorer 11 Developer Preview for Windows 7”. Paul Thurrott’s SuperSite for Windows. Penton. Retrieved July 26, 2013.
                                  30. ^ “What’s new in F12 Tools (Preliminary)”. MSDN. Microsoft. June 26, 2013. Retrieved July 13, 2013.
                                  31. ^ “High DPI support (Preliminary)”. MSDN. Microsoft. July 25, 2013. Retrieved July 26, 2013.
                                  32. ^ “Prerender and prefetch support (Preliminary)”. MSDN. Microsoft. July 25, 2013. Retrieved July 26, 2013.
                                  33. ^ Bradley, Tony (July 26, 2013). “Why Internet Explorer 11 is the right browser for business”. PC World. IDG. Retrieved July 27, 2013.
                                  34. ^ ab Brinkmann, Martin (July 25, 2013). “The Internet Explorer 11 Preview for Windows 7 is now available”. Ghacks.net. ghacks Technology News. Retrieved July 27, 2013.
                                  35. ^ “Latest Windows 8.1 build beefs up IE developer tools”. CNET. CBS Interactive. Retrieved May 29, 2013.
                                  36. ^ “Microsoft teases Internet Explorer 11 WebGL support on Vine”. The Verge. Retrieved May 29, 2013.
                                  37. ^ “WebGL (Preliminary)”. MSDN. Microsoft. July 25, 2013. Retrieved July 26, 2013.
                                  38. ^ Lardinois, Frederic (June 26, 2013). “Microsoft Confirms IE11 Will Support Google’s SPDY Protocol”. TechCrunch. Aol. Retrieved September 10, 2013.
                                  39. ^ Williams, Mike (July 26, 2013). “Internet Explorer 11 Developer Preview now available for Windows 7”. BetaNews. BetaNews, Inc. Retrieved July 27, 2013.
                                  40. ^ “IE11 for Windows 7 Globally Available for Consumers and Businesses”. Retrieved November 8, 2013.
                                  41. ^ “WebKit SunSpider JavaScript Benchmark Results”. ie.microsoft.com. Retrieved October 23, 2013.
                                  42. ^ Weber, Jason (January 21, 2015). “Spartan and the Windows 10 January Preview Build”. IEBlog. Microsoft.
                                  43. ^ Rossi, Jacob (November 11, 2014). “Living on the Edge – our next step in helping the web just work”. IEBlog. Microsoft.
                                  44. ^ Warren, Tom (January 27, 2015). “Microsoft reveals its Internet Explorer successor will support extensions”. The Verge. Vox Media.
                                  45. ^ Brian wilson. “Netscape Navigator — Browser History: Netscape explains that by the fourth generations of both browsers, Internet Explorer had caught up technologically with Netscape’s browser … Netscape 6.0 was considered slow and buggy, and adoption was slow to occur”. blooberry.com. Retrieved September 26, 2010.
                                  46. ^ “Internet Explorer 8 Beta 1 Whitepapers”. MSDN. Retrieved March 11, 2008.
                                  47. ^ Hopkins, James. “IE8 Bugs”. Archived from the original on August 1, 2009.
                                  48. ^ “Summary results of W3C test suite on multiple browsers, different versions and browser plugins”. Retrieved April 15, 2011.
                                  49. ^ Svensson, Peter (September 10, 2008). “Creator of Web spots a flaw in Internet Explorer”. msnbc.msn.com. Retrieved November 16, 2008.
                                  50. ^ “SVG Support Tables”. codedread.com.
                                  51. ^ “Filter Tool (WebFX)”. webfx.eae.net. May 12, 2005.
                                  52. ^ “Using Script Encoder”. microsoft.com. May 12, 2005.
                                  53. ^ “Font Embedding for the Web”. microsoft.com.
                                  54. ^ “How to Add a Shortcut Icon to a Web Page”. MSDN. Microsoft. Retrieved March 25, 2014.
                                  55. ^ Davis, Jeff (December 27, 2007). “why doesn’t the favicon for my site appear in IE7?”. jeffdav on code. Microsoft. Retrieved March 11, 2013.
                                  56. ^ “Fun with Favicons”. Microsoft. September 7, 2013. Retrieved November 3, 2013.
                                  57. ^ Windows Core Networking Team. “A bit about WinInet’s Index.dat”. MSDN blogs. Retrieved March 7, 2008.
                                  58. ^ “Internet Explorer 9 Network Performance Improvements”. Retrieved January 16, 2017.
                                  59. ^ abcdef “Internet Explorer Architecture”. MSDN. Retrieved January 10, 2007.
                                  60. ^ Wilson, Chris. “Inside IE8 Beta 1 for Developers”. MSDN Channel9. Retrieved March 7, 2008.
                                  61. ^ “IE8 and Loosely Coupled IE”. Retrieved March 18, 2008.
                                  62. ^ ab McSherry, Tony (January 20, 2013). “A look at Internet Explorer 10 on Windows RT”. TechRepublic. CBS Interactive.
                                  63. ^ “Security risk detected in Internet Explorer software”. Belfast Telegraph. December 16, 2008.
                                  64. ^ “Serious security flaw found in IE”. BBC News. December 16, 2008. Retrieved May 5, 2010.
                                  65. ^ Goodin, Dan (December 9, 2011). “Chrome is the most secured browser – new study”. The Register. Retrieved October 15, 2012.
                                  66. ^ “Accuvant Study Finds Chrome is Most Secure Browser”. eSecurity Planet. December 13, 2011. Retrieved May 22, 2012.
                                  67. ^ “Browser Security White Paper” (PDF). X41-Dsec GmbH. September 18, 2017. Retrieved September 21, 2017.
                                  68. ^ Seltzer, Larry (April 14, 2005). “The Lame Blame of ActiveX”. Security—Opinions. eWeek. Retrieved April 7, 2006.
                                  69. ^ Lemos, Robert (July 31, 2006). “ActiveX security faces storm before calm”. Security Focus. Retrieved July 11, 2009.
                                  70. ^ “Secunia 2008 Report” (PDF). Secunia.
                                  71. ^ Goodin, Dan (November 1, 2010). “Internet Explorer info leak festers for 2 years”. San Francisco: The Register. Retrieved November 2, 2010.
                                  72. ^ Naraine, Ryan (November 1, 2010). “Two-year-old data leakage flaw still haunts Internet Explorer”. ZDNet. CBS Interactive. Retrieved November 2, 2010.
                                  73. ^ “Researchers bypass Internet Explorer Protected Mode”. December 3, 2010. Retrieved December 4, 2010.
                                  74. ^ “Browser Market Share Worldwide – July 2017”. Statcounter. July 2017. Retrieved 2017-08-02.
                                  75. ^ “Browser Market Share Worldwide – December 2018”. Statcounter. December 2018. Retrieved 2019-01-11.
                                  76. ^ Mills, Elinor (January 14, 2010). “New IE hole exploited in attacks on U.S. firms”. CNET News. CBS Interactive. Retrieved September 26, 2010.
                                  77. ^ Emery, Daniel (January 16, 2010). “Germany issues Explorer warning”. BBC News. Retrieved March 26, 2010.
                                  78. ^ Fildes, Jonathan (January 18, 2010). “France in fresh Explorer warning”. BBC News. Retrieved March 26, 2010.
                                  79. ^ Emily Bourke for AM (January 19, 2010). “Govt issues IE security warning”. abc.net.au. Retrieved September 26, 2010.
                                  80. ^ Martinez-Cabrera, Alejandro (January 18, 2010). “The Technology Chronicles : France and Germany warn users not to use Internet Explorer”. The San Francisco Chronicle.
                                  81. ^ Govan, Fiona (January 18, 2010). “Germany warns against using Microsoft Internet Explorer”. The Daily Telegraph. London. Retrieved March 26, 2010.
                                  82. ^ “CVE-2014-1776”. Common Vulnerabilities and Exposures (CVE). 2014-01-29. Retrieved 2017-05-16.
                                  83. ^ “Microsoft Security Advisory 2963983”. Microsoft. April 26, 2014. Retrieved April 28, 2014.
                                  84. ^ Finkle, Jim (April 28, 2014). “U.S., UK advise avoiding Internet Explorer until bug fixed”. Reuters. Retrieved April 28, 2014.
                                  85. ^ “Microsoft Internet Explorer Use-After-Free Vulnerability Guidance”. United States Computer Emergency Readiness Team. April 28, 2014. Retrieved April 28, 2014.
                                  86. ^ “Vulnerability Note VU#222929 – Microsoft Internet Explorer use-after-free vulnerability”. Carnegie Mellon University. April 27, 2014. Retrieved April 28, 2014.
                                  87. ^ “U.S.: Stop using Internet Explorer until security holes are fixed”. Chicago Tribune. April 28, 2014. Retrieved April 28, 2014.
                                  88. ^ “Microsoft warns of Internet Explorer flaw”. BBC. April 28, 2014. Retrieved April 28, 2014.
                                  89. ^ “Microsoft Security Bulletin MS14-021 – Critical Security Update for Internet Explorer (2965111)”. Microsoft Technet. May 1, 2014. Retrieved July 6, 2014.
                                  90. ^ “Market share for browsers, operating systems and search engines”. marketshare.hitslink.com.
                                  91. ^ “Market share for browsers, operating systems and search engines”. marketshare.hitslink.com. Retrieved February 9, 2011.
                                  92. ^ Borland, John. Browser wars: High price, huge rewards, ZDNet, April 15, 2003. Accessed June 2, 2012.
                                  93. ^ “TheCounter.com: The Full-Featured Web Counter with Graphic Reports and Detailed Information”. Thecounter.com. Archived from the original on October 3, 2008. Retrieved October 17, 2008.
                                  94. ^ “TheCounter.com: The Full-Featured Web Counter with Graphic Reports and Detailed Information”. Thecounter.com. Archived from the original on October 2, 2008. Retrieved October 17, 2008.
                                  95. ^ “CNN — Behind the numbers: Browser market share — October 8, 1998”. Cnn.com. Archived from the original on August 16, 2000. Retrieved October 17, 2008.
                                  96. ^ “Web Analytics | Online Business Optimization by Omniture”. Omniture.com. Archived from the original on April 20, 2008. Retrieved October 17, 2008.
                                  97. ^ Goldman, David (October 6, 2010). “Internet Explorer usage falls below 50%”. CNN. Retrieved October 6, 2010.
                                  98. ^ “Google Chrome Overtakes Internet Explorer”. PCWorld. 2012-05-21. Retrieved 2019-01-19.
                                  99. ^ “IE Emergency Mode”. im-infected.com. January 28, 2011. Archived from the original on June 30, 2011. Retrieved June 23, 2013.
                                  100. ^ “Bleeping Computer – Fake IE Emergency Mode (by fake AVG)”. January 28, 2011. Retrieved June 23, 2013.

                                  Further reading

                                  .mw-parser-output .refbegin{font-size:90%;margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{list-style-type:none;margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li,.mw-parser-output .refbegin-hanging-indents>dl>dd{margin-left:0;padding-left:3.2em;text-indent:-3.2em;list-style:none}.mw-parser-output .refbegin-100{font-size:100%}

                                  • “Index DOT Html and Index DOT Css”. Browser History: Windows Internet Explorer. Retrieved December 22, 2013.
                                  • Hachamovitch, Dean (July 27, 2005). “Windows Vista & IE7 Beta 1 Available”. IEBlog. Microsoft. Retrieved December 22, 2013.
                                  • Wilson, Chris (July 30, 2005). “Standards and CSS in IE”. IEBlog. Microsoft. Retrieved December 22, 2013.
                                  • Graff, Scott (October 7, 2006). “IE7 Is Coming This Month”. IEBlog. Microsoft. Retrieved December 22, 2013.
                                  • “IE7 Platforms And Outlook Express”. IEBlog. Microsoft. March 1, 2005. Retrieved December 22, 2013.
                                  • “Gates Highlights Progress on Security, Outlines Next Steps for Continued Innovation”. News Center. Microsoft. February 15, 2005. Retrieved December 22, 2013.
                                  • Williams, Mary-Lynne; MacNeil, Leslie; Hall, Marty (September 17, 2010). Hachamovitch, Dean, ed. “User Experiences: Evolving the blue “e“. IEBlog. Microsoft. Retrieved December 22, 2013.

                                  External links

                                  • Official website Edit this at Wikidata

                                    • Internet Explorer Architecture