Tại sao chúng ta cần phải gắn kết với Linux?


67

Tôi hiểu những gì gắn kết trong Linux và tôi hiểu các tập tin thiết bị. Tuy nhiên tôi không hiểu TẠI SAO chúng ta cần phải gắn kết.

Ví dụ, như được giải thích trong câu trả lời được chấp nhận của câu hỏi này , sử dụng lệnh này:

mount /dev/cdrom /media/cdrom

chúng tôi đang gắn thiết bị CDROM /media/cdromvà cuối cùng có thể truy cập các tệp của CDROM bằng lệnh sau

ls /media/cdrom

trong đó sẽ liệt kê nội dung của CDROM.

Tại sao không bỏ qua việc gắn hoàn toàn, và làm như sau?

ls /dev/cdrom

Và có nội dung của CDROM được liệt kê. Tôi mong đợi một trong những câu trả lời là: " Đây là cách Linux được thiết kế ". Nhưng nếu vậy thì tại sao nó lại được thiết kế theo cách đó? Tại sao không truy cập /dev/cdromtrực tiếp vào thư mục? Mục đích thực sự của việc gắn kết là gì?


2
Bạn cũng có thể quan tâm đến Rắc rối với việc hiểu khái niệm lắp đặt
PM 2Ring

23
Lưu ý khá nhiều tất cả các hệ điều hành "gắn kết". Nó chỉ minh bạch trong hầu hết các trường hợp. Khi trong Windows, bạn chọn "gỡ bỏ an toàn" cho một ổ đĩa, bạn thực sự đang thực hiện, sau khi nó được hệ thống tự động gắn vào. Linux chỉ không cách ly người dùng khỏi quy trình, do đó, bạn có thể 'tùy chỉnh' nó nhiều hơn - giả sử, phân vùng umsdos không khác biệt với bất kỳ cách hiển thị nào từ vfat, nhưng nếu bạn sử dụng mount -t umsdosđể gắn kết nó, bạn có tất cả các quyền Linux, quyền sở hữu, các tệp đặc biệt, fifos, v.v ... Nếu bạn mount -t vfathoạt động như một phân vùng Windows đơn giản.
SF.


7
"Tôi hiểu những gì gắn kết trong linux và tôi hiểu các tập tin thiết bị." Rõ ràng là không;)
Các cuộc đua nhẹ nhàng trong quỹ đạo

5
Why not access the /dev/cdrom directory directly?Bởi vì nó không phải là một thư mục.
Brandon

Câu trả lời:


67

Một lý do là truy cập cấp khối thấp hơn một chút so với lskhả năng làm việc với. /dev/cdromhoặc dev/sda1có thể là ổ đĩa CD ROM và phân vùng 1 của ổ cứng, nhưng chúng không triển khai ISO 9660 / ext4 - chúng chỉ là con trỏ RAW cho các thiết bị được gọi là Tệp thiết bị .

Một trong những điều mà mount xác định là CÁCH sử dụng quyền truy cập thô đó - mô-đun logic / trình điều khiển / kernel hệ thống tệp nào sẽ quản lý việc đọc / ghi hoặc dịch ls /mnt/cdromvào các khối nào cần đọc và cách diễn giải nội dung của các khối đó khối thành những thứ như file.txt.

Những lần khác, truy cập cấp thấp này có thể đủ tốt; Tôi vừa đọc và ghi vào các cổng nối tiếp, thiết bị usb, thiết bị đầu cuối tty và các thiết bị tương đối đơn giản khác. Tôi sẽ không bao giờ cố gắng đọc / ghi thủ công từ / dev / sda1 để chỉnh sửa tệp văn bản, vì về cơ bản tôi phải thực hiện lại logic ext4, trong đó có thể bao gồm, trong số những thứ khác: tìm kiếm các tệp inodes, tìm khối lưu trữ, đọc khối đầy đủ, thực hiện thay đổi của tôi, viết các khối đầy đủ, sau đó cập nhật nút (có lẽ) hoặc thay vào đó viết tất cả vào nhật ký - quá khó khăn.

Một cách để thấy điều này cho chính bạn là chỉ để thử nó:

[root@ArchHP dev]# cd /dev/sda1
bash: cd: /dev/sda1: Not a directory

/devlà một thư mục, và bạn có thể cdlstất cả những gì bạn thích. /dev/sda1không phải là một thư mục; đó là một loại tệp đặc biệt, đó là thứ mà kernel cung cấp dưới dạng 'xử lý' cho thiết bị đó.

