Chủ Nhật, 29 tháng 4, 2012

Thứ Bảy, 21 tháng 4, 2012

Gia phả dòng họ Linux


Trong cái hình dưới thì mọi người có thể thấy có 3 nhánh chính là Debian , Slackware và Redhat.
Những OS Linux biết được thì chắc ko quá 20 cái , quá ít so với chỗ này :D
Hơn nữa số lượng thống kê dưới này chắc chắn vẫn chưa đủ hết , có những biến thể khác nhau của Linux được các công ty như GOOGLE , FACEBOOK ... thay đổi để phù hợp với yêu cầu của họ ( chủ yếu là những con server)



Có thể vài người thắc mắc sao ko thấy BSD ở đây , câu trả lời là BSD được coi là Unix-based , Linux được coi là Unix-liked. Vấn đề này sẽ được làm rõ ở 1 cái entry khác :D

Tiến trình khởi động của LINUX


Tiến trình khởi động Linux

Khởi động hệ thống : Trên một máy tính , Linux khởi động bắt đầu trong BIOS từ địa chỉ 0xFFFF0. Bước đầu tiên của BIOS là POST ( power-on self test ) để kiểm tra phần cứng , liệt kê danh sách các thiết bị và khởi động chúng . Sau đó BIOS tìm kiếm các thiết bị khởi động trong CMOS như đĩa mềm ,CD-ROM, USB hay phân vùng MBR ( Master Boot Record ) trong đĩa cứng . Thường thì hệ thống bắt đầu khởi động từ đĩa cứng có MBR . MBR là 1 sector 512 byte đặt tại sector 1 cylinder 0 head 0. Sau khi MBR được nạp , BIOS sẽ chuyển quyền điều khiển cho đoạn mã trong MBR
















Giai đoạn 1 : MBR là 1 image 512 byte gồm 446 byte khởi động sơ cấp , 64 byte phân hoạch (partition table) và 2 byte magic number . Nhiêm vụ của MBR là tìm và nạp trình khởi động thứ cấp bằng cách xác định phân vùng có cờ Active trong bảng , rồi đọc bootsector từ phân vùng đó 



Giai đoạn 2 : BOOTLOADER tiến hành nạp kernel và khởi động RAM disk (nếu cần) . BOOTLOADER trong linux thường là LILO hoặc GRUB. Nhưng hiện giờ có lẽ chỉ còn xài GRUB. File cấu hình của GRUB là /etc/grub.conf ( Trong Windows thì bootloader có tên là NTLDR ). Trình khởi động đọc file cấu hình và hiển thị danh sách kernel. Sau khi lựa chọn sẽ nạp kernel image và initrd vào bộ nhớ . Khi kernel sẵn sàng , giai đoạn 2 sẽ triệu gọi kernel . Kernel nạp vào bộ nhớ , quyền điều khiển sẽ trao cho kernel. Kernel có 2 dạng nén là zImage hoặc bzImage ( thường là bzImage). 
+ Phần đầu kernel chứa thủ tục thiết lập phần cứng và giải nén kernel , sau đó triệu gọi kernel và quá trình khởi động kernel bắt đầu .
+ Kernel sẽ mount hệ thống file và file hệ thống . Kernel sẽ khởi động tiến trình init nên init có process id là 1 ( init là cha của các tiến trình khác trong linux )
Đến đây có thể coi như tiến trình khởi động linux đã hoàn thành .

Vậy có thể tóm tắt lại là :




P/s : GRUB hay LILO đều có thể khởi động cho cả Linux và Windows, nhưng ngược lại các bootloader trên Windows như (NTLDR, BOOTMGR) thì không hỗ trợ khởi động cho các hệ điều hành Linux. Ví dụ hình sau minh họa cho máy tính cài 2 HDH là Windows và Linux

Khái niệm phân vùng đĩa cứng trong Linux

1. Lý thuyết tổng quát

