2.04k likes | 2.36k Vues
Linux 簡介. 計算工具 國立高雄大學應用數學系 2004/05/10. 前言. Don ’ t panic! No C/C++/assembly language No hard examination But Linus wrote Linux 0.0.1 when he was a sophomore student. 參考資料. 鳥哥的私房菜館 http://linux.vbird.org/ GNU/Linux 初學之旅:李果正 http://www.study-area.net/tips/linux_entry.htm
E N D
Linux 簡介 計算工具 國立高雄大學應用數學系2004/05/10
前言 • Don’t panic! • No C/C++/assembly language • No hard examination • But Linus wrote Linux 0.0.1 when he was a sophomore student
參考資料 • 鳥哥的私房菜館 http://linux.vbird.org/ • GNU/Linux 初學之旅:李果正http://www.study-area.net/tips/linux_entry.htm • Linux 教育訓練:國家高速電腦中心
Unix 簡介 • Multix – MIT, GE • Bell Labs, AT&T, early 1970's • Unix, C Programming Language • Ken Tompson、Dennis Ritchie • 主要概念 • 所有程式都是檔案 - (最具創意的概念)。 • 不論是建構編輯器還是附屬檔案,所寫的程式只有一個目的,且要能有效完成目標。 • 任何人可以由小到大,模組化建構系統。 • BSD – Berkeley Software Distribution • Billy Joy(vi), Kirk McKusik
Unix 簡介 (續) • Kernel 核心 • e.g. Linux Kernel • can access kernel data • can execute kernel programs • switch to user mode • service an interrupt • User 使用者 • e.g. root、userXXX • cannot access kernel data • cannot execute kernel programs • issue a system call to switch to kernel mode • Shell 殼? • e.g. sh、csh、tcsh、bash
Unix 簡介 (續) • Shell • User management • File system • Process control
Unix 簡介 (續) • UNIX variants • AT&T, Bell Labs • UC, Berkeley – Berkeley Software Distribution • SCO Unix • Sun – SunOS, Solaris • IBM – AIX • SGI – Irix • HP – HP-UX • SYSV, BSD, POSIX
Unix 簡介 (續) • Opensource Unix-like OS • Minix • Linux • BSD series, OpenBSD, FreeBSD, NetBSD • Darwin, BSD4.4 + Mach Microkernel, Apple • More...
Unix 簡介 (續) • 可以讓「多個」使用者、「同時」執行「多個」程式的! • 超級使用者:root • 群組 groups
Unix 簡介 (續) • An unix account is for • an individual person to login • e.g. user001 • an entity to execute program or own files • e.g. shutdown,sys, bin, ... • Entries in /etc/passwd • name:pass:UID:GID:GECOS:homedir
Opensource自由軟體 • 傳教士:Eric S. Raymond • http://www.tuxedo.org/~esr/ • Opensource一詞的發明人 • The Cathedral & The Bazaar • The Art of UNIX Programming • A Brief History of Hackerdom • Freedom (自由)/Open(開放) • Source Code必須公開 • 任何人都可以自由傳播、下載、使用或改寫
GNU計畫 • 1983 年 Richard Stallman (自由軟體業的精神教父) http://www.stallman.org • 開始於1984年,旨在發展一個 類-Unix 且為 自由軟體 的完整作業系統 • 軟體應該是人類的共同智能,屬於公共財! • 我要做出一系列亂棒的免費軟體,好到讓廠家們只要不用他就會倒店的程度。 • http://www.gnu.org/
自由軟體基金會 • GNU計畫的贊助單位 • FSF (Free Software Foundation) 提倡免費軟體 • FSF自由使用權的三個意義: • 可自由複製GNU的軟體 • 可自由修改原始碼 • 可自由散佈修改過的原始碼,但不得收取任何版權費用
GNU Genel Public License (GPL) • 大眾公有版權/通用公共版權 • 官方翻譯:自由文件許可證 • Copyleft • http://www.linux.org.tw/CLDP/GNU/licences/fdl.zh.html • http://www.gnu.org/copyleft/gpl.html
Linux 簡介 • 1991 年 8 月 芬蘭的一個學生在comp.os.minix 新聞組貼上了以下這段話: 「你好,所有使用 minix 的人 -我正在為 386 ( 486 ) AT 做一個免費的操作系統 ( 只是為了愛好 ),不會像 GNU 那樣很大很專業。」
Linus 的郵件原文 From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)Newsgroups: comp.os.minixSubject: What would you like to see most in minix?Summary: small poll for my new operating systemMessage-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>Date: 25 Aug 91 20:57:08 GMTOrganization: University of HelsinkiHello everybody out there using minix -I'm doing a (free) operating system (just a hobby, won't be big andprofessional like gnu) for 386(486) AT clones. This has been brewingsince april, and is starting to get ready. I'd like any feedback onthings people like/dislike in minix, as my OS resembles it somewhat(same physical layout of the file-system (due to practical reasons)among other things).I've currently ported bash(1.08) and gcc(1.40), and things seem to work.This implies that I'll get something practical within a few months, andI'd like to know what features most people would want. Any suggestionsare welcome, but I won't promise I'll implement them :-)Linus (torvalds@kruuna.helsinki.fi)PS. Yes - it's free of any minix code, and it has a multi-threaded fs.It is NOT protable (uses 386 task switching etc), and it probably neverwill support anything other than AT-harddisks, as that's all I have :-(.
A small understatement ! • “just a hobby, won’t be big and professional like gnu “– Linus, 1991 • “HP Records More Than $2.5 Billion in Linux-based Revenue in 2003”– http://www.hp.com/hpinfo/newsroom/press/2004/040115a.html
History of Linux • A more complete history is available here :http://netfiles.uiuc.edu/rhasan/linux • “Just for Fun : The Story of an Accidental Revolutionary”, Linus Torvalds and David Diamond.
Linux version numbers • Each linux kernel version is characterised by three numbers: • Major Version . Minor Version . Release Numbere.g. 2 . 6 . 2 • The minor version number denotes whether the kernel is a stable release or a development release. • Even = Stable ( e.g. 2.6.2 ) • Odd = Development ( e.g. 2.5.102)
What is linux? • Clone of Unix • Aims to be POSIX and Unix specification compliant. • True Multitasking • Virtual Memory • Shared Libraries • Shared copy-on-write executables • Proper memory management • TCP/IP networking ... and a few other things
What is linux? (cont.) • Linux runs on (at least), the following architectures :• 32-bit x86-based • Compaq Alpha AXP• Sun SPARC • Sun UltraSPARC• Motorola 68000 • PowerPC• PowerPC64 • ARM • Hitachi • SuperH • IBM S/390 • MIPS• HP PA-RISC • Intel IA-64 • DEC VAX • AMD x86-64• CRIS
What is linux? (cont.) • Written mainly in C • Some Assembler • 240 MBytes of source code and documentation • 1,000,581 lines in .h files • 4,196,191 lines in .c files
Linux 簡介 (續) • Linux 是一套免費的32*位元多人多工 Unix-like 作業系統,同時相容於 System V 與 BSD 並且符合POSIX標準。 • It's GPLed! • Ported to other platforms: i386, IA64, DEC's Alpha, Sun SPARC, PowerPC, VAX, SGI MIPS etc.
Linux 簡介 (續) • 人類進化演進的過程 • 為求生存 • 為求社會地位 • 為娛樂,Just for fun! • 全球性的團隊遊戲 (for developer)
Linux 簡介 (續) • Totaly Free! • Opensource • Cross platform • 多人多工 • 具網路功能 • 上千種 GNU 軟體 • 可與其他作業系統並存
Linux 簡介 (續) • Developers worldwide • Opensource, thounds of eyeballs • Community support • Vendors support • IBM • Redhat • Mandrake
Linux 簡介 (續) • Linux 是 kernel! • A distribution = Linux kernel + software packages • Linux kernel + 基本的 libc utilities + X Window system • 最重要的工具集:GNU tools! • 嚴格來講、叫做 GNU/Linux
GNU與Linux • GNU • 仍自行發展 Hurd Kernel • 開發許多以GPL發行的應用程式與工具程式 • Linux(Linus’s Unix) • 由網路上熱心的朋友一起發展Linux Kernel • 採用GNU發展的許多應用程式與工具程式 • 應該稱作GNU/Linux
Linux品牌 • RedHat Linux • SuSE Linux • Mandrake Linux • Caldera Linux • Turbolinux • Debian GNU/Linux • Gentoo Linux • Linpus Linux
Linux Kernel 現況與認證 • Kerenl 版本 http://www.kernel.org • 發展版本-2.5.70 • 穩定版本-2.4.20 • Linux認證 • RedHat RHCE http://www.redhat.com/ • LPI Level one/two/three http://www.lpi.org
Linux 開機流程 • BIOS 嘗試在開機磁碟機的第 0 磁區、第 0 磁柱載入可供開機的磁區開機 • 開機載入程式 (boot loader ,如 LILO或Grub)的程式碼 • 找出 kernel 所在位置,接著載入並執行它以啟動開機程序 • 一旦 kernel 載入完畢,一些基本設備也完成初始化 (initialization) • 嘗試從某個設備載入以及掛上 (mount) root filesystem 一旦 root filesystem 被載入並掛上,會看到一行訊息像: VFS: Mounted root (ext3 filesystem) readonly
Linux 開機流程 • 此時系統會在 root filesystem 上找到 init 程式 ( 在 /bin or /sbin) 並執行 init 讀取它的組態設定檔 (configuration file) /etc/inittab ,找出檔中標明 sysinit 的一行,並執行被指名的script。這個 sysinit script 通常類似 /etc/rc 或 /etc/init.d/boot 這兩個檔。這個 script 是一組建立基本系統服務的 shell 指令,諸如: • 對所有磁碟執行 fsck • 載入必備的核心模組 (modules) • 啟動 swapping • 進行網路初始化 • 將指定在 fstab 內的磁碟掛上
Linux 開機流程 • 當 sysinit script 結束後,控制權回到 init 上,接著進入預設的runlevel • 預設的 runlevel 以 initdefault 這個關鍵字被指定在 /etc/inittab 內
runlevel 說明 0 – 關機 halt (不要在 initdefault 設定這個) 1 – 單人模式 Single user mode 2 – 多人模式未含網路功能 Multiuser, without NFS (與 runlevel 3 相同, 用在沒有網路環境下) 3 – 完整多人使用者模式 Full multiuser mode 4 – 未使用 unused 5 – xwindow 模式 X11 6 – 重開機 reboot (不要在 initdefault 設定這個)
man 男人? • 線上查詢 man page # man ls # man 1 ls # info ls • /etc/man.conf • whatis filename • 不管,我也要 woman 啦! 簡易耍寶版 • 用別名 alias • $alias woman=man • 以後就可以用 `woman ls' 了!
vi • 文書處理器 vi • 管理員至少一定要會一種編輯器 • vi 的使用: • 一般模式:移動、複製、刪除、貼上 • 編輯模式:插入與取代文件 • 指令列模式:搜尋、自動取代、檔案存取等
vi help • h,j,k,l 移動 • yy 複製 • dd 刪除 • p 貼上 • o,i,a 插入 • R,r 取代 • u 回復 • / 搜尋 • :%s/x/y/g 自動取代 • :w 寫入 • :q 離開 • :wq! 寫入強制離開
Linux 檔案 # touch test # ls –al test
Linux 檔案種類 • 正規檔案( regular file ) • 第一個屬性為 [ - ] • 純文字檔(ascii) • 二進位檔(binary) • 目錄 (directory): • 第一個屬性為 [ d ] • 連結檔 (link): • 第一個屬性為 [ l ] • 設備檔 (device): • 區塊 (block) 設備檔,第一個屬性為 [ b ]; • 字元 (character) 設備檔,第一個屬性為 [ c ]。
更改 Linux 檔案屬性指令 u g o a owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others = --- = 0+0+0 = 0 r=4,w=2,x=1 # chmod 770 test +(加入) -(除去) =(設定) r w x 檔案或目錄 chmod
更改 Linux 檔案擁有者指令 語法: chown [ -R ] 帳號名稱 檔案或目錄 chown [ -R ] 帳號名稱:群組名稱 檔案或目錄 範例: [root@test root]# chown games test [root@test root]# ls -l test drw-r--r-- 1 games root 0 Jun 20 14:36 test [root@test root]# chown –R root:root tmp
更改 Linux 檔案所屬群組 語法: chgrp 群組名稱檔案或目錄 範例: [root@test root]# chgrp users test [root@test root]# ls -l drw-r--r-- 1 root users 1 Jun 20 14:36 test
Linux 目錄結構 • /bin:常用系統程式目錄 • /boot:開機設定檔,也是預設擺放核心 vmlinuz 的地方 • /dev:擺放所有系統裝置檔案的目錄 • /etc:幾乎系統的所有設定檔案均在此,尤其 passwd, shadow • /etc/rc.d/init.d:系統開機的時候載入服務的 scripts 的擺放地點 • /home:系統使用者的家目錄
Linux 目錄結構 • /lib:Linux 執行或編譯程式函式庫目錄 • /mnt:軟碟與光碟接預設掛載點的地方 • /proc:系統核心與執行程序的一些資訊 • /root:系統管理員的家目錄 • /usr/bin, /bin:一般執行檔擺放的地方 • /usr/sbin, /sbin:系統管理員常用指令集 • /var:擺放系統記錄檔案的地方 • /lost+fount:擺放系統不正常產生錯誤時遺失的片段
Linux 管理工具介紹 • 檔案與目錄管理 • 磁碟與硬體管理 • 程序與資源管理 • RPM的管理 • 帳號與身份管理
檔案與目錄管理 • 目錄與路徑 • 相對路徑與絕對路徑 . 代表此層目錄 .. 代表上層目錄 ~ 代表自己的家目錄 ~user 代表到 user 這個人的家目錄