Xem mục wikipedia trên Tệp thiết bị để biết cách xử lý chuyên sâu hơn.


4
Tôi đang xem qua một số chi tiết, bởi vì tôi nghĩ điều tồi tệ sẽ xảy ra nếu bạn bắt đầu ghi vào bất kỳ dữ liệu nào được lưu trữ trên / dev / sda1, và do đó tôi cho rằng có một số biện pháp phòng ngừa hoặc có lẽ là trừu tượng sẽ ngăn bạn ghi đè lên mọi thứ. Nhưng để tóm tắt, nếu bạn biết chính xác cách thức và nơi ghi vào đĩa, bạn có thể thực hiện thủ công thông qua /dev/sda1. Lưu ý một số công cụ DO tương tác trực tiếp với các đĩa thô, chẳng hạn như swapon/swapoffdd.
Ehryk

4
Chỉ cần thêm một chút nữa, việc gắn kết khởi tạo hệ thống tệp và do đó cũng kích hoạt toàn bộ lớp xử lý tự động các hoạt động đầu vào / đầu ra trong suốt cho người dùng (chẳng hạn như lưu trữ tệp trong RAM, xếp hàng các hoạt động, giữ trạng thái của các tệp đang mở v.v.) Đây là lý do tại sao bạn cũng phải ngắt kết nối hệ thống tập tin một cách chính xác để tránh tham nhũng (hoặc ít nhất là đồng bộ hóa nó). Gắn kết có mặt trên tất cả các nền tảng thường được sử dụng, không chỉ linux. Nếu việc gắn kết được tự động xử lý bởi môi trường máy tính để bàn (KDE hoặc gnome), thì nó cũng bị ẩn như trong các cửa sổ MS.
orion

6
@Ehryk (3 bình luận trở lên) biện pháp phòng ngừa duy nhất trong một hệ thống Linux điển hình là các quyền của hệ thống tệp - nói cách khác, bạn phải sử dụng tài khoản root để ghi vào tệp thiết bị. Nếu bạn làm thế, bạn có thể cat >/dev/sda1làm nội dung trái tim của bạn và Linux sẽ không ngăn bạn. (Không cần phải nói, làm như vậy sẽ làm hỏng hoàn toàn hệ thống tập tin.)
David Z

5
@psusi Bạn không thể làm điều đó trên Windows 95, đúng vậy. Nhưng nó đã có mặt (và cũng được ẩn giấu) trên MS DOS và Windows NT. Windows dựa trên NT hiện đại của bạn chắc chắn cho phép bạn gắn kết và ngắt kết nối các phân vùng theo ý muốn (thậm chí vào các thư mục trên các phân vùng khác và thậm chí vào nhiều thư mục cùng một lúc) - nó thường chỉ gắn tất cả các phân vùng không xác định để lái các chữ cái theo mặc định. Bạn cũng có thể truy cập thiết bị mà không cần gắn thiết bị bằng cách sử dụng đường dẫn đầy đủ của nó (rất giống với cách unix), nhưng chỉ khi nó không bị khóa - điều đó tất nhiên là nếu nó hiện đang được gắn.
Luaan

3
@Luaan & psusi Psusi có quyền của nó. Nhưng đối với gần như tất cả các ý định và mục đích, hiệu ứng cho người gọi API Win32 về cơ bản là giống hệt nhau. (Đối với việc tuân thủ Posix thậm chí còn có sự mô phỏng về ngữ nghĩa gắn kết.) Win9x thực sự có khái niệm gắn kết vì nó vẫn chạy trên DOS. Hỗ trợ FAT được tích hợp vào DOS như một trình xử lý riêng có phần giống với cách xử lý kernel NT. Nhưng CDROM và các hệ thống tập tin mạng phải được gắn kết. (Hãy nhớ MSCDEX cho CD. Điều này đã cung cấp trình xử lý hệ thống tập tin ISO / RockRidge và gắn nó vào ký tự ổ đĩa).
Tonny

20

Về cơ bản, và để dễ dàng, hệ điều hành cần biết cách truy cập các tệp trên thiết bị đó.

mount không chỉ "cung cấp cho bạn quyền truy cập vào các tệp", nó còn báo cho HĐH biết hệ thống tệp mà ổ đĩa có, nếu nó chỉ đọc hoặc truy cập đọc / ghi, v.v.

