কীভাবে লিনাক্স কার্নেল আর্কিটেকচার নির্ধারণ করবেন?


92

uname -mi686 uname -mদেয় এবং রেড হ্যাট এন্টারপ্রাইজ লিনাক্স সার্ভার 5.4 (টিকঙ্গা) মেশিনে i686 i386 আউটপুট দেয়। আমাকে সেই মেশিনে ওরাকল ডেটাবেস 10 জি রিলিজ 2 ইনস্টল করতে হবে। সুতরাং, আমি কীভাবে সিদ্ধান্ত নেব যে কার্নেল আর্কিটেকচার 32 বিট বা 64 বিট হয়?


10
প্রথম বাক্যে এটি কি টাইপো: uname -mএবং uname -m?
tshpang

বিট সংখ্যা (32 বা 64) ফেরত দেওয়ার জন্য লিনাক্স কমান্ডটিও দেখুন ? । যদি uname -mআমি? 86 দেখায়, আপনার কাছে 32-বিট সিস্টেম রয়েছে।
গিলস 21


প্রশ্ন গিলেজ লিঙ্ক একটি আকর্ষণীয় সমাধান দেয়: getconf WORD_BIT
মিকেল 23

7
getconf WORD_BITআমার
64৪

উত্তর:


90

i386 এবং i686 উভয়ই 32-বিট।
x86_64 হল 64-বিট

উদাহরণস্বরূপ 64 বিট:

behrooz@behrooz:~$ uname -a  
Linux behrooz 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 **x86_64** GNU/Linux

সম্পাদনা:
দেখুন আমার লিনাক্স এআরএম 32 বা 64 বিট? আর্মের জন্য


আর্মভেল 7 কি? যাইহোক, একটি সাধারণ বুলিয়ান প্রতিক্রিয়া সহ একটি কমান্ড সুস্বাদু হবে।
ব্যবহারকারী 7543

1
@ ব্যবহারকারী 43৫৩৩ এটি ৩২-বিট এআরএম, কারণ আমাদের কাছে এখনও 64৪-বিট এআরএম নেই hen আমরা যখন করি তখন এটি কিছু আলাদা হবে।
বেহরোজ

আমার মনে হচ্ছে আমার উত্তর সম্প্রদায়ের উইকি করা উচিত তবে কীভাবে তা জানি না।
বেহরোজ

1
চেষ্টা করুন: uname -m। এটি কেবল আর্কিটেকচারটি প্রদর্শন করবে।
আলেকজ মাগুরা

39

ইহা সাধারণ! archকমান্ডটি ব্যবহার করুন ।


5
অদ্ভুত ... আমার 2013 ম্যাকবুক প্রোতে, archফিরে আসে i386, তবে uname -aশো করে x86_64
টার্বোলেডেন

3
@ তুরোব্লাদেন "কেন আউটমেটে একচেটিয়া এবং খিলান আলাদা হয়?" = superuser.com/questions/835514/…
ব্যবহারকারী 10607


32

@ বিহরোজ সঠিক। দুর্ভাগ্যক্রমে আপনার unameপ্রয়োজন আর্কিটেকচার জানতে। আসলে, আমি স্থাপত্যগুলির একটি তালিকা খুঁজছিলাম এবং আমি এই নিবন্ধটি পেয়েছি যা আপনার প্রশ্নের উত্তর দেয়। সম্পর্কিত uname -m:

x86_64 জিএনইউ / লিনাক্স ইঙ্গিত দেয় যে আপনার একটি 64 বিট লিনাক্স কার্নেল চলছে। আপনি যদি i386 / i486 / i586 / i686 দেখতে পান এটি একটি 32 বিটের কার্নেল।

হার্ডওয়্যার একটি 64-বিট কার্নেল চালাতে সক্ষম কিনা তা নির্ধারণ করতে

grep flags /proc/cpuinfo

আউটপুটে নিম্নলিখিতটি দেখুন ( একই প্রশ্নের জন্য এই স্ট্যাকওভারফ্লো উত্তরটি থেকে সমস্ত পতাকা উদ্ধার করা হয়েছে )

  • lm পতাকা মানে লং মোড সিপিইউ - bit৪ বিট সিপিইউ
  • tm পতাকা মানে সুরক্ষিত মোড - 32-বিট সিপিইউ
  • rm পতাকা মানে রিয়েল মোড - 16 বিট সিপিইউ

এলএম পতাকাটির অর্থ কি সিপিইউ 64-বিট সমর্থন করে বা এর অর্থ এটি 64-বিটে চলছে। আমি 64-বিটের জন্য x86_64 বা 32-বিটের জন্য 86?
পেঙ্গুইন 359

1
@ পেঙ্গুইন 359 এর অর্থ সিপিইউ 64-বিট সমর্থন করে।
xenoterracide

