Информация
- Тема: FreeBSD in the Enterprise: An Introduction for Linux Users 
- Докладчик: Murray Stokely murray@freebsd.org 
- Когда: 29 апреля 2005 года, 18:30 
- Где: ВМК МГУ, П-12 
FreeBSD itself
FreeBSD in a nutshell
- Freely available Unix-like operating system
- Runs on x86, Alpha, Sparc64, IA-64, AMD64 architectures
- Over 11,000 software packages available
- Many commercial users
- Thousands of developers around the world contributing to it
- Used as an operating systems research platform
- So far, so Linux...
FreeBSD History
- BSD developed at University of California, Berkeley, as alterations to AT&T Unix 
- Initial implementation of key Unix concepts, such as sockets, virtual memory, and TCP/IP
- 386BSD developed to implement BSD Unix on x86 architecture in early 1990s
- FreeBSD developed from 386BSD project (as did NetBSD)
- Now has 350+ active developers, and 1,000's of contributors
Places you'll find FreeBSD
Powering websites
- Yahoo!
- Sony Japan
- Netcraft
- NTT/Verio
Grunt work
- Disney
- Manex VFX
- NASA
ISPs
- UUNet, Pair, Demon, EasyNet, ... 
Enterprise Use
- FreeBSD is used by some of the largest banks in the world to process over 1.5 trillion US Dollars (43,500,000,000,000 Rubles) of business to business transactions per year.
- Perl, Apache, X11, and other Open Source software also used in this application.
- FreeBSD Jails used for system security.
Factors that Help
- Stability
- Source availability for helping understand and fix problems that occur (having the source to the system helps you understand why your application does not do what you expect)
- Excellent performance
- Easy hardware upgrade paths
- The application is spread over many servers. Need more power in one part? Add more FreeBSD boxes.
- PC hardware sometimes is less than perfect, but at PC hardware prices, hot spares are practical.
Internet Infrastructure
- BSD has existed since the last 1970's and was the testbed and reference implementation for TCP/IP.
- The Internet Software Consortium (ISC) uses FreeBSD exclusively for f-root domain servers (in 21 cities now, usually with 3 servers per city).
- Modern FreeBSD is extremely refined and mature.
- FreeBSD consistently placed at the top of the "uptime" lists produced by Netcraft to measure the stability of the world's busiest websites.
Differences from Linux
FreeBSD Licensing Model
- FreeBSD distributed under "2 clause" BSD license
- Copyright (C) "year" "name". All rights reserved
- Redistribution in source and binary forms, with or without modification, are permitted, provided that the following conditions are met:
- Redistribution of source code must retain the above copyright notice, this list of conditions, and the disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED LIMITED WARANTIES...
FreeBSD Licensing Model
- Don't claim that you wrote the code
- Don't blame us if the code doesn't work
- Apart from that, do anything you want with the code
The GPL and BSD Licenses
- The GPL mandates that source code be disclosed
- The BSD License allows source code changes to be kept secret
- GPL is often categorised as "Copyleft", as distinct from "Copyright"
- BSD License is "Copycentre". We actively encourage third parties to use the source code.
- Donating changes back is purely at the discretion of the party making the changes
Source Code Control
- The entire source code for FreeBSD is stored in a CVS repository
- The logs, and individual changes for each file can be traced back to 1994.
- The source tree can be checked out at any state, or corresponding to any release
- CDs are available taking the history back a further 20 years
- Changes to the FreeBSD tree are available in a number of ways (CVS, CVSup, CTM (e-mail), Web)
- It is possible to maintain a local mirror of the complete CVS tree
- You can 'tag' a local copy of the tree as buildable, and then selectively include changes from FreeBSD
Source Code Distribution
- FreeBSD Source Code
- Available on CD (freebsdmall.com, others)
- Can be downloaded from ftp.freebsd.org
- Changes to the source code
- Can be updated using CVS
- Can be updated using CVSup (faster CVS)
- Changes can be automatically e-mailed in, and integrated with your local source tree
- Can be browsed, with history, on the web, at http://www.freebsd.org/cgi/cvsweb.cgi 
Development Organization
- Two layers of FreeBSD organization
- The committers, and everyone else
- Committers have write access to the source tree
- Everyone else submits patches or bug reports using FreeBSD's problem reporting system, and waits for a committer to commit the change
- Individuals who submit many patches (that work) are invited to become committers
- 9 committers form the elected "core team", for dispute resolution
Development Organization
FreeBSD is a complete OS
- FreeBSD consists of all the components needed for a complete operating system
- kernel
- compiler
- include files
- libraries
- user-land utilities
- Kernel and userland are kept synchronized, and can be built, from source, as a unit
FreeBSD Release Model
- FreeBSD releases maintained using CVS branches
- Head of the tree (-current) is now FreeBSD 6.0
- When 4.0 came out, a branch was created for "4-STABLE" and minor releases up to 4.11 happened every 4 months.
- These minor releases (4.1, 4.2, etc) consist of bug fixes backported from -CURRENT, and new features in -CURRENT that have been extensively tested
- 5.0 process was a little different, and was not declared 5-STABLE until 5.3, due to the number of advanced new features and reimplementation of SMP introduced in FreeBSD 5.
Third Party Packages
- FreeBSD has over 11,000 applications available as binary packages
- Linux has similar number of applications available in a number of different binary formats (RPM, Deb, and others, depending on the distribution).
- Packages are built from the "ports tree" of which more later
- FreeBSD and Linux roughly equal in this respect...
Linux Compatability
- FreeBSD runs 95%+ of Linux binary applications unchanged
- Oracle
- VMWare
- Netscape
- RealPlayer 
- Flash
- NetBackup 
- Quake III
- ...
FreeBSD for Development
- The source code is a great reference
- Run standard development tools
- gcc
- gdb
- ddd
- (x)emacs
- make
FreeBSD on the Desktop
- GNOME
- KDE
- StarOffice / OpenOffice 
- Mozilla / Firefox
- WordPerfect 
- VMWare
FreeBSD Technologies
- The Build System / Release System
- The Ports System
- NDISulator (Windows Driver Compatability)
- Linux Compatability
- Netgraph
- ... and more
The Build System
Building World
- The entire operating system, including all libraries and utilities can be built with a single command : make world 
- The source code for the system is placed in /usr/src during installation. 
- Much easier to secure a system if a bug is found in a key library like OpenSSL.
- More information in build(7) and Handbook.
Building Releases
- You can even build a complete release of FreeBSD, including FTP install directories, floppy images, and ISO images for CDROMs with one command.
- make release is used by many large companies to produce special versions of FreeBSD with special patches or additional software installed by default. 
- It is also the well documented way in which the release engineering team makes all official releases of FreeBSD.
Release Engineering
- make release makes it much easier to deploy thousands of systems pre-configured for a specific environment. 
- The release engineering team for FreeBSD publishes schedules, identifies QA issues that must be resolved before release, and publishes documents to help other people build FreeBSD based products.
- See release(7) and www.freebsd.org/releng
Linux Compatability
Running a FreeBSD binary
- Code like
- fd = open("/etc/passwd", O_RDONLY); 
- Becomes
- syscall(5, ...) 
- Kernel knows it's a FreeBSD binary, uses freebsd_syscalls[] array 
- freebsd_syscalls[5] = freebsd_open(...); 
- File is opened
Running a Linux binary
- Code like
- fd = open("/etc/passwd", O_RDONLY); 
- Becomes
- syscall(5, ...) 
- Kernel knows it's a Linux binary, uses linux_syscalls[] array 
- linux_syscalls[5] = linux_open(...); 
- File is opened
- All Linux file operations redirected to /compat/linux first
Running Linux binaries
- No slowdown; this is not emulation 
- Efficiency of TCP/IP and VM system means some Linux apps run faster 
- SCO (ibcs2) compatibility handled in the same way
Windows Network Device Driver Compatability
NDISulator
- Compatability layer for NDIS Windows Driver Kernel API.
- Allows driver .inf and .sys files to be turned into FreeBSD loadable kernel modules.
- Can load and unload windows network device drivers in FreeBSD!
- Some wireless hardware vendors refuse to release specifications, so this is the only method to use such cards with an open source operating system.
- More information in ndis(9).
More Information
- FreeBSD Handbook (Russian translation available)
- Local User Groups, Mailing lists
Questions?
Материалы
- [получить | показать] (2011-09-26 11:35:18, 180.9 KB) [[attachment:MSU - FreeBSD.pdf]]
- [получить | показать] (2011-09-26 11:35:18, 120.5 KB) [[attachment:MSU - FreeBSD.ppt]]