/dev/cdromlà một thiết bị cấp thấp, các chức năng của hệ điều hành sẽ không biết cách truy cập chúng ... hãy tưởng tượng bạn đặt một cdrom có ​​định dạng kỳ lạ vào nó (thậm chí là một cd âm thanh), làm thế nào để lsbiết các tệp nào (nếu có) cd-rom mà không "gắn" nó trước?

Lưu ý rằng điều này xảy ra tự động trong nhiều HĐH (ngay cả Linux trên một số bản phân phối và giao diện đồ họa), nhưng điều đó không có nghĩa là các HĐH khác không "gắn" các ổ đĩa.


8

Cho thống nhất

Hãy tưởng tượng bạn có một số phân vùng trên ổ cứng đầu tiên trong hệ thống của bạn. Ví dụ , /dev/sda2. Sau đó, bạn quyết định rằng ổ đĩa không đủ lớn để bạn mua cái thứ hai và thêm nó vào hệ thống. Đột nhiên, điều đó trở thành /dev/sdavà ổ đĩa hiện tại của bạn trở thành /dev/sdb. Phân vùng của bạn bây giờ là /dev/sdb2.

Sử dụng hệ thống được đề xuất của bạn, bạn sẽ phải thay đổi tất cả các tập lệnh, ứng dụng, cài đặt, v.v. truy cập dữ liệu trên phân vùng cũ của bạn để phản ánh sự thay đổi này trong tên.

Tuy nhiên, việc gắn kết cho phép bạn vẫn sử dụng cùng một điểm gắn kết cho ổ đĩa được đổi tên này. Bạn phải chỉnh sửa /etc/fstabđể nói với hệ thống của bạn rằng (ví dụ) /media/backupbây giờ /dev/sdb2thay vào đó, nhưng đó chỉ là một chỉnh sửa.

Lưu ý rằng các hệ thống hiện đại thậm chí còn dễ dàng hơn. Thay vì tham chiếu thiết bị như /dev/sda2hoặc /dev/sdb2, chúng có UUIDShình tương tự c5845b43-fe98-499a-bf31-4eccae14261bhoặc có thể được gắn nhãn thân thiện hơn như backupcó thể được sử dụng để tham chiếu thiết bị khi lắp. Bằng cách này, tên thiết bị không thay đổi khi thêm một thiết bị mới giúp việc quản trị trở nên đơn giản hơn:

# mount LABEL="backup" /media/backup

Vì sự an toàn

Bằng cách yêu cầu một thiết bị được gắn kết, quản trị viên có thể kiểm soát quyền truy cập vào thiết bị. Thiết bị có thể được gỡ bỏ khi chưa kết nối, nhưng không phải khi sử dụng (trừ khi bạn muốn bị mất dữ liệu). Nếu bạn (là) một người dùng Windows, hãy nhớ biểu tượng nhỏ màu xanh lá cây trong khu vực thông báo cho bạn biết có an toàn khi tháo thẻ USB không? Đó là gắn kết Windows và ngắt kết nối cho bạn. Vì vậy, nguyên tắc không chỉ là một Unix / Linux.


Các Id phổ quát thực sự là UUID, không phải GUID của Microsoft.
Ruslan

@Ruslan - vậy là được! Tôi đã có đầu MS của tôi vào thời điểm đó. Rất cám ơn - Tôi đã thay đổi nó.
garethThe

6

Tôi gọi đó là lý do lịch sử. Không phải các câu trả lời khác là sai, nhưng có thêm một chút về câu chuyện.

So sánh Windows: Windows khởi đầu là một hệ điều hành một người dùng, một người dùng. Máy tính đơn lẻ đó có thể có một ổ đĩa mềm và một ổ cứng, không có kết nối mạng, không có USB, không có gì. (Windows 3.11 có khả năng kết nối mạng riêng; Windows 3.1 thì không .)

Kiểu cài đặt mà Windows ra đời rất đơn giản đến nỗi không cần phải cầu kỳ: Chỉ cần tự động gắn mọi thứ (cả hai thiết bị), không có (có thể) nhiều điều có thể sai.

Ngược lại, Unix được tạo ra để chạy trên các mạng máy chủ có nhiều người dùng ngay từ đầu.