@ এক্সেনো তাই কার্নেল আর্কিটেকচার নির্ধারণের জন্য ব্যবহার করা যায় না।
পেঙ্গুইন 359

@ পেঙ্গুইন 359 না, উত্তরে এটি অস্পষ্ট ছিল?
xenoterracide

1
@ পেঙ্গুইন 359, না তবে এটি বেশিরভাগ ক্ষেত্রে কার্যকর হয় যে আপনার ওএস
bit৪-

22

(সম্পাদনা করুন: এই উত্তরটি ভুল। @ লিজার্ডেক্সের মন্তব্যে ধন্যবাদ)

বাশ-এ, পূর্ণসংখ্যার ওভারফ্লো ব্যবহার করে:

if ((1<<32)); then
  echo 64bits
else
  echo 32bits
fi

এটি অন্য প্রক্রিয়া বা ফাইল খোলার চেয়ে অনেক বেশি দক্ষ।


3
তাই চালাক এবং চিপ আর্কিটেকচারটি কী সম্পর্কে আমাদের মনে করিয়ে দেয়
Code_monk

2
মার্জিত অবস্থায়, এটি দুর্ভাগ্যক্রমে সঠিক নয়: আনম-এম == আই 686 তবে যদি ((1 << 32)); তারপরে bits৪ বিট প্রতিধ্বনি করুন; ফাই == 64৪ বিট এটি একটি পিএই কার্নেল, 32 বিট, একটি 64 বিটের কার্নেল নয়। সিপিইউ 64 বিট সক্ষম তবে এমডি 64। যেহেতু প্রশ্নটি ছিল যে কীভাবে কার্নেল খিলান নির্ধারণ করা যায়, তাই এই সমাধানটি ভুল ফল দেয়।
Lizardx

