FreeBSD - 國立交通大學資訊工程學系liuyh/course/sysadm/... · Computer Center, CS, NCTU...
Transcript of FreeBSD - 國立交通大學資訊工程學系liuyh/course/sysadm/... · Computer Center, CS, NCTU...
FreeBSD
Com
pute
r Cente
r, CS
, NC
TU
2
Outline
� FreeBSD version
• 8.1-RELEASE
� Installing FreeBSD
• From CD-ROM
� Build world and kernel
• Update source
• Rebuild world
• Rebuild kernel
� Software installation
� Appendix
• Csup
Com
pute
r Cente
r, CS
, NC
TU
3
FreeBSD Version
Com
pute
r Cente
r, CS
, NC
TU
5
FreeBSD Branches/Tags
� Three parallel development branches:
• -RELEASE
� Latest Release Version:
– 8.1 (July, 2010)
– http://www.freebsd.org/releases/
• -STABLE
� Tested new features and bug fixes
� MFC: Merge From Current
• -CURRENT
� Working space for FreeBSD developers
� Current version:
– 9.0-CURRENT
– http://www.freebsd.org/releng/
Com
pute
r Cente
r, CS
, NC
TU
6
FreeBSD Version
� FreeBSD–A.B.C–Type
• A: major version Number
• B: minor version Number
• C: slight patch version number
• Type: version type
� PRERELEASE
� BETA
� RC
� RELEASE
� STABLE
� CURRENT
� Choosing the FreeBSD Version That Is Right For You:
• http://www.freebsd.org/doc/en/articles/version-guide/
FreeBSD Installation
Com
pute
r Cente
r, CS
, NC
TU
8
FreeBSD View of Disk (1)
D-Disk NTFS Linux Swap
MBR
Partition 1
Partition 2
Partition 3
Partition 4
Windows 7 (NTFS)
bsdlabel
Label a
Label b
Label c
Label d
Extended Partiton
Linux (EXT3FS)
FreeBSD
Here!!!
Com
pute
r Cente
r, CS
, NC
TU
9
FreeBSD View of Disk (2)
� What is the meaning of ad0s1a
• Disk name
� ad: IDE, SATA
� da: SCSI, usb stick
• Slice is equal to the partition of common use
� Primary partition: s1 ~ s4
� Extended partition: s5 ~ sn
• Label in each slice
� a: root partition /
� b: swap
� c: entire slice
� defgh: /usr, /home, …
MBR
Slice 1 (/dev/ad0s1)
Slice 2 (/dev/ad0s2)
Slice 3 (/dev/ad0s3)
Slice 4 (/dev/ad0s4)
Slice 5
(/dev/ad0s5)
Slice 6
(/dev/ad0s6)
Com
pute
r Cente
r, CS
, NC
TU
10
Installing FreeBSD
� Steps
1. Knowing your hardware
2. Obtaining installation file
3. Booting from CD/DVD/usb-stick
4. FreeBSD installer: sysinstall
1. Partition
2. Label
3. Distribution
4. Media
5. Commit
5. Post-installation configurations
Com
pute
r Cente
r, CS
, NC
TU
11
Installing FreeBSD –
1. Knowing Your Hardware
� CPU
• 32bit or 64bit
• Intel、AMD
• Architecture: amd64, i386 (, ia64, pc98, powerpc, sparc64)
� RAM
• Size
� HD
• Size, amount, SCSI or IDE
� VGA
• Brand, ram size
� Sound
• Brand
� Network Interface Card
• Brand
• IP、Netmask、Default gateway、Hostname、DNS
� Other Special device• pciconf -lv
Com
pute
r Cente
r, CS
, NC
TU
12
Installing FreeBSD –
2. Obtaining Installation File
� FreeBSD installation CD
• ftp://ftp.tw.freebsd.org/pub/ISO-IMAGES-amd64/8.1/FreeBSD-8.1-
RELEASE-amd64-bootonly.iso
• ftp://ftp.tw.freebsd.org/pub/ISO-IMAGES-amd64/8.1/FreeBSD-8.1-
RELEASE-amd64-disc1.iso
• ftp://ftp.tw.freebsd.org/pub/ISO-IMAGES-amd64/8.1/FreeBSD-8.1-
RELEASE-amd64-dvd1.iso.gz
• ftp://ftp.tw.freebsd.org/pub/ISO-IMAGES-amd64/8.1/FreeBSD-8.1-
RELEASE-amd64-memstick.img
• Burn CD, DVD, or USB!
Com
pute
r Cente
r, CS
, NC
TU
13
Installing FreeBSD –
3. Booting from CD (1)
Com
pute
r Cente
r, CS
, NC
TU
14
Installing FreeBSD –
3. Booting from CD (2)
Enter
Com
pute
r Cente
r, CS
, NC
TU
15
Installing FreeBSD –
3. Booting from CD (3)
Just use default or…
Com
pute
r Cente
r, CS
, NC
TU
16
Installing FreeBSD –
3. Booting from CD (4)
這丟係愛台灣啦這丟係愛台灣啦這丟係愛台灣啦這丟係愛台灣啦!!!
Com
pute
r Cente
r, CS
, NC
TU
17
Installing FreeBSD –
3. Booting from CD (5)
Use USA ISO keymap because we don’t have our keyboard layout…
Com
pute
r Cente
r, CS
, NC
TU
18
Installing FreeBSD –
4. FreeBSD Installer
Being experts!
Com
pute
r Cente
r, CS
, NC
TU
19
Installing FreeBSD –
4. FreeBSD Installer: Custom
� 5 major steps
3. Partition your disk
4. Label your disk
5. Choose what to install
6. Choose how to install
7. Do it!
Com
pute
r Cente
r, CS
, NC
TU
20
� If you have more than one disk…
• You can choose one to partition it.
Installing FreeBSD –
4. FreeBSD Installer: Partition (1)
Com
pute
r Cente
r, CS
, NC
TU
21
� Create slice
• Press “C” to create a new slice / Press “A” to use entire disk
Installing FreeBSD –
4. FreeBSD Installer: Partition (2)
Com
pute
r Cente
r, CS
, NC
TU
22
� Press “S” to toggle “freebsd” as bootable
� Press “Q” to next step (Select Boot Manager)
Installing FreeBSD –
4. FreeBSD Installer: Partition (3)
Com
pute
r Cente
r, CS
, NC
TU
23
• Choose boot manager
� Standard � Write to disk MBR
� BootMgr � Install a simple boot manager to disk MBR
� None � Leave it unchanged
Installing FreeBSD –
4. FreeBSD Installer: Partition (4)
Com
pute
r Cente
r, CS
, NC
TU
24
� BSDlabel Editor
Installing FreeBSD –
4. FreeBSD Installer: Label (1)
Com
pute
r Cente
r, CS
, NC
TU
25
� Create label in ad0s1 and specify size
• Press “C” to create bsdlabel
� swap , / ( and /home, /var, …): size、type、mount point
• Press “S” to toggle SoftUpdates (async written to disk)
Installing FreeBSD –
4. FreeBSD Installer: Label (2)
Com
pute
r Cente
r, CS
, NC
TU
26
• Press “Q” to next step (back to custom installation options menu)
Installing FreeBSD –
4. FreeBSD Installer: Label (3)
Com
pute
r Cente
r, CS
, NC
TU
27
� Custom
Installing FreeBSD –
4. FreeBSD Installer: Distributions (1)
Com
pute
r Cente
r, CS
, NC
TU
28
� Select
• base ; binary
• kernels ; Generic kernel supports SMP
• man ; Manual
• src ; FreeBSD Source Code
• ports ; FreeBSD Software Collection
Installing FreeBSD –
4. FreeBSD Installer: Distributions (2)
Com
pute
r Cente
r, CS
, NC
TU
29
Installing FreeBSD –
4. FreeBSD Installer: Distributions (3)
Com
pute
r Cente
r, CS
, NC
TU
30
• Choose “1 CD/DVD” if you have 8.1 Release CD disk 1 or DVD
• Choose “3 FTP Passive” if your NIC is detected
• Choose “9 USB” if you have 8.1 memstick usb stick
Installing FreeBSD –
4. FreeBSD Installer: Media
Com
pute
r Cente
r, CS
, NC
TU
31
� Install through FTP Passive
• Specify ftp server
Installing FreeBSD –
4. FreeBSD Installer: Media (2)
Com
pute
r Cente
r, CS
, NC
TU
32
• Select NIC
• IPv6 and DHCP
Installing FreeBSD –
4. FreeBSD Installer: Media (3)
Com
pute
r Cente
r, CS
, NC
TU
33
• Specify your IP information
Installing FreeBSD –
4. FreeBSD Installer: Media (4)
Com
pute
r Cente
r, CS
, NC
TU
34
� Last Chance!
• We can take no responsibility for lost disk contents!
• Don’t forget backup!
Installing FreeBSD –
4. FreeBSD Installer: Commit (1)
Com
pute
r Cente
r, CS
, NC
TU
35
� Start to format disk and install operating system
� You can press “Alt + F2” to see the install detail
� There is a shell start in “Alt + F4”
Installing FreeBSD –
4. FreeBSD Installer: Commit (2)
Com
pute
r Cente
r, CS
, NC
TU
36
Installing FreeBSD –
5. Post Installation
� Recommend you to do it!
• Root Password
• User and group management
• Time Zone � Asia � Taiwan
• Networking � interfaces, sshd
Com
pute
r Cente
r, CS
, NC
TU
37
Installing FreeBSD –
5. Post Installation: Root Password
Com
pute
r Cente
r, CS
, NC
TU
38
Installing FreeBSD –
5. Post Installation: User Management (1)
� Create a group for users
� Create a user for yourself
• Least privilege
Com
pute
r Cente
r, CS
, NC
TU
39
Installing FreeBSD –
5. Post Installation: User Management (2)
Com
pute
r Cente
r, CS
, NC
TU
40
Installing FreeBSD –
5. Post Installation: User Management (3)
Com
pute
r Cente
r, CS
, NC
TU
41
Installing FreeBSD –
5. Post Installation: Time Zone
Com
pute
r Cente
r, CS
, NC
TU
42
Installing FreeBSD –
5. Post Installation: Networking (1)
� Interfaces
Com
pute
r Cente
r, CS
, NC
TU
43
Installing FreeBSD –
5. Post Installation: Networking (2)
� sshd
Com
pute
r Cente
r, CS
, NC
TU
44
Installing FreeBSD –
5. Post Installation: Done!
� Be sure to remove booting media.
• You would not want restart whole process again…
Com
pute
r Cente
r, CS
, NC
TU
45
FreeBSD Handbook
� Chapter 2 Installing FreeBSD
• http://www.tw.freebsd.org/doc/en/books/handbook/install.html
� Chinese resources
• http://www.tw.freebsd.org/doc/zh_TW/books/handbook/install.html
• http://freebsddoc.twbbs.org
• https://opensvn.csie.org/traccgi/freebsddoc
Build world and kernel
Com
pute
r Cente
r, CS
, NC
TU
47
Build World and Kernel
� Update source
• /etc/make.conf
• make update
� Build world
• mergemaster –p
• make buildworld
� Build and install kernel
• make buildkernel installkernel
� Install world
• make installworld
• mergemaster
Com
pute
r Cente
r, CS
, NC
TU
48
Build World & Kernel –
Prepare make.conf (1)
� Example make.conf
• /usr/share/examples/etc/make.conf
• Everything add in make.conf is used every time you run make
• # cp /usr/share/examples/etc/make.conf /etc/
• # chmod u+w /etc/make.conf
• Edit /etc/make.conf
Com
pute
r Cente
r, CS
, NC
TU
49
Build World & Kernel –
Prepare make.conf (2)
� CPU optimization
• CPUTYPE?=core2
Com
pute
r Cente
r, CS
, NC
TU
50
� Update source
SUP_UPDATE= yes
SUP= /usr/bin/csup
SUPFLAGS= -g –L 2
SUPHOST= cvsup.tw.freebsd.org
SUPFILE= /usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
Build World & Kernel –
Prepare make.conf (3)
Com
pute
r Cente
r, CS
, NC
TU
51
� The canonical steps to update system
• # cd /usr/src && make update
• # mergemaster -p (Pre-buildworld mode)
• # cd /usr/src && make -s buildworld
• # cd /usr/src && make -s kernel (buildkernel, installkernel)
• Reboot and boot in single user mode
� # mount -u /
• # cd /usr/src && make -s installworld
• # mergemaster (or mergemaster -UFi)
• # reboot
• See build(7), mergemaster(8)
Build World & Kernel –
Canonical steps
Com
pute
r Cente
r, CS
, NC
TU
52
Build World & Kernel –
make buildworld
� Build FreeBSD entire system
• % make –s –j 5 buildworld >& /var/log/world.log &
make –j n buildworld
Spawn multiple (n) processes to do make.
The compiling processes of make world is I/O bound.
Com
pute
r Cente
r, CS
, NC
TU
53
Build World & Kernel –
make buildkernel (1)
� Why rebuild kernel?
• Faster boot time.
� Probe only necessary device
• Lower memory usage
� Smaller kernel image
• Additional hardware support.
Com
pute
r Cente
r, CS
, NC
TU
54
Build World & Kernel –
make buildkernel (2)
� Edit kernel configuration file
• # cd /usr/src/sys/{i386,amd64}/conf
� GENERIC must have too much for your system
• # cp GENERIC YOUR_NAME
� We often use hostname to be YOUR_NAME
� Ex. # cp GENERIC SABSD
• edit config file
� Depend on your system
� Be attention to related options
� Following the explanation of
http://www.freebsd.org/doc/en_US.ISO8859-
1/books/handbook/kernelconfig-config.html
Com
pute
r Cente
r, CS
, NC
TU
55
Build World & Kernel –
make buildkernel (3)
� Set KERNCONF in /etc/rc.conf
• KERNCONF= SABSD
� Build kernel
• # make -s buildkernel
Com
pute
r Cente
r, CS
, NC
TU
56
Build World & Kernel –
make installkernel
� Install kernel
• # make -s installkernel
make buildkernel && make installkernel
= make buildkernel installkernel
= make kernel
Com
pute
r Cente
r, CS
, NC
TU
57
Build World & Kernel –
reboot into single user mode
� Boot in single user mode
• Press “4”
Or
• # shutdown now
� For a running system, this will drop it to single user mode
Com
pute
r Cente
r, CS
, NC
TU
58
Build World & Kernel –
make installworld
� Install the built world
• % make installworld
Com
pute
r Cente
r, CS
, NC
TU
59
Build World & Kernel –
mergemaster
� mergemaster [ -UFi ]
• Synchronize /usr/src/etc with /etc
• Choose “i” for most case, such as
� /etc/defaults/rc.conf, …
• Press “enter” for certain file, such as
� master.passwd, hosts, csh.*
• -U
Attempt to auto upgrade files that have not been user modified.
• -F
Install the new file if the files differ only by VCS Id.
• -i
Automatically install any files that do not exist.
Com
pute
r Cente
r, CS
, NC
TU
60
Reboot
� Reboot and enjoy it
• % reboot
� Check
• % uname –ai
� Handbook
• Chapter 8 Configuring the FreeBSD Kernel
� http://www.freebsd.org/doc/en/books/handbook/kernelconfig.html
• 23.4 Rebuilding “world”
� http://www.freebsd.org/doc/en/books/handbook/makeworld.html
Com
pute
r Cente
r, CS
, NC
TU
61
If Something Goes Wrong … (1)
� Possible errors in building new kernel
• Configuration file
� # cd /usr/src/sys/{i386,amd64}/conf/
� Edit YOUR_NAME
• Build fail?
• Install fail?
• Kernel does not boot
� Boot with old kernel, recompile kernel
• Kernel works, but ps does not work
� Rebuild world
Com
pute
r Cente
r, CS
, NC
TU
62
If Something Goes Wrong … (2)
� Boot from old kernel
• “6. Escape to loader prompt”
• OK boot /boot/kernel.old/kernel
• # cd /boot
• # cp -R kernel.old kernel.ok
• # rm -rf kernel
• # mv kernel.old kernel
� Handbook
• 8.7 If Something Goes Wrong
� http://www.freebsd.org/doc/en/books/handbook/kernelconfig-
trouble.html
Com
pute
r Cente
r, CS
, NC
TU
63
Play with Your FreeBSD
� Useful commands
• passwd, chsh, chfn, chpass
• ls
• ps, top
• mkdir/rmdir
• cp/mv/rm
• write
• Manual: man, info, …etc.
• Email reader: mutt, …etc.
• News reader: tin
• Connecting: ssh/telnet
• Editor: vim, joe, ee, …etc.
• File Transmittion: ftp, ncftp, lftp, scp, wget, curl, …etc.
• Compilers: gcc, g++, javac, …etc.
• Scripting: perl, php, ruby, python …etc.
• login/exit/logout/screen
Com
pute
r Cente
r, CS
, NC
TU
64
Help Yourself – man (1)
�man pages (manual)
• Contain descriptions of
� Individual command.
– % man cp
�File format.
– % man rc.local
�Library routines.
– % man strcpy
Com
pute
r Cente
r, CS
, NC
TU
65
�Command
• % man [section] title
� % man printf (printf command)
� % man 3 printf (C Standard printf func.)
� % man –k exit (keyword search)
�Man pages organization
AT&T BSD Contents
1 1 User-Level commands and applications
2 2 System calls and kernel error code
3 3 Library calls
4 5 Standard file format
5 7 Miscellaneous files and documents
6 6 Games and demonstrations
7 4 Device Drivers and network protocols
1m 8 System administration commands
9 9 Obscure kernel specs and interfaces
%man man
Help Yourself – man (2)
Com
pute
r Cente
r, CS
, NC
TU
66
Conventions
� Syntax of commands:
• Anything between “[” & “]” – are optional.
• Anything followed by “…” – can be repeated.
• {a | b} – you should choose one of them.
• Example:
� bork [-x] { on | off } filename …
bork on /etc/hosts ○
bork –x off /etc/hosts /etc/passwd ○
bork –x /etc/hosts X
bork -h /etc/hosts X
Software Installation
Com
pute
r Cente
r, CS
, NC
TU
68
Using FreeBSD Ports (1)
�Using ports
• Steps of install software
(1) Figure out the path to the software
– % cd /usr/ports
– % make search key=mutt
– % cd /usr/ports/chinese/mutt
(2) Fetch and compile the source
– % make install
• Uninstall
�% make deinstall
Com
pute
r Cente
r, CS
, NC
TU
69
Using FreeBSD Ports (2)
�Ports
• cd /usr/ports
�make search
�make install clean
• ports-mgmt/psearch
�make search
• ports-mgmt/portmaster
�Use “portmaster chinese/mutt” to install.
Com
pute
r Cente
r, CS
, NC
TU
70
Installing Useful Tools
�Try to install some software, such as:
• vim: editors/vim
• mutt: chinese/mutt
• wget: ftp/wget
• screen: sysutils/screen
Appendix
Com
pute
r Cente
r, CS
, NC
TU
72
FreeBSD source
� Maintained in a CVS repository in California
• The tool to get the latest FreeBSD source
� CSup
� We can use CSup keep our FreeBSD source up-to-date with any FreeBSD mirror sites
• Edit CSup supfile
• Update source using CSup
� Up-to-date your system
• Build world & kernel using the updated source.
• Install softwares.
• Upgrade softwares.
Com
pute
r Cente
r, CS
, NC
TU
73
FreeBSD source
CSup Configuration file (1)
� Example csup supfiles
• /usr/share/examples/cvsup/standard-supfile
• /usr/share/examples/cvsup/ports-supfile
� Create your own supfiles
• Edit /usr/local/etc/src-supfile
• Edit /usr/local/etc/ports-supfile
• Edit /etc/make.conf to set your own supfiles
Com
pute
r Cente
r, CS
, NC
TU
74
FreeBSD source
CSup Configuration file (2)
�/usr/local/etc/src-supfile
*default host=freebsd.cs.nctu.edu.tw Where to get source
*default base=/usr Where to put status file
*default prefix=/usr Where to put source
*default delete use-rel-suffix Allow cvs to delete
*default compress Compress before transmit
*default release=cvs tag=RELENG_8_1
src-all
� host can be remained CHANGE_THIS.freebsd.org if you runmake update, and you have SUPHOST in /etc/make.conf
Com
pute
r Cente
r, CS
, NC
TU
75
FreeBSD source
CSup Configuration file (3)
� CVS tags
• Branch Tags
� . (FreeBSD-CURRENT)
� RELENG_8 (FreeBSD 8.1-STABLE)
• Release Tags
� RELENG_8_1 (FreeBSD 8.1-RELEASE)
• To refer to a specific point in time
� RELENG_8_1_0_RELEASE
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvs-tags.html
Com
pute
r Cente
r, CS
, NC
TU
76
FreeBSD source
CSup Configuration file (4)
�/usr/local/etc/ports-supfile
*default host=freebsd.cs.nctu.edu.tw
*default base=/usr
*default prefix=/usr
*default delete use-rel-suffix
*default compress
*default release=cvs tag=. . means the latest ports tree
ports-all