Một trong những quyết định thiết kế của Unix là hệ thống tệp sẽ xuất hiện dưới dạng một thực thể thống nhất duy nhất cho người dùng cuối, cho dù có bao nhiêu máy tính thì các đĩa vật lý được trải đều, bất kể là loại đĩa nào, và cho dù là hàng tá máy tính nào người dùng sẽ truy cập nó từ. Đường dẫn logic đến các tệp của người dùng sẽ giữ nguyên, ngay cả khi vị trí thực của các tệp đó đã thay đổi qua đêm, ví dụ do bảo trì máy chủ.

Họ đã trừu tượng hóa hệ thống tệp logic, đường dẫn đến tệp, từ các thiết bị vật lý lưu trữ các tệp đó. Giả sử máy chủ A thường lưu trữ / nhà, nhưng máy chủ A cần bảo trì: Chỉ cần ngắt kết nối máy chủ A và gắn máy chủ dự phòng B vào / nhà thay vào đó, và không ai khác ngoài quản trị viên sẽ nhận thấy.
(Không giống như quy ước của Windows về việc đặt tên khác nhau cho các thiết bị vật lý khác nhau - C:, D:, v.v. - hoạt động chống lại sự minh bạch mà Unix đang phấn đấu.)

Trong kiểu cài đặt đó, bạn không thể lắp mọi thứ trong tầm nhìn

Trong một mạng lớn, các đĩa và máy tính riêng lẻ liên tục ngừng hoạt động. Quản trị viên cần có khả năng nói những gì được gắn kết ở đâu và khi nào, ví dụ như thực hiện tắt máy có kiểm soát trong khi một máy tính khác đảm nhận việc lưu trữ cùng một tệp.

Vì vậy, đó là lý do tại sao từ một quan điểm lịch sử: Windows và Unix đến từ các nền tảng khác nhau. Bạn có thể gọi nó là một sự khác biệt văn hóa, nếu bạn thích:

  • Unix được sinh ra trong một môi trường mà người quản trị cần kiểm soát việc gắn kết; trong số hàng tá thiết bị lưu trữ trên mạng, quản trị viên phải quyết định những gì được gắn ở đâu và khi nào.
  • Windows được sinh ra trong một môi trường không có quản trị viên và chỉ có hai thiết bị lưu trữ và người dùng có thể sẽ biết liệu tệp của họ nằm trên đĩa mềm hay ổ cứng.
  • (Tất nhiên, Linux được sinh ra như một hệ điều hành máy tính đơn, nhưng nó cũng được thiết kế rõ ràng ngay từ đầu để bắt chước Unix càng gần càng tốt trên máy tính gia đình.)

Gần đây, các hệ điều hành đã tiến gần nhau hơn:

  • Linux đã thêm nhiều máy tính đơn, máy tính đơn người dùng (như tự động hóa); vì nó trở nên thường xuyên được sử dụng trong các cài đặt máy tính đơn.
  • Windows đã bổ sung thêm bảo mật, kết nối mạng, hỗ trợ cho nhiều người dùng, v.v.; khi mạng trở nên phổ biến hơn và Microsoft cũng bắt đầu tạo một hệ điều hành cho các máy chủ.

Nhưng vẫn dễ dàng nói rằng hai là kết quả của những truyền thống khác nhau.


1
Không chỉ vậy đâu. Các thiết bị là bản tóm tắt cấp thấp cho trình điều khiển hệ thống tệp (và có thể cả phần mềm hệ thống khác) để sử dụng. Unix được thiết kế để trở thành một hệ điều hành cho các lập trình viên hệ điều hành. Ví dụ, các lập trình viên của các trình điều khiển hệ thống tập tin. Đó là lý do tại sao những trừu tượng cấp thấp này được tiếp xúc với người dùng.
rebierpost

5

Có một số lợi thế cho sự sắp xếp hiện tại. Chúng có thể được nhóm thành các lợi thế của các tệp đặc biệt và lợi thế của các điểm gắn kết.

Các tập tin đặc biệt là các tập tin đại diện cho các thiết bị. Một trong những ý tưởng mà unix được xây dựng là mọi thứ đều là một tệp. Điều này làm cho nhiều thứ trở nên đơn giản, ví dụ tương tác người dùng chỉ là tệp đọc và ghi trên thiết bị tty, đây là một tệp đặc biệt. tương tự kiểm tra các khối xấu, phân vùng hoặc định dạng đĩa chỉ là hoạt động tệp. Nó không phải là vấn đề nếu đĩa là mfm, ide, scsi, fibchanel, hoặc một cái gì đó khác chỉ là một tập tin.