1
নোটটি ((একটি বাশিজম এবং পোসিক্স মাইওকি.ইউইউইজিআরইউজিইউ
স্টিভেন পেনি

আমি এটি প্রায় 32 বিট আর্কিটেকচারে চেষ্টা করেছি এবং এটি মনে করে এটি 64 বিট।
ড্যানিউ

এটি কাজ করতে পারে((1<<32)-1)
আইভিজন স্টেফান স্টিপিয়াস

15

জন্য ডেবিয়ান :

আমার পিসিতে

    ।> dpkg - প্রিন্ট-আর্কিটেকচার
    AMD64
    ।> dpkg - প্রিন্ট-বিদেশী-আর্কিটেকচার
    মধ্যে i386

আমার রাস্পবেরি পাই 2

    ।> dpkg - প্রিন্ট-আর্কিটেকচার
    armhf

1
checkinstallthx এর সাথে ব্যবহার করার জন্য প্যাকেজ আর্কিটেকচার নির্ধারণ করার সময় এটি সবচেয়ে ভাল কাজ করে !
কুম্ভ শক্তি

ধন্যবাদ. আমি এমন কিছু সন্ধান করছি যা কেবল "x86_64" এর পরিবর্তে 'স্ট্যান্ডার্ড' "amd64" / "i386" আর্কিটেকচারের নাম বাদ দেবে। প্রাকম্পম্পিত রিলিজের নামকরণের সময় কেউ সেই পরিভাষা ব্যবহার করে না।
ক্লিফ

12

সবচেয়ে সহজ উপায় চালানো:

getconf LONG_BIT

যা 32 বা 64 বিট কিনা তার উপর নির্ভর করে 64 বা 32 আউটপুট আসবে।

উদাহরণ:

dannyw@dannyw-redhat:~$ getconf LONG_BIT
64

2
এই উত্তরটি বিভ্রান্তিকর। আপনি যদি মাল্টিআরচ সমর্থন সক্ষম করে থাকেন এবং 32 বিট ইনস্টলেশন ওপরে 64 বিট কার্নেল ইনস্টল করেন তবে আপনি 64 বিট কার্নেল চালাচ্ছেন তবে getconf LONG_BITমুদ্রণ হবে 32
কেনে

2

ব্যবহার syscap থেকে Formake প্রকল্পের

syscap অনেকগুলি সিস্টেমের বৈশিষ্ট্য এবং পরীক্ষার নির্ভরতাগুলি অনুসন্ধান করতে সহায়তা করে। এটি একটি বহনযোগ্য শেল স্ক্রিপ্ট।

সিপিইউ আর্কিটেকচার পান:

syscap info -arch

কার্নেলের নাম এবং সংস্করণ পান:

syscap info -kernel -kernver

1

আর একটি উপায় হ'ল আর্কিটেকচারটি পরীক্ষা করে দেখুন কিছু সিস্টেম ফাইল যেমন সংকলন করা হয়েছিল

$ file /usr/bin/ld
/usr/bin/ld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

1
এটি সিস্টেম আর্কিটেকচার, যা সর্বদা কার্নেল আর্কিটেকচার নয়। দেখুন SU এই উত্তর আরো বৈচিত্র জন্য।
গিলস

তাত্ত্বিকভাবে, তারা পৃথক হতে পারে, তবে এমন কোনও সুযোগ আছে যা তারা বাস্তব জীবনের কোনও ইনস্টলেশনতে মেলে না?
minaev

কিছু বিতরণ x86 সংস্করণে একটি এমডি 64 কার্নেল পাঠায়। আমি জানি না যে কয়জন লোক এগুলি ব্যবহার করে, আমি ডিবিয়ান পপকনটি পরীক্ষা করেছিলাম তবে এটি বিভিন্ন পরিসংখ্যানের সাথে সম্পর্কিত নয় doesn't আমি মনে করি যে প্রধান ব্যবহারের ক্ষেত্রে 32-বিট প্রধান OS রয়েছে এবং একটি ক্রুটে বা কোনও ভিএম-তে 64-বিট ওএস চলছে।
গিলস

@ গিলস আপনি নতুন x32 আর্কিটেকচার সম্পর্কে যা পড়বেন তা পছন্দ করতে পারবেন, যদি আমি খুব বেশি দেরি না করি তবে অবশ্যই। wiki.debian.org/X32Port
বেহরোজ

0

অথবা আপনি নিজের কিছু জিনিস প্রয়োগ করতে চাইলে আনম কমান্ড অভ্যন্তরীণভাবে কী করে তা আপনি সেই উপায়টি ব্যবহার করতে পারেন :

#include <sys/utsname.h>
#include <stdio.h>

int main() {
    struct utsname name;
    uname(&name);
    printf("%s\n",name.machine);
    return 0;
}

0

এখানে আরও একটি পদ্ধতি ব্যবহার করা হচ্ছে uname

থেকে man uname:

... -i, --hardware-platform print the hardware platform or "unknown" ...

# uname -i x86_64 #


যতক্ষণ না এটি "অজানা" দেয়
ডাজেল্ফ

0

আপনি যদি একটি সহজ এক-লাইনের খুঁজছেন, তাহলে এই সবচেয়ে নির্ভরযোগ্য সমাধান আমি দেখেছি যে, ফেরৎ 64 বা 32 । আপনি এআরএম চালাচ্ছেন কি না তা বিবেচ্য নয় এবং ব্যাশ বা ব্যবহার করে এটি কোনও সিস্টেমে কাজ করা উচিত ।

সাবধান, এটি ধরে নিবে সিস্টেমটি হয় 32-বিট বা 64-বিট। আপনার যদি 8- 16- বা কিছু-বিট আর্কিটেকচার সনাক্ত করতে হয় তবে নীচে আমার ব্যাখ্যা দেখুন।

[$ ((0xffffffff)) -Eq -1] && প্রতিধ্বনিত 32 || প্রতিধ্বনি 64

এখানে কি সুখ?
যুক্তিটি খুব সহজ এবং কম্পিউটারগুলি স্বাক্ষরিত পূর্ণসংখ্যাগুলি কীভাবে সঞ্চয় করে তা এগুলি সমস্ত ফোটায়। একটি 32-বিট আর্কিটেকচারে 32 টি বিট রয়েছে যা এটি স্বাক্ষরিত পূর্ণসংখ্যাগুলি সংরক্ষণ করার জন্য ব্যবহার করতে পারে যখন একটি 64-বিট আর্কিটেকচারে 64 বিট রয়েছে! অন্য কথায় সংরক্ষণ করা যেতে পারে যে পূর্ণসংখ্যার সেট সীমাবদ্ধ। এই সেটটির অর্ধেকটি নেতিবাচক সংখ্যা এবং অর্ধেকটি ইতিবাচক সংখ্যা উপস্থাপন করে। স্বাক্ষরিত পূর্ণসংখ্যা -1 সমানটি বৃহত্তর সংখ্যা হিসাবে উপস্থাপিত হয় যা সেই স্থাপত্যের জন্য প্রদত্ত সংখ্যক বিটগুলিতে সংরক্ষণ করা যেতে পারে be 32-বিট সিস্টেমে -1 হেক্স মান 0xFFFFFFFF (যা 32 বাইনারি বিট, সমস্ত সমান 1) দ্বারা প্রতিনিধিত্ব করা যেতে পারে। একটি 64-বিট সিস্টেমে 0xFFFFFFFFF 4,294,967,295, বেস 10 এ অনুবাদ করে যখন 0xFFFFFFFFFFFFFFFF -1-এর উপস্থাপনা)। আপনি দেখতে পারেন যে এটি 8- বা 16-বিটের পাশাপাশি 0xFF এবং 0xFFFF এ -1 সমান হবে এমন সিস্টেমগুলির জন্য কীভাবে সহজে স্কেল করতে পারে,

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.