Quá trình khởi động: khi bật công tắc (Power), BIOS sẽ làm công việc đầu tiên là “chạy đôn chạy đáo” kiểm tra những phần cứng cơ bản (gồm ổ đĩa cứng, ổ đĩa mềm, bàn phím…) đã được nối vào máy tính. Những phần cứng này sẽ lần lượt được nạp driver (trình điều khiển – BIOS đã có sẵn driver rồi) để có thể sử dụng được ngay khi khởi động xong, đồng thời BIOS cũng đi tìm một đoạn chương trình bé xíu được đặt tại phần đầu của đĩa mềm (Boot sector), đĩa cứng (MBR – Master Boot Record) để “đùn đẩy trách nhiệm” khởi động tiếp
Riêng đối với đĩa cứng, ngoài MBR còn có thêm Boot sector nữa, Boot Sector này “tạm trú” ngay đầu của mỗi phân vùng Primary (sẽ nói sau) và Boot Sector của Primary đầu tiên sẽ nằm sau MBR. Tại đây, ta không nói đến đĩa mềm vì quá đơn giản, chỉ cần nạp xong Boot Sector là OK. Đĩa cứng thì phức tạp hơn, MBR không nạp ngay hệ điều hành mà còn “bận” phải xác định xem trong đĩa cứng hiện có bao nhiêu phân vùng và phân vùng nào sẽ được ưu tiên khởi động. Mỗi phân vùng Primary sẽ “cầm” một cái cờ tên là Active, trong một thời điểm khởi động chỉ có một Primary được phất cờ thôi, và khi MBR nhận ra được “em” nào phất thì tức khắc “tống” ngay tiến trình khởi động sang cho Boot Sector của Primary đó làm tiếp. Lúc này, Boot Sector mới tìm những tập tin khởi động của hệ điều hành (nếu có) để “chuyển giao công đoạn” và chấm dứt khởi động, phận ai người nấy lo mà.


Số lượng phân vùng: đối với mỗi ổ đĩa cứng, có hai loại phân vùng là: Primary (phân vùng chính) và Extended (phân vùng mở rộng). Primary là phân vùng có khả năng khởi động (đã nói ở trên đó). Về mặt vật lý, ổ đĩa cứng chỉ có thể chia làm bốn phân vùng, tức là chỉ cài được tối đa bốn hệ điều hành trên một đĩa cứng mà thôi. Tuy nhiên, nếu không có “ham muốn” dùng nhiều hệ điều hành mà chỉ có “ý định” chia nhiều ổ đĩa thì có thể dùng phân vùng Extended, phân vùng này cho phép chia bên trong nó nhiều phân vùng con gọi là Logical.



2. Lý thuyết của DOS/Windows

Những đề cập bên dưới chỉ tập trung vào cấu trúc Basic Disk (tức là những gì ta thấy, hiểu và cảm nhận từ trước đến giờ trên nền DOS/Windows), còn Dynamic Disk của cơ chế RAID thì… miễn bàn.
 Tên phân vùng: Hệ điều hành DOS/ Windows gọi phân vùng “phất” cờ Active là C:, các ký tự tiếp theo (D:, E:, F:…) lần lượt được gán cho các phân vùng Logical của phân vùng Extended đầu tiên, khi hết Extended đầu tiên sẽ chuyển qua Extended thứ hai (nếu có), và khi hết Extended mới “ân huệ” cho các phân vùng Primary tiếp theo, dù vị trí có nằm trước Extended đi chăng nữa.

Ẩn phân vùng Primary: DOS và Windows 9x không cho phép hai phân vùng Primary “chường mặt” ra đồng thời, tuy nhiên nếu cố “ép” thì vẫn được. Vì thế, nếu đã đặt Active cho một Primary thì các Primary khác sẽ tự động… “mất tích”.

3. Lý thuyết của Linux