Nhưng mặt khác, bạn có thể không muốn xử lý toàn bộ đĩa hoặc phân vùng chỉ các tệp và trong nhiều trường hợp, nhiều tệp hơn sẽ phù hợp với một đĩa. Vì vậy, chúng tôi có điểm gắn kết. Một mountpoint cho phép bạn đặt toàn bộ đĩa (hoặc phân vùng) vào một thư mục. Quay trở lại những ngày Slackware của tôi khi một đĩa cứng có kích thước tốt là vài trăm MB, Thông thường sử dụng CD là / usr và đĩa cứng cho /, / usr / local và trao đổi. Hoặc bạn có thể đặt / trên một ổ đĩa và / nhà trên một ổ đĩa khác.

Bây giờ tôi nhận thấy rằng bạn đã đề cập đến việc gắn CD trên / media / cdrom, tiện dụng cho các máy tính chỉ có một ổ đĩa cdrom, nhưng nếu bạn có nhiều hơn một thì sao? bạn nên gắn cái thứ hai ở đâu? hay thứ ba? hay thứ mười lăm? bạn chắc chắn có thể sử dụng / media / cdrom2, v.v. Hoặc bạn có thể gắn kết nó trên / src / samba / resource / windows-install, hoặc / var / www, hoặc bất cứ nơi nào có ý nghĩa để làm như vậy.


Tôi nghĩ OP có nghĩa là tại sao không bỏ qua toàn bộ mount, và chỉ tương tác /dev/cd0, /dev/cd2, /dev/sda1, /dev/sda2trực tiếp - mỗi cái đã có một 'thư mục' được chỉ định.
Ehryk

1
Bạn đã đúng, nhưng bạn có thực sự tìm thấy / dev / sdb9 / share / doc / gói / README một con đường tốt không? thậm chí d: / share / doc / gói / README vẫn tốt hơn, nhưng / usr / share / doc / gói / README có ngữ nghĩa! đó là giá trị của một điểm gắn kết.
hildred

3
Tôi nghi ngờ việc sử dụng ngữ nghĩa xuất hiện sau này là sản phẩm phụ hữu ích của sự cần thiết hoàn toàn của 'puttng một số mã ở giữa hệ thống thư mục và con trỏ tệp thô cho thiết bị', bởi vì sử dụng cd / ls / nano / mọi thứ khác dễ dàng hơn nhiều so với raw write : dd if=/file of=/dev/sda2 bs=4096 skip=382765832 count=84756, huống chi là cập nhật inode / FAT / tạp chí.
Ehryk

(một số masochists linux có thể sẽ yêu thích / dev / sdb9 như các thư mục làm việc, tôi chắc chắn)
Ehryk

2
Máy tính đầu tiên của tôi đã chạy cp / m trên 2 8 "đĩa mềm. Nó hoàn toàn không hỗ trợ các thư mục con. Một thư mục trên mỗi đĩa. Một đường dẫn trông giống như b: name.ext. Ý tưởng về đặt tên ngữ nghĩa đã được thiết lập. Nhân tiện, UNIX đã từ chối ý tưởng về các ký tự ổ đĩa cho các điểm gắn kết. Nhân tiện, @Ehryk, bạn có biết rằng bạn có thể gắn một ổ đĩa vào một thư mục không chỉ trong windows mà còn trên dos không? Tôi đã làm điều đó trên MS-DOS 5 Ngoài ra, khi tôi đang tìm một trang nam tôi không muốn phải nhớ máy tính nào trên ổ đĩa nào ít hơn.
hildred

5

Tiêu đề câu hỏi đặt ra: Tại sao chúng ta cần phải gắn kết với Linux?

Một cách để giải thích câu hỏi này: Tại sao chúng ta cần đưa ra mountcác lệnh rõ ràng để làm cho các hệ thống tệp có sẵn trên Linux?

Câu trả lời: chúng tôi không.

Bạn không cần phải gắn kết các hệ thống tệp một cách rõ ràng, bạn có thể sắp xếp để nó được thực hiện tự động và các bản phân phối Linux đã làm điều này cho hầu hết các thiết bị, giống như Windows và Mac.

Vì vậy, đó có thể không phải là những gì bạn muốn hỏi.

