Mặc dù điều đó không xảy ra khi sử dụng kho lưu trữ apt-get chính thức, nhưng nếu bạn tải xuống phần mềm từ Internet và chạy nó thì có khả năng bạn sẽ thấy bash:./nameOfProgram:không thể thực thi tệp nhị phân:Lỗi định dạng Exec đáng sợ. . Lỗi này thường xảy ra sau bash:./nameOfProgram.sh:Quyền bị từ chối hoặc thứ gì đó tương tự, cho biết Ubuntu không thể giao tiếp chính xác với tệp nhị phân bạn đã tải xuống. Điều này là do mặc dù nó rõ ràng là một hệ nhị phân Linux hợp lệ nhưng nó được thiết kế cho một chipset khác với chipset mà kernel của bạn hiện hỗ trợ.
Hầu hết mọi người sử dụng Ubuntu đều sử dụng bộ xử lý 32 bit hoặc 64 bit dựa trên kiến trúc tiêu chuẩn mà Intel đã phát hành, bất kể ai thực sự tạo ra vi mạch của họ. Điều quan trọng cần nhớ là bộ xử lý 64 bit có thể chạy ở chế độ 32 bit, vì vậy nếu bạn gặp phải lỗi này ngay cả khi bạn có bộ xử lý 64 bit thì có khả năng bạn đang chạy phiên bản Ubuntu 32 bit. Chỉ cần một vài lệnh đơn giản để biết chip của bạn đang hoạt động như thế nào.
Phương pháp 1:Sử dụng lệnh vòm
Nếu bạn không quen với loại bộ vi xử lý mà bạn đã cài đặt trên máy của mình thì trước tiên bạn sẽ muốn sử dụng lệnh Arch từ dòng lệnh. Bạn sẽ chỉ thấy một dòng đầu ra được trả về sau khi chạy lệnh này. Trong nhiều trường hợp, bạn sẽ thấy i686, có nghĩa là bạn đang sử dụng bộ xử lý 32 bit và do đó không thể chạy các tệp nhị phân x86_64. Thay vào đó, nếu bạn thấy amd64 hoặc thứ gì đó tương tự thì bạn đang sử dụng bộ xử lý x86_64 và ít nhất về mặt lý thuyết có thể chạy hầu hết các tệp nhị phân 32 bit và 64 bit. Không giống như Microsoft Windows, Ubuntu Linux thực sự có chứa các công cụ thích hợp để cho phép người dùng chipset 644-bit chạy các chương trình Windows 16-bit trong hệ điều hành của họ trong nhiều trường hợp.
Những thuật ngữ này vẫn đúng ngay cả khi bạn không thực sự sử dụng mẫu vi mạch cụ thể đó. Ví dụ:i686 là cách Linux đề cập đến nhiều bộ xử lý 32 bit ngay cả khi chúng không thực sự là chip Intel 80686. Ngay cả khi bạn đang sử dụng công nghệ Intel 64-bit, Arch vẫn có thể gọi bộ xử lý của bạn là chip AMD64. Điều này không chỉ ra lỗi và có thể được bỏ qua một cách an toàn. Bạn có thể sử dụng mèo /proc/cpuinfo hoặc nhiều /proc/cpuinfo để tìm ra chính xác loại bộ xử lý bạn đang sử dụng. Vì các dòng trong tệp này dài nên bạn có thể muốn nhấn F11 trước khi phát hành nếu bạn đang sử dụng cửa sổ đầu cuối đồ họa. Người dùng bảng điều khiển ảo, đặc biệt là những người làm việc với máy chủ Ubuntu, sẽ không phải lo lắng nhiều.
Bạn có thể thấy một số loại đầu ra khác, điều này có thể hạn chế hơn nữa các tùy chọn của bạn khi chạy phần mềm. Ubuntu hỗ trợ kiến trúc PowerPC trong thời gian dài nhất, được tìm thấy trong một số máy trạm cũng như nhiều máy Macintosh cổ điển và OS X Macintosh cũ hơn. Trên thực tế, bạn vẫn có thể tìm thấy các kho lưu trữ Ubuntu cho các kiến trúc này, mặc dù ngày nay chúng nhận được rất ít sự hỗ trợ. Tuy nhiên, rất có thể bạn sẽ không thể chạy nhiều tệp nhị phân Linux mà bạn tải xuống từ Internet bên ngoài kho chính thức trong trường hợp này. Điều đó không có nghĩa là Ubuntu không hoạt động trên các máy này, mặc dù bạn có thể muốn xem bản phân phối Lubuntu nhẹ hơn.
Cách 2:Sử dụng file Command
Lệnh file xác định những tập tin khác nhau chứa gì và nó thường rất chính xác. Hãy thử xác định tệp được đề cập bằng cách nhập tệp nameOfProgram để xem liệu bạn nhận được ELF 32-bit hay ELF 64-bit làm đầu ra. Nếu nó cho bạn biết rằng đó là tệp nhị phân ELF 64-bit và bạn nhận được i686 dưới dạng đầu ra từ lệnh Arch, thì bạn không có cách nào có thể chạy nó trên máy của mình một cách hợp lý. Nếu bạn đang sử dụng bộ vi xử lý 64 bit chạy Ubuntu 32 bit thì về mặt kỹ thuật, bạn có thể cài đặt lại hệ điều hành, mặc dù đây là một bước hơi cực đoan để chạy một chương trình.
Tuy nhiên, cũng có một khả năng rất thực tế là bạn có thể gặp phải một tệp nhị phân mà khi bạn cố chạy, nó sẽ phun ra các ký tự rác vào thiết bị đầu cuối ngay cả khi bạn đã quét phần mềm độc hại trên đó. Các ký tự này thường có dạng khối hình thoi hoặc hình khối chữ nhật có giá trị số bên trong. Một số nhà khoa học máy tính gọi loại thứ hai là đậu phụ và biểu thị các giá trị Unicode của các ký tự mà kiểu chữ hiện được cài đặt của bạn sẽ không thể hiển thị. Nếu thiết bị đầu cuối hiển thị chúng như thế này thì bạn có thể yên tâm rằng đây không phải là lỗi phông chữ hay bất cứ điều gì liên quan đến phần mềm độc hại. Đúng hơn, điều này đơn giản là do opcode của bộ vi xử lý được biên dịch bên trong tệp nhị phân quá xa lạ với hệ thống của bạn nên nó không biết cách diễn giải một số mã.
Cách tốt nhất để khắc phục điều này là cài đặt gói thích hợp cho kiến trúc của bạn. Nếu bạn đang cài đặt các gói từ bên trong Ubuntu thì hệ thống apt-get hoặc trình quản lý Synaptic đồ họa sẽ giúp bạn giải quyết mà không gặp bất kỳ sự cố nào. Nếu bạn đang tải xuống các gói từ một bản phân phối khác thì bạn sẽ cần tìm gói phù hợp với kiến trúc của mình. Lấy ví dụ, danh sách gói gvim của Arch Linux. Mặc dù gói mặc định có kiến trúc x86_64 nhưng cũng có một gói dành cho chipset i686. Cái này sẽ hoạt động trên các máy 32 bit hoạt động với cấu trúc ngắt Intel, nhưng hãy nhớ rằng thuật ngữ i686 và 32 bit không phải lúc nào cũng bao gồm lẫn nhau vì các chipset khác mà Linux hỗ trợ thực sự có tính năng triển khai 32 bit của riêng chúng.
Người dùng khám phá toàn bộ bối cảnh GNU/Linux có thể bắt gặp các tệp nhị phân được biên dịch cho các công nghệ kỳ lạ hơn nhiều so với các tệp này. Linux thực sự là một bối cảnh mã đa nền tảng, vì vậy bạn sẽ thấy OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha và nhiều tệp nhị phân tiêu chuẩn khác được biên dịch để hoạt động. Nhiều khả năng, bạn sẽ không thể chạy bất kỳ thứ nào trong số này, mặc dù ARM là nền tảng điện thoại thông minh và máy tính bảng cực kỳ phổ biến. Đây cũng là nền tảng mà Raspberry Pi dựa trên, có nghĩa là nếu bạn thực sự đang chạy Ubuntu trên thiết bị di động hoặc bản phân phối Ubuntu MATE cho Raspberry Pi thì bạn thực sự sẽ cần những thứ này thay vì các tệp nhị phân Intel 32-bit hoặc x86_64.
GIỚI THIỆU TÁC GIẢ
Mũi tên Kevin
Kevin Arrows là một chuyên gia công nghệ giàu kinh nghiệm và hiểu biết với hơn một thập kỷ kinh nghiệm trong ngành. Anh có chứng chỉ Chuyên gia Công nghệ được Chứng nhận của Microsoft (MCTS) và có niềm đam mê sâu sắc trong việc cập nhật những phát triển công nghệ mới nhất. Kevin đã viết nhiều về nhiều chủ đề liên quan đến công nghệ, thể hiện chuyên môn và kiến thức của mình trong các lĩnh vực như phát triển phần mềm, an ninh mạng và điện toán đám mây. Những đóng góp của ông cho lĩnh vực công nghệ đã được các đồng nghiệp công nhận và tôn trọng rộng rãi, đồng thời ông được đánh giá cao nhờ khả năng giải thích các khái niệm kỹ thuật phức tạp một cách rõ ràng và ngắn gọn.