Câu hỏi Tôi đang chạy 32-bit hay 64-bit?


Tôi biết câu hỏi này đã được hỏi một số lần, nhưng hệ thống của tôi dường như mâu thuẫn với chính nó ...

Theo câu trả lời cho điều này câu hỏi, tôi đã chạy như sau:

$ uname -a
Linux manaha 3.13.7-x86_64-linode38 #1 SMP Tue Mar 25 12:59:48 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
$ file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xc0d86a25a7abb14cad4a65a1f7d03605bcbd41f6, stripped

Vì vậy, trong khi uname dường như đề xuất 64 bit, /sbin/init gợi ý 32-bit. Điều gì đang xảy ra ở đây?


2
2018-04-20 15:29


gốc


Điều đó lạ thật! Bạn đã bao giờ tự biên dịch lại hạt nhân chưa? - jobin
dpkg --print-architecture sẽ cung cấp cho kiến ​​trúc ban đầu của bạn. - Avinash Raj
$ dpkg --print-architecture sản lượng i386. Tôi đã không biên dịch lại hạt nhân-hộp được lưu trữ bởi Linode và gần đây tôi đổi chỗ để được hạt nhân trong quản lý trang web của họ phụ trợ để cho phép một số nâng cấp miễn phí mà họ đã cung cấp. - forquare


Các câu trả lời:


Trong máy tính, định dạng thực thi và liên kết (ELF) là một định dạng tệp chuẩn phổ biến cho các tệp thực thi, mã đối tượng, thư viện được chia sẻ và các vùng lõi. Trong câu hỏi của bạn /sbin/init: ELF 32-bit LSB shared object xác định ELF là định dạng cho đối tượng chia sẻ 32 bit từ thư viện được chia sẻ. Hệ điều hành của bạn là một hệ điều hành 64 bit có một đối tượng chia sẻ 32 bit ở đâu đó trong đó. Không có mâu thuẫn trong điều này.


2
2018-04-20 15:47



Điều đó có nghĩa là file /sbin/init không phải là một phương pháp đáng tin cậy để biết liệu bạn có đang chạy hệ điều hành 32 bit hay 64 bit không? - jobin
@Jobin uname -a là một cách đơn giản và ít có khả năng gây nhầm lẫn để biết liệu bạn có đang chạy hệ điều hành 32 bit hoặc 64 bit hay không file /sbin/init. - karel
Do đó, nếu init là 32 bit và init bắt đầu tất cả các quá trình (xin lỗi, là một vài năm kể từ khi tôi đã thực hiện công cụ cấp thấp này), điều này có nghĩa là tôi chỉ có thể chạy các ứng dụng 32 bit, nhưng hạt nhân đang chạy ở chế độ 64 bit? - forquare
Hãy xem câu trả lời này mà tôi đã đăng hôm nay. Nó cũng sẽ giúp đọc câu hỏi và truy cập vào liên kết trong câu trả lời. Tóm lại, Ubuntu 14.04 64-bit (hạt nhân Linux 64 bit) cũng có thể chạy các ứng dụng 32 bit bằng cách chạy lệnh: sudo dpkg --add-architecture i386. - karel


Trong khi lệnh uname cho bạn biết điều gì đó về hệ thống của bạn, lệnh của tập tin sẽ cho bạn biết về một tập tin. Vì vậy, các tập tin lệnh nói "init" là một tập tin 32-bit và lệnh uname nói rằng bạn có một máy tính 64-bit. Tôi hi vọng cái này giúp được.
Vui lòng chỉ ra bất kỳ lỗi nào tôi đã thực hiện càng nhanh càng tốt, trong trường hợp nó gây hại.
PS bạn đã đọc các câu trả lời khác cho bài viết bạn đang liên kết đến? Câu trả lời này có vẻ là một cách thực sự dễ dàng để tìm hiểu kiến ​​trúc của bạn: https://askubuntu.com/a/65731/271517


0
2018-04-20 15:55