Một cách hiểu thứ hai: Tại sao đôi khi chúng ta cần đưa ra mountcác lệnh rõ ràng để làm cho các hệ thống tệp có sẵn trên Linux? Tại sao không làm cho hệ điều hành luôn làm điều đó cho chúng ta và ẩn nó khỏi người dùng?

Đây là câu hỏi tôi đang đọc trong văn bản câu hỏi, khi bạn hỏi:

Tại sao không bỏ qua việc gắn hoàn toàn, và làm như sau

ls /dev/cdrom

và có nội dung của CD-ROM được liệt kê?

Có lẽ, ý bạn là: tại sao không có lệnh đó làm gì

ls /media/cdrom

bây giờ không

Vâng, trong trường hợp đó, /dev/cdromsẽ là một cây thư mục, không phải là một tập tin thiết bị. Vì vậy, câu hỏi thực sự của bạn dường như là: tại sao có một tập tin thiết bị ở nơi đầu tiên?

Tôi muốn thêm một câu trả lời cho những câu đã được đưa ra.

Tại sao người dùng có thể xem các tập tin thiết bị?

Bất cứ khi nào bạn sử dụng CD-ROM hoặc bất kỳ thiết bị nào khác lưu trữ tệp, một phần mềm được sử dụng để diễn giải bất cứ thứ gì có trên CD-ROM của bạn dưới dạng cây thư mục của tệp. Nó được gọi bất cứ khi nào bạn sử dụng lshoặc bất kỳ loại lệnh hoặc ứng dụng nào khác truy cập các tệp trên CD-ROM của bạn. Phần mềm đó là trình điều khiển hệ thống tệp cho hệ thống tệp cụ thể được sử dụng để ghi các tệp vào đĩa CD-ROM của bạn. Bất cứ khi nào bạn liệt kê, đọc hoặc ghi tệp trên một hệ thống tệp, công việc của phần mềm đó là đảm bảo rằng các hoạt động đọc và ghi mức độ thấp tương ứng được thực hiện trên thiết bị được đề cập. Bất cứ khi nào bạn mountlà một hệ thống tệp, bạn sẽ nói cho hệ thống biết trình điều khiển hệ thống tệp nào sẽ sử dụng cho thiết bị. Cho dù bạn làm điều này rõ ràng với mộtmountlệnh hoặc để nó cho HĐH được thực hiện tự động, nó sẽ cần phải được thực hiện, và tất nhiên phần mềm trình điều khiển hệ thống tệp sẽ cần phải ở đó ngay từ đầu.

Làm thế nào để một trình điều khiển hệ thống tập tin làm công việc của nó? Câu trả lời: nó thực hiện bằng cách đọc và ghi vào tệp thiết bị. Tại sao? Câu trả lời, như bạn đã nêu: Unix được thiết kế theo cách này. Trong Unix, các tệp thiết bị là sự trừu tượng hóa mức thấp phổ biến cho các thiết bị. Phần mềm thực sự dành riêng cho thiết bị (trình điều khiển thiết bị) cho một thiết bị cụ thể được cho là thực hiện mở, đóng, đọc và ghi trên thiết bị như các thao tác trên tệp thiết bị. Theo cách đó, phần mềm cấp cao hơn (như trình điều khiển hệ thống tệp) không cần biết nhiều về hoạt động bên trong của các thiết bị riêng lẻ. Các trình điều khiển thiết bị cấp thấp và trình điều khiển hệ thống tệp có thể được viết riêng, bởi những người khác nhau, miễn là họ đồng ý về một cách chung để giao tiếp với nhau, và đó là những gì các tệp thiết bị dành cho.

Vì vậy, trình điều khiển hệ thống tập tin cần các tập tin thiết bị.

Nhưng tại sao chúng ta, những người dùng thông thường, có thể xem các tập tin thiết bị? Câu trả lời là Unix được thiết kế để sử dụng cho các lập trình viên hệ điều hành. Nó được thiết kế để cho phép người dùng viết trình điều khiển thiết bị và trình điều khiển hệ thống tệp. Đó là trong thực tế làm thế nào họ nhận được bằng văn bản.

Điều này cũng đúng với Linux: bạn có thể viết trình điều khiển hệ thống tệp của riêng bạn (hoặc trình điều khiển thiết bị), cài đặt nó và sau đó sử dụng nó. Nó làm cho Linux (hoặc bất kỳ biến thể nào khác của Unix) có thể dễ dàng mở rộng (và thực tế đó là lý do Linux được khởi động): khi một số phần cứng mới xuất hiện trên thị trường, hoặc một cách mới, thông minh hơn để thực hiện một hệ thống tệp được thiết kế , ai đó có thể viết mã để hỗ trợ nó, làm cho nó hoạt động và đóng góp nó cho Linux.

