Các hạt nhân Linux / Unix khác nhau có thể thay thế cho nhau không?


14

Tôi có thể lấy một nhân Linux và sử dụng nó với, ví dụ như FreeBSD và ngược lại (nhân FreeBSD trong, nói, một Debian) không? Có một câu trả lời phổ quát? Những hạn chế là gì? Các vật cản là gì?


5
Không, hoàn toàn không. Một bài tập tốt sẽ là thử nó và xem nó phá vỡ như thế nào. Bạn thậm chí không thể thay thế một nhân Linux bằng một nhân Linux cũ hơn nhiều. Thay thế các công cụ userland chắc chắn là có thể thực hiện được (nếu được biên dịch lại).
Kusalananda

3
debian.org/ports/kfreebsd-gnudebian.org/ports/hurd có thể khiến bạn quan tâm
muru

@Kusalananda liên quan đến việc thay thế các công cụ người dùng, chuyển từ BSD sang Linux có thể gây khó khăn: một số công cụ BSD khá khó để xây dựng trên các hệ thống không phải BSD ... Tôi đã bắt gặp một vài công cụ trong nhiều năm mà tôi muốn chuyển , nhưng hóa ra là không tầm thường: - /.
Stephen Kitt

1
@StephenKitt Điều ngược lại cũng đúng :-) Đặc biệt khi phần mềm đưa ra các giả định về khả năng truy cập /prochoặc các tiếng chuông và còi cụ thể khác của Linux.
Kusalananda

Những gì bạn có thể làm là lấy một hạt nhân x86_64 (linux) và cài đặt nó trên bản phân phối 32 bit của i386 (giả sử CPU intel 64 bit và hỗ trợ các tệp nhị phân 32 bit được biên dịch). Điều này khá nổi tiếng, nhưng không rõ ràng ngay lập tức ...
Radovan Garabík 23/03/18

Câu trả lời:


39

Không, các hạt nhân từ các hệ điều hành kiểu Unix khác nhau không thể thay thế cho nhau, đáng chú ý là vì tất cả chúng đều thể hiện các giao diện khác nhau cho phần còn lại của hệ thống (không gian người dùng) - các cuộc gọi hệ thống của chúng (bao gồm cả ioctlchi tiết cụ thể), các hệ thống tệp ảo khác nhau mà chúng sử dụng. ..

Cái gì có thể hoán đổi cho nhau ở một mức độ nào đó, ở cấp độ nguồn, là sự kết hợp giữa kernel và thư viện C, hay đúng hơn là các API cấp độ người dùng mà kernel và thư viện trưng ra (về cơ bản, khung nhìn ở lớp được mô tả bởi POSIX, không có xem xét liệu nó thực sự POSIX). Ví dụ về điều này bao gồm Debian GNU / kFreeBSD , xây dựng một hệ thống Debian trên hạt nhân FreeBSD và Debian GNU / Hurd , xây dựng một hệ thống Debian trên đỉnh Hurd.

Điều này không hoàn toàn ở mức độ hoán đổi hạt nhân, nhưng đã có những nỗ lực chuẩn hóa giao diện nhị phân ứng dụng chung, để cho phép các nhị phân được sử dụng trên các hệ thống khác nhau mà không cần biên dịch lại. Một ví dụ là Tiêu chuẩn tương thích nhị phân Intel , cho phép các nhị phân phù hợp với nó chạy trên bất kỳ hệ thống Unix nào triển khai nó, bao gồm các phiên bản Linux cũ hơn với lớp iBCS 2. Tôi đã sử dụng điều này vào cuối những năm 90 để chạy Worderinf trên Linux.

Xem thêm Cách xây dựng một chroot FreeBSD bên trong Linux .


1
Một số người có ý kiến ​​khá mạnh mẽ về tầm quan trọng của việc giữ cho kernel và API người dùng được đồng bộ hóa :)
tonysdg

4
Thật vậy, @tonysdg, và tin tôi đi, tôi biết tất cả về điều đó : - /.
Stephen Kitt

@tonysdg Tôi nhận được một trang không tìm thấy trên liên kết của bạn. (Trừ khi đó là một trò đùa mà tôi đang thiếu?)
mbrig 23/03/18

1
@mbrig: Cho đến ngày hôm qua, nó đã ở đó - đây là một phiên bản lưu trữ: web.archive.org/web/20171102142621/http://...
tonysdg

@StephenKitt: Ouch :( Xin lỗi !! Nhưng những người nổi tiếng thậm chí còn có mã trong kernel để bắt đầu!
tonysdg 23/03/18

4

Một số hạt nhân có khả năng tương thích nhị phân cho phép bạn trộn các chương trình không gian người dùng với các ABI khác nhau (ví dụ freebsd có thể hoạt động với các nhị phân linux ở một mức độ) - tuy nhiên, các nhị phân lõi (ví dụ: chương trình init, trình tải mô-đun, công cụ thiết lập trình điều khiển thiết bị, thư viện C , các công cụ cần thiết để thiết lập hệ thống tập tin ...) trong thực tế sẽ có quá nhiều điều cần biết về giao diện cấp kernel để khởi động hệ thống với kernel ngoại thành công.

Ngoài ra, các hệ thống tập tin sẽ cần phải tương thích. Ngoài ra, các tùy chọn tương thích nhị phân sẽ cần được biên dịch "cứng" vào kernel - mọi thứ được triển khai như một mô-đun hạt nhân đều muốn thất bại vì bạn không thể chạy trình tải mô-đun.

Như đã đề cập, môi trường người dùng có xu hướng dễ mang theo nếu bạn sẵn sàng biên dịch lại - như các hệ thống debian dựa trên freebsd, hoặc thiết lập hệ thống netbsd pkgsrc trên linux (hoàn toàn không tầm thường, nhưng được hỗ trợ và có thể!).

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.