574

I downloaded and installed Ubuntu from the official site. However, I don't know if I installed the 32-bit or 64-bit version.

In Windows 7 I could right click My Computer and it listed which version it was.

Is there an easy way to check in Ubuntu?

16 Answers16

717

I know at least 2 ways. Open a terminal(Ctrl+Alt+T) and type:

  1. uname -a

    Result for 32-bit Ubuntu:

    Linux discworld 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

    whereas the 64-bit Ubuntu will show:

    Linux discworld 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

    Shorter version:

    $ uname -i
    x86_64
    

    or

  2. file /sbin/init

    Result for 32-bit Ubuntu:

    /sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

    whereas for the 64-bit version it would look like:

    /sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

    Same for systems using systemd (16.04):

    file /lib/systemd/systemd

    Result for 64-bit:

    /lib/systemd/systemd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=54cc7ae53727d3ab67d7ff5d66620c0c589d62f9, stripped
Rinzwind
  • 299,756
  • 15
    Method 2, which consists of "sniffing" the (binary) content of a widely available executable, is quite indirect and awkward. While it works for most setups, the mere presence of a 64bit executable should not be a reliable way of detecting the running OS architecture. Specially when you consider multiarch, ia32_libs and, specially in your init example, upstart – MestreLion Mar 25 '13 at 11:20
  • 8
    You are probably right, but Method 1 displayed me a i686 neither of 32 or 64 output was displayed for me – Aleks Mar 17 '14 at 13:04
  • 6
    @aleks that is 32 bit (see the highlighted text: i686 i686 i386 in the answer) – Rinzwind Mar 17 '14 at 13:10
  • it is 32 bit, I have used the second method, but the first did't show me anything that looked like i386 :) but your answer helped. thanks a lot – Aleks Mar 17 '14 at 13:30
  • 1
    # file /sbin/init -- /sbin/init: symbolic link toupstart'--# file /sbin/upstart--/sbin/upstart: ELF 64-bit LSB shared object, x86-64...` – Nakilon Dec 17 '14 at 09:15
  • To method 1: You get the item highlighted with bold letters also by just running uname -i or uname --hardware-platform. No need for uname -a with lots of confusing stuff. The other i686 items are displayed by uname -m/uname --machine (first item) and uname -p/uname --processor (second item), but I don't know how their meaning differs from each other. On my machine, all of the three display "i686"... – Byte Commander Aug 18 '15 at 12:10
  • Exactly, uname shows only one i686 on my 10.10 system, then i686 for all three fields after upgrading to 14.04 (I didn't check anywhere in between). Whereas, I think checking /sbin/init is guaranteed to work (at least while we still have it--I'm thinking that goes away with systemctl). If init is 32-bit, you have a 32-bit system. – Auspex Jan 07 '16 at 15:57
  • @Auspex trough the years (from Unix on) it has been pretty weird to get this answered correctly. I agree init is the best but also that it will dissappear :D Lucky for us 32-bit is almost dead :-X – Rinzwind Jan 07 '16 at 17:56
  • In my Ubuntu 16.04 /sbin/init is a symbolic link to /lib/systemd/systemd. file /lib/systemd/systemd worked fine. – Katu Jun 17 '16 at 08:01
  • what if I get armv7l from uname -i? Is that 32 or 64 bit? – Lightsout Jun 22 '17 at 21:20
  • ARMv7 (and below) is 32-bit. ARMv8 introduces the 64-bit instruction set. – Rinzwind Jun 22 '17 at 21:33
  • I don't know if you want to add this or not, but if you pass the -L flag to file to make file follow symbolic links automatically--that is, run file -L /sbin/init--then it will work on all versions of Ubuntu. It will work whether or not /sbin/init is a symlink (and whether it's upstart or systemd). – Eliah Kagan Oct 14 '17 at 03:22
  • For Raspebrry Pi Zero W Raspbian Stretch method #1 returns: uname -a --> Linux raspberrypi 4.9.59+ #1047 Sun Oct 29 11:47:10 GMT 2017 armv6l GNU/Linux or uname -i --> unknown. Method #2 returns file /lib/systemd/systemd --> ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=8c1f19d39febf97f068d5e2726b345ad348030b6, stripped – Marecky Dec 22 '17 at 23:16
147

Ubuntu 12.04+ with Unity

  • Hit Command(mac) or Window key.
  • Type Details, and select "Details" icon
  • Read "OS type" field
  • 64 bit OS will read "64-bit"

enter image description here

Alternative to get the above screen:

  • click System Menu (gear at top right corner)
  • click "About this Computer"

I know the terminal responses are good but I guess this is the GUI answer. :)

Ubuntu 11.04 with Unity

  • Hit Command(mac) or Window key.
  • Type System info, and select System Info icon
  • Read "OS type" field
  • 64 bit OS will read "64-bit"
