Có thể chạy L.04 10.04 hoặc 12.04 hoặc sớm hơn được chứa trong LXC hoặc Docker trên Trusty không?


7

Có thể cài đặt Ubuntu 14.04 (Trusty) và chạy bên trong nó chứa các phiên bản Ubuntu cũ hơn ban đầu đi kèm với các hạt nhân cũ hơn không?

Ví dụ: 12.04 tôi cho rằng câu trả lời là có vì nó có linux-imagecác gói cho các bản phát hành Ubuntu tiếp theo, chẳng hạn như linux-image-generic-lts-saucylinux-image-generic-lts-quantal. Tuy nhiên, đối với 10.04 thì không phải vậy, vì vậy tôi không chắc chắn. Nhưng có tài liệu nào có sẵn mà tôi có thể sử dụng để suy luận những gì ổn để chạy không?

Lý do tôi hỏi là vì giao diện kernel trải qua các bản cập nhật mọi lúc mọi nơi. Tuy nhiên, đôi khi có ích khi chạy các phiên bản mới hơn của bản phân phối và đồng thời giữ môi trường xây dựng dựa trên phiên bản tiền nhiệm.


Tôi chỉ đơn giản là sẽ thử nó. Nếu bạn tình cờ có quyền truy cập vào phương tiện cài đặt 10.04 + 12.04 cũ hơn, tôi sẽ thiết lập hình ảnh Docker cho những thứ này và dùng thử.
slm

Không cần sử dụng phương tiện cài đặt, có một số thùng chứa các bản phát hành Ubuntu cũ hơn trong sổ đăng ký .
sr_

Chủ đề danh sách gửi thư này (và câu trả lời được liên kết bởi jpetazzo ) có thể cung cấp một số cái nhìn sâu sắc.
sr_

Câu trả lời:


7

Bạn có thể chạy các chương trình Linux cũ hơn trên các nhân mới hơn. Linux duy trì khả năng tương thích ngược (ít nhất là cho tất cả các giao diện được ghi lại), vì lợi ích của những người đang chạy nhị phân cũ vì lý do này hay lý do khác (vì họ không muốn làm phiền việc biên dịch lại, vì họ đã mất nguồn, vì đây là phần mềm thương mại mà họ không có nguồn, v.v.).

Nếu bạn muốn có một môi trường xây dựng với các công cụ phát triển cũ hơn hoặc thậm chí là môi trường thử nghiệm cho bất kỳ thứ gì không đi sâu vào giao diện kernel, thì bạn không cần phải chạy kernel cũ, chỉ là môi trường người dùng cũ. Đối với điều này, bạn không cần bất cứ điều gì phức tạp: một chroot sẽ làm. Một cái gì đó cao cấp hơn như LXC, Docker, Hoài có thể hữu ích nếu bạn muốn bản phân phối cũ hơn (hoặc mới hơn, cho vấn đề đó) có cấu hình mạng riêng. Nếu bạn không muốn điều đó, bạn có thể sử dụng chính xác những gì Debian sử dụng để xây dựng phần mềm trong môi trường đã biết (ví dụ: xây dựng phần mềm cho Debian ổn định trên máy có cài đặt thử nghiệm): schroot . Xem Làm cách nào để chạy chương trình 32 bit trên Debian / Ubuntu 64 bit? để có hướng dẫn về cách thiết lập cài đặt thay thế Debian hoặc dẫn xuất trong chroot.

Nếu bạn muốn chạy kernel của bản phân phối cũ hơn, bạn sẽ cần một máy ảo thực sự cho điều đó, chẳng hạn như KVM hoặc VirtualBox. Ảo hóa Linux trên Linux với LXC hoặc tương tự chạy cùng một hạt nhân trong suốt.


Tôi biết có một sự tương thích ngược. Nhưng nó không tầm thường lắm phải không? Tại sao người khác liên kết với GLIBC lại để lại tiêu đề chú thích trong các tệp ELF nêu rõ ABI hạt nhân nhất định. Hãy nghĩ về việc chuyển từ 32 bit time_tsang 64 bit time_t, đây là một thay đổi không tương thích. Vì vậy, điểm cắt là gì?
0xC0000022L

@ 0xC0000022L Linux vẫn hỗ trợ nhị phân a.out. Điều này đã bị ELF lỗi thời từ năm 1998 hoặc lâu hơn. Các nhân Linux mới hơn hỗ trợ ABI cũ hơn; dấu hiệu ABI kernel có ở đó vì các ứng dụng mới hơn có thể không chạy trên các kernel khác.
Gilles 'SO- ngừng trở nên xấu xa'

khác == mới hơn? Thật không may với GLIBC, mọi thứ thậm chí còn phức tạp hơn, nhưng đó là một câu chuyện khác. Cảm ơn.
0xC0000022L

Tôi có một câu hỏi liên quan: làm thế nào một cài đặt cơ sở có thể chạy, giả sử, 3.10 của kernel, hỗ trợ hình ảnh docker của, ví dụ, Ubuntu dựa trên phiên bản 4 của kernel?
Ma

2

➜ codetv_static# docker run ubuntu:10.04 /bin/echo 'Howdy!' Unable to find image 'ubuntu:10.04' locally 10.04: Pulling from library/ubuntu a3ed95caeb02: Pull complete 86b54f4b6a4e: Pull complete Digest: sha256:f6695b2d24dd2e1da0a79fa72459e33505da79939c13ce50e90675c32988ab64 Status: Downloaded newer image for ubuntu:10.04 Howdy!

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.