Tên phân vùng: Hạt nhân Linux/ Unix xây dựng cơ chế truy xuất tất cả các loại đĩa và thiết bị đều ở dạng tập tin. “Chú chim cánh cụt” đặt tên cho bé ổ đĩa mềm là fd (floppy disk), ổ đĩa mềm thứ nhất là fd0, ổ đĩa mềm thứ hai là fd1 (hết rồi, chỉ có tối đa hai ổ đĩa mềm thôi). Tiếp đến là ổ đĩa cứng, nếu là ổ đĩa IDE thì có tên hd (hard disk), còn nếu là ổ đĩa SCSI thì có tên là sd (SCSI disk). Bây giờ bàn về ổ đĩa cứng IDE thôi nhé (ổ SCSI cũng tương tự). Ổ đĩa cứng vật lý thứ nhất “làm khai sinh” với tên hda, thứ hai là hdb, thứ ba là hdc, nếu còn nữa thì tiếp tục. Trên từng ổ đĩa cứng, mỗi phân vùng cũng có tên riêng, điển hình là bốn phân vùng “sếp” (Primary và Extended) chiếm lấy các tên từ hda1 đến hda4 (hdgìgì không nhất thiết chỉ có a đâu nhé, phải linh hoạt chứ, chỉ là ví dụ thôi). Các số từ 5 trở lên (như hda5, hda6…) được đặt cho các phân vùng Logical bên trong phân vùng Extended. Điều này khác với DOS/ Windows, vì trên DOS/Windows thì Extended không có tên, nhưng trên Linux thì Extended có tên hẳn hoi. Dù bạn không chia đủ 4 phân vùng “sếp” thì các “bé” Logical cũng vẫn đi từ 5 trở lên, không “bàn cãi trả giá” gì hết. 

Phân vùng tráo đổi SWAP: Nếu Windows sử dụng tập tin tráo đổi SWAP để lưu tạm bộ nhớ thì Linux dùng ngay cả một phân vùng SWAP hẳn hoi để làm việc này (quá sang!), phân vùng SWAP phải nằm trên Extended tức là Logical í, và phải có kích thước gấp hai lần kích thước bộ nhớ RAM hiện có trên máy. Tuy vậy, đối với những máy có dung lượng bộ nhớ RAM từ 32MB trở lên thì Linux khuyến khích đặt kích thước phân vùng SWAP bằng với dung lượng RAM. Dù thế, bạn vẫn được toàn quyền đặt kích thước phân vùng SWAP mà.

Giải phân mảnh (Defragment): Khi dùng Windows, bạn phải thường xuyên làm công việc “dồn đĩa” giải phân mảnh để tăng tốc hệ thống. Thế nhưng ở Linux, ta không cần vì kiểu phân vùng EXT2 (hoặc EXT3) đã có đoạn chương trình tự động chống phân mảnh trong khi làm việc. Đây là một đặc tính rất hay của Linux, nhưng bạn phải trả cho Linux với giá 10% dung lượng phân vùng. Thật ra, đây là cái giá không cao, và bạn hưởng được tính ổn định và hiệu năng tối ưu.

Trần Anh Vũ (Báo e-CHÍP số 45, 18/11/2003)

Ghi chú : 
- Chỉ có thể tạo được 1 phân vùng extended, tối đa trong đó có 24 ( hay 27 ) phân vùng logical
- Ngày xưa máy tính còn yếu thì phân vùng swap trong linux được khuyến cáo đặt gấp đôi RAM , nhưng bây giờ thì chỉ cần đặt bằng hoặc 1 nửa

About me

Xin chào và cảm ơn các bạn đã ghé vào cái blog này :D
Tên của tôi thì bạn có thể nhìn sang bên phải.

Đã lâu rồi không còn viết blog , kể từ cái 360 bị đóng . Chuyển sang facebook thì toàn wall , chứ còn mấy ai viết entry nữa ( cái note thì coi như vứt , hiếm lắm mới thấy vài người viết )
Tại blog này tôi sẽ chia sẻ những suy nghĩ và kiến thức về tất cả mọi thứ mà tôi quan tâm : Cuộc sống , Networking , Linux và có thể là M$ :)). Có thể đó là những thứ tự viết hoặc những thứ được đọc , muốn lưu lại.
Tôi là một người mà nếu nhìn từ bên ngoài vào có vẻ rất tẻ nhạt :) , nhưng đó chỉ là bề nổi của tảng băng mà thôi :D .

Chúc các bạn có thể tìm được những thứ hay ho trong cái blog này :D