Frank Henard
  • 1,571
  • 15
    +1: The GUI way is preferred over terminal commands for a user that is used to Windows and specifically asked for an easy way. – MestreLion Mar 25 '13 at 11:01
  • 1
    Also, another (GUI) way to get to the same screen: System Menu (top right corner, near the clock) -> System Settings -> Details – MestreLion Mar 25 '13 at 11:25
  • With an easy way most definitely in mind: please, anyone running older Ubuntus, provide your GUI equivalent! Especially for Lucid Lynx (as the LTS is supported till 2015 and hence might well be running on people's hand-me-down laptops.) – J-P Jun 14 '13 at 18:56
  • 1
    @J-P: For older Ubuntus, such as Lucid Lynx, the easiest GUI way I know of is Gnome's System Monitor. Its System tab shows the architecture. – MestreLion Jun 30 '13 at 21:30
  • 1
    The GUI window is lovely, but imagine if you will for a minute if your running the server edition without the GUI installed? – chris Jan 14 '14 at 21:30
  • The GUI way is usually very nice but it's also very likely that in 1 or 2 years it won't work like that anymore. On the other hand the CLI way will likely still work after many years. Unfortunately the CLI way has a barrier to entry though. – ndemou Sep 04 '14 at 17:19
  • For 17.10 open "Settings" instead and choose Details in the left column. – Thorbjørn Ravn Andersen Nov 13 '17 at 12:01
100

A very easy and short way is:

Open the Terminal, write the following and press Enter.

getconf LONG_BIT

The resulting number (in my case 64) is the answer.

terminal - getconf LONG_BIT

  • 9
    On my 32 bit system, this gives the correct answer as well. Of all the command listed in various answers, the output of this one is the most straightforward. – Stephen Ostermiller May 05 '14 at 11:46
  • Except: $ getconf LONGBIT getconf: Unrecognised variable `LONGBIT' – Auspex Jan 07 '16 at 16:00
  • 1
    You're missing the underscore @Auspex LONG_BIT – Michael Feb 19 '16 at 21:41
  • @Michael Damn, so I was. I don't know how I managed that, and having upgraded those two machines to 64 bit in the past month, it's pretty much moot now ;-) Thanks, anyway! – Auspex Feb 20 '16 at 21:32
63

Reference: How Do I Know if I’m Running 32-bit or 64-bit Linux?

Use the command:

uname -m

You will typically get:

i686

for 32-bit (or possibly i586 or i386), and:

x86_64

for 64-bit.

karel
  • 114,770
30

Open terminal and try the arch command. If its output is x86_64 then it's 64 bit. If it says i686, i386, etc. then it's 32 bit.

However, the best way to determine the architecture is to run the arch command and google the output.

aneeshep
  • 30,321
  • 11
    arch is just the same as uname -m (even stated in the manpage). ;-) – htorque Nov 01 '10 at 14:05
  • On my computer (Ubuntu 9.04), the arch command doesn't seem to exist. So I'd say uname -m is more reliable. – Jonathan Sternberg Nov 01 '10 at 15:09
  • @JonathanSternberg: it was added a few months later, developed by the same authors of uname and included in the same coreutils package. So from Ubuntu 10.04 onwards both commands are available. – MestreLion Mar 25 '13 at 11:10
26

dpkg --print-architecture command will display whether you have installed a 32 bit or 64 bit Ubuntu OS.

On 64 bit systems

$ dpkg --print-architecture
amd64          

On 32 bit systems

$ dpkg --print-architecture
i386

`

Avinash Raj
  • 78,556
8

Architecture Checker

enter image description here

Download Link

  1. Download It
  2. Extract it.
  3. Mark the file Architecture Checker.sh Executable and run it.

The script is basically this:

#!/bin/bash
ARCH=$(uname -m)
if [ "$ARCH" = "i686" ]; then
 zenity --info --title="Architecture Checker" --text="Your Architecture is 32-Bit"
fi
if [ "$ARCH" = "x86_64" ]; then
 zenity --info --title="Architecture Checker" --text="Your Architecture is 64-Bit"
fi

This will need to be in a executable text file, and zenity will need to be installed.

Lincity
  • 25,371
  • 9
    Honestly need to download and extract that 8 line file? Just put it in a code block here. – kiri Oct 26 '13 at 09:10
  • and when the output of uname -m is not i686... nice use of zenity, could use notify-send though. – Wilf May 28 '14 at 17:45
6

Go to the System Settings and under the System section, hit Details. You will get every detail including your OS, your processor as well as the fact whether the system is running a 64-bit or a 32-bit version.

user265559
  • 61
  • 1
  • 1
  • That seems wonderful. But I don't know how to "Go to the System Settings". (BTW) I'm using 12.4 MATE. – Papou Aug 11 '17 at 13:50
3

Open the Ubuntu Software Center and search for lib32. If that turns up any results, you are on a 64-bit install (the results are compatibility libraries for running 32-bit applications on a 64-bit install).

Not exactly a better answer, but at least it doesn't require a terminal... ;-)

Edit

I found an even easier one: open Help -> About Mozilla Firefox and you will see it right there... ;-)

