Bạn PHẢI đọc chuỗi bài viết này
Sẽ rất bất hạnh nếu bạn — người sẽ trở thành nhà phát triển phần mềm trong tương lai, mà lại không biết đến sự tồn tại của Linux, hay vẫn cho rằng nó là thứ biết thì rất tốt. Bởi chẳng chóng thì chầy bạn sẽ nhận ra rằng nó nằm trong nhóm những thứ “không biết thì chết”.
Linux có ý nghĩa như thế nào?
Trả lời cho câu hỏi này, bạn hãy nghĩ, nếu bạn là kỹ sư sản xuất ô tô, vậy đường xá có ý nghĩa như thế nào với bạn?
Câu trả lời là đường xá hầu như là thứ làm cho công việc của bạn trở nên có ý nghĩa.
Cũng tương tự như việc những mẫu xe của bạn được thiết kế để chạy trên đường, bạn phải biết đặc điểm, luật chơi, các loại đường xá khác nhau và những giới hạn của chúng, gần như luôn luôn khi bạn sản xuất một chiếc xe, bạn tưởng tượng ra nó sẽ chạy trên con đường bạn nghĩ đến.
Đường xá tạo nên ý nghĩa cho ngành xe hơi, nghành vận tải, nghành dịch vụ, hay nói trắng ra là hầu như toàn bộ nghành công nghiệp. Điều đó cũng tương tự với Linux, với vai trò là bá chủ trong phân khúc hệ điều hành máy chủ, Linux là nền tảng hoạt động của hầu hết các dịch vụ. Hầu như không có điều gì bạn làm trên internet mà không đi qua một máy chủ Linux nào đấy.
Thế mà bạn — người sớm thôi sẽ (hay đang?) thiết kế và sản xuất các ứng dụng web — lại không có ý niệm gì về nó.
Chuỗi bài viết này có gì
Bạn sẽ không để chuyện đó tiếp diễn, và sẽ ngay lặp tức tìm cách cải thiện một cách nghiêm túc hiểu biết và kỹ năng của mình trong lĩnh vực Linux. Kế hoạch sẽ bắt đầu bằng việc tạo ra một danh sách các keywords quan trọng nhất, và bài viết này sẽ giúp bạn bắt đầu. Cụ thể, nó giúp bạn:
- Nâng cấp hiểu biết về khái niệm Linux
- Không gọi Ubuntu là hệ điều hành nữa (nâng cấp hiểu biết về khái niệm “bản phân phối”)
- Biết apt là gì (nâng cấp hiểu biết về khái niệm trình quản lý gói trong Linux)
- Có khả năng chọn một cách có chủ ý bản phân phối Linux phù hợp để sử dụng
- Thấu hiểu Hệ Vỏ của Linux
- Thấu hiểu cách sử dụng các command-line của Linux
Trước tiên, trong phần một này, chúng ta sẽ tìm hiểu những khái niệm tổng quan nhất.
Linux là gì?
Một nhân hệ điều hành
Một cách chính xác, “Linux là một phần mềm nhân hệ điều hành giống Unix được phân phối tự do.”
Phần mềm, nghĩa rằng Linux là một chương trình máy tính, nó có khả năng hướng dẫn máy tính làm việc.
Nhân hệ điều hành (kernel) ngụ ý rằng bản thân Linux không phải là một hệ điều hành hoàn chỉnh. Nó đóng vai trò làm lớp phần mềm trung tâm trong hệ điều hành, quản lý các tài nguyên của hệ thống, liên lạc các phần mềm ứng dụng với phần cứng.
Giống Unix, tính chất này ám chỉ rằng Linux hoạt động “gần như y hệt” với một nhân hệ điều hành Unix. Unix là một hệ điều hành quan trọng trong nền công nghiệp phần mềm, nhiều đặc tả của Unix đã trở thành tiêu chuẩn ngành. Có nhiều nhân hệ hiều hành hành xử như một nhân Unix nhưng trong số đó, Linux là phần mềm nổi tiếng và phổ biến hơn cả.
Việc “giống Unix” là rất có ý nghĩa. Unix mang trong nó một triết lý phát triển hệ điều hành, mang tên là “thiết kế module”, mà trong đó hệ điều hành không gì khác hơn là một tập hợp các công cụ cô lập mà mỗi cái lại đảm nhiệm một tính năng giới hạn, ít, nhưng tốt hết mức có thể. Chúng ngầm định với nhau một hệ thống cấu trúc file thống nhất để hoạt động trên đó, và các công cụ Hệ Vỏ (Shell System) có thể kết hợp các công cụ này lại để thực hiện những nhiệm vụ phức tạp. Bản chất module này khiến cho Unix và hầu hết các Unix-like khỏe một cách tự nhiên.
Phân phối tự do, thể hiện bởi giấy phép GNU General Public License (GNU GPL or GPL), nghĩa là mọi người dùng cuối đều có quyền tự do sử dụng, nghiên cứu, chia sẻ, và chỉnh sửa phần mềm Linux. Đây gần như là quyền tự do triệt để nhất trong số các giấp phép phần mềm tự do mã nguồn mở.
Một bản phân phối
Trên thực tế, trong tình huống giao tiếp thường nhật, Linux được sử dụng với ý nghĩa “Là một hệ điều hành giống Unix được phân phối tự do, bao gồm một nhân, các công cụ hệ thống, các chương trình và một giao diện người dùng hoàn chỉnh.”
Định nghĩa này nói lên một thực tế là để có thể sử dụng được, nhân Linux cần được kết hợp với những phần mềm hệ thống, các chương trình ứng dụng, và một giao diện để tương tác người-máy (cho dù nó là command-line interface hay graphic interface).
Do việc sử dụng song song cả hai khái niệm có thể gây rối cuộc giao tiếp, nên trong những trường hợp cần rạch ròi (đặcbiệt là khi giao tiếp giữa những người hiểu chuyện với nhau), người ta dùng Linux với định nghĩa đầu tiên, và để ám chỉ một hệ điều hành hoàn chỉnh, họ dùng thuật ngữ bản phân phối (distribution, hay distro). Một ẩn dụ cho việc nhân Linux bám vào chúng và được phát tán đi khắp nơi.
Lịch sử
Linux được lấy tên từ tác giả của nó, ngài Linus Torvalds. Ông là người Phần Lan và tự đọc tên mình là Li-nú-x, giống như cách phần lớn người Việt Nam đọc. Ông có niềm đam mê mãnh liệt với phần mềm tự do mã nguồn mở, trong số những sản phẩm của ông, Linux và Git là hai phần mềm rất phổ biến và có ảnh hưởng mạnh mẽ trong việc định hình nghành công nghiệp phần mềm hiện đại.
Linus viết nhân Linux khi còn là sinh viên trường đại học Helsinki, như một sản phẩm để vọc (điều được viết trong cuốn sách của ông Just For Fun), với mục tiêu tạo ra một nhân hệ điều hành giống Unix. Và sau đó mời người khác tham gia cùng. Qua thời gian, cộng đồng các nhà phát triển đã phát tán Linux từ một phòng trọ sinh viên trở thành nhân hệ điều hành được sử dụng rộng rãi nhất thế giới.
Cây kế thừa của các bản phân phối
Với kiến trúc module, các bản phân phối Linux rất dễ tùy biến. Bổ sung tính năng bằng cách bổ sung các module, thay thế module này bằng một module khác có tính năng tương tự, hay sử dụng một phiên bản module cũ hơn/mới hơn để cân bằng giữa tối tân và ổn định. Điều đó tạo nên sự đa dạng của các bản phân phối Linux, có vô số các bản phân phối khác nhau, mỗi bản phân phối lại mang trong mình một triết lý thiết kế riêng, với những điểm mạnh riêng. Trong số đó có những cái tên rất nổi tiếng như Ubuntu, Debian, Fedora, Mint, Android, ChromeOS…
Tùy biến một thiết kế có sẵn thành thiết kể mới có sẵn có ưu điểm là tiết kiệm thời gian, và đặc biệt là để kế thừa những điểm mạnh của bản thiết kế trước. Những điểm mạnh này có thể là:
- Trình quản lý gói mạnh
- Tập hợp hợp lý của các công cụ hệ thống
- Một giao diện người dùng thân thiện
- Một tập hợp các phần mềm được thiết kế rất tốt cho một mục đích đặc thù nào đó, ví dụ: để bản phân phối được nhỏ, hay phục vụ giáo dục, hay thiết kế đồ họa, hay bảo mật/tấn công mạng…
Nếu biểu diễn sự kế thừa của các bản phân phối, chúng ta sẽ được một sơ đồ hình cây như hình trên. Chúng ta sẽ đi vào chi tiết những nhánh chính và những bản phân phối nổi tiếng trong cây kế thừa vào bài viết tiếp theo.
Hẹn gặp lại các bạn!
Author: Nguyễn Bình Sơn