Các tập tin thiết bị làm cho điều này dễ dàng hơn.


1
giải thích rất rõ
Shailendra

4

Nhiều công cụ cơ sở dữ liệu có thể làm việc trực tiếp với các đĩa thô hoặc phân vùng. Ví dụ: MySQL:

http://dev.mysql.com/doc/refman/5.7/en/innodb-raw-devices.html

Điều này tránh được chi phí đi qua các trình điều khiển hệ thống tệp, khi tất cả các công cụ DB thực sự cần là một tệp khổng lồ lấp đầy đĩa.


3

Bởi vì /dev/cdromlà một thiết bị, trong khi đó /media/cdromlà một hệ thống tập tin . Bạn cần gắn cái trước vào cái sau để truy cập các tệp trên CD-ROM.

Hệ điều hành của bạn đã tự động gắn hệ thống tập tin gốc và người dùng từ thiết bị đĩa cứng vật lý của bạn, khi bạn khởi động máy tính của mình. Đây chỉ là thêm nhiều hệ thống tập tin để sử dụng.

Tất cả các hệ điều hành làm điều này - tuy nhiên, một số (như Windows, khi nó gắn CD-ROM vào D:) làm điều đó một cách trong suốt. Linux để lại cho bạn để bạn có quyền kiểm soát quá trình tốt hơn.


2
Tôi phải không đồng ý với từ ngữ của bạn. /dev/cdromlà một tệp thiết bị (có các khả năng đặc biệt cho phép chúng ta dễ dàng liên lạc i / o từ / đến thiết bị được liên kết). /media/cdromlà một thư mục, nhưng về cơ bản nó là một tệp khác (hãy nhớ rằng, mọi thứ đều là một tệp trong Linux, bao gồm các thư mục). Bây giờ, khi chúng mountta kết thúc có một khả năng đặc biệt để xem nội dung của tệp thiết bị dưới dạng một hệ thống tệp. Việc tôi hoàn thành bản án cuối cùng là từ việc đọc các câu trả lời ở trên.
Greeso

@Greeso: Tôi đứng trước câu trả lời của tôi.
Các cuộc đua nhẹ nhàng trong quỹ đạo

0

Nó làm như vậy bởi vì, với nhiều phương tiện cho giao diện người dùng máy tính để bàn và máy tính xách tay, sự mơ hồ về những việc cần làm khi phương tiện được chèn, bởi vì trực giác của người dùng là việc đưa đĩa vào hộp vật lý mà người dùng tương tác không khác gì, nói , chèn nó vào một thiết bị bên cạnh máy tính có kết nối mạng.

Do đó, theo nghĩa cơ bản, UI cho phương tiện truyền thông cần xử lý hai loại sự kiện gắn kết tiềm năng tương tự nhau và không có cách nào tốt để máy tính xử lý các kết nối mạng theo cách trực quan như người ta có thể gắn kết mạng với các UI khác với máy tính, chẳng hạn như điện thoại thông minh, máy tính bảng và máy tính có thể đeo được, thiếu khả năng chèn phương tiện vật lý vào thiết bị. (Lưu ý giao diện iPhone khủng khiếp như thế nào khi chuyển đổi thẻ SIM, một loại phương tiện vật lý iOS đã chèn vào chúng.

Cũng lưu ý rằng các cách tiếp cận phổ biến khác đối với UI cho loại hộp vật lý này (ví dụ: Windows 98, Windows 8, Mac OS X v10.2 (Jaguar) và Mac OS X v10.9 (Mavericks)) cũng gặp vấn đề tương tự và sử dụng các hộp thoại GUI bổ sung để loại bỏ sự nhầm lẫn tiềm ẩn (ví dụ: Windows 8 thường được định cấu hình để nhắc cho mỗi CD mới được chèn cho dù nó được gắn dưới dạng hệ thống tệp, phương tiện âm nhạc hoặc nếu phù hợp, một bộ sưu tập video MP4 ). Không có lý do tại sao bất kỳ hộp thoại người dùng nào trong số này không thể được sử dụng với Linux hoặc các UNIX khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.