At the bottom it displays the "user agent string", e.g. on my 64-bit system:

Mozilla/5.0 (X11; U; Linux x86_64; nl; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

or on my 32-bit system:

Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

x86_64 is 64-bit, i686 is 32-bit

(But this is still not the answer that should be there ;) )

JanC
  • 19,422
  • 2
    Pure GUI, sure, but quite a fragile one... packages whose names (or descriptions) contain lib32 is surely not a reliable way of detecting architecture. – MestreLion Mar 25 '13 at 11:27
2

The power button (top-most, extreme right) has an "About this Computer" option. :)

Pepper
  • 29
2

You should take in mind that you may have a 64 bit CPU while you install a 32 bit kernel. I.e. If your CPU is 64 it doesn't mean that your OS is 64, it depends on what you've installed.

man uname

   -m, --machine
          print the machine hardware name

   -p, --processor
          print the processor type or "unknown"

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

so to get the hardware platform use uname -m or uname -p or uname -i while to get the kernel type it's better to getconf LONG_BIT command.

Check this SO question

Maythux
  • 84,289
  • Not actually relevant to the question: He has a 64 bit CPU and wants to know which OS got installed. – Auspex Jan 07 '16 at 16:05
1

As far as I can remember, it is possible to install x86_64 kernel on a 32-bit system. As a few wrote here, you should look what libraries you have/what packages you have installed on your system. So the safest way to see is to check if you have /lib64 and if it is a symlink to /lib.

Another possible way is to check what packages you have downloaded in /var/cache/apt/archive. If they contain _amd64.deb, it is a 64-bit system, that is, if you have installed packages and have not cleared your cache.

All of that can be done from Konqueror/Dolphin by just pointing and clicking or:

ls -la / |grep lib
Osis
  • 703
0

Have a look at your Software Sources in Synaptic or Software Centre. If you haven't deleted your original source eg cdrom, it will (?) indicate the architecture. It's a GUI but it won't say '32bit' nor '64bit'.

outofstep
  • 271
0

For debian derived systems.

On 64bits systems :

$ dpkg-architecture -q DEB_BUILD_ARCH
amd64

On 32bits systems :

$ dpkg-architecture -q DEB_BUILD_ARCH
i386
SebMa
  • 2,291
0

To get reliable information about the OS, i.e. if the software installed and running on the OS is 32-bit or 64-bit, only two ways are recommended (using the command line). These are:

dpkg --print-architecture

and especially

getconf LONG_BIT
TommyPeanuts
  • 1,079
-1

I am not sure what you call an OS being 32 bits.

To be specific, my kernel and desktop distribution is a 64 bits Debian/Sid, but I routinely use schroot to run a deboostrap-ed 32 bits Debian inside a chroot-ed environment (for testing purposes).

Do you feel that my 32 bits environment should be called 32 bits (I believe so) or 64 bits (after all, it does run inside a 64 bits kernel). In that environment uname -m says i686 and all libraries and executables and processes are 32 bits.

For practical purposes uname -m should be enough. The file command can tell you if an ELF executable is a 32 bits or a 64 bits one.

See the Linux specific personality(2) syscall (and also the uname(2) one).

And the hardware information about your processor is visible with e.g.

 cat /proc/cpuinfo

its output is the same in my desktop 64 bits system and in my 32 bits schroot-ed environment.

  • 4
    -1: you added a lot of unnecessary confusion without adding any useful new info. Why saying that you're "not sure what you call an OS being 32 bits"? That's a pretty straightforward question, one you know about. Your chroot example is pointless: it is similar to a Virtual Machine, so of course uname -m will output i686 if you bootstrapped it with a 32-bit OS. But the "host" is still 64 bits, and uname -m will say so if you run it outside the chroot environment – MestreLion Mar 25 '13 at 11:47
  • 2
    Also, /proc/cpuinfo is misleading: it shows the CPU capabilities, and not the actual installed (and running) OS architecture. Virtually all desktop CPUs sold in the last 5 years are 64-bit, but this has absolutely nothing to do with the question. And of course it reports the same in both scenarios, since your CPU hardware is the same, and it is capable of running both 32 and 64 bits OSes. – MestreLion Mar 25 '13 at 11:54
  • @MestreLion, What Basile is trying to say is that in some cases, for example when using LXC or chroot, you may run a purely 32bit system with a 64bit kernel. In these cases uname will tell you the kernel architecture, 64bit, while other methods will tell you the userland architecture, 32bit, and it's not clear which of the two is "the" architecture. – Joni Oct 02 '13 at 12:51
  • @Joni: Ok, I understand. But that's an extremely corner-case scenario, and surely not the OP's case. – MestreLion Oct 10 '13 at 09:06
  • Probably it's not the OP's case, I just wanted to clarify the point Basile was trying to make (Also, it looks like my earlier edit to correct the answer was rejected? In this environment uname -m will output the kernel's architecture which is x86_64, not i686.) – Joni Oct 10 '13 at 09:18