- How to find all serial devices (ttyS, ttyUSB, ..) on Linux without opening them?
- Update
- How to List all Linux Disk Devices
- How to list disk devices in Linux with lsblk
- Lsblk, The column NAME:
- Lsblk, The column MAJ:MIN:
- Lsblk, The column RM:
- Lsblk, The column SIZE:
- Lsblk, The column RO:
- Lsblk, The column TYPE:
- Lsblk, The column MOUNTPOINT:
- How to show free and used space in Linux disk devices
- About the author
- David Adams
- Смотрим список дисков Linux
- Как посмотреть список дисков в Linux
- Посмотреть список дисков в GUI
- Выводы
- Information about the device files: /dev
- 2 Answers 2
How to find all serial devices (ttyS, ttyUSB, ..) on Linux without opening them?
What is the proper way to get a list of all available serial ports/devices on a Linux system? In other words, when I iterate over all devices in /dev/ , how do I tell which ones are serial ports in the classic way, that is, those usually supporting baud rates and RTS/CTS flow control? The solution would be coded in C. I ask because I am using a third-party library that does this clearly wrong: It appears to only iterate over /dev/ttyS* . The problem is that there are, for instance, serial ports over USB (provided by USB-RS232 adapters), and those are listed under /dev/ttyUSB*. And reading the Serial-HOWTO at Linux.org, I get the idea that there’ll be other name spaces as well, as time comes. So I need to find the official way to detect serial devices. The problem is that none appears to be documented, or I can’t find it. I imagine one way would be to open all files from /dev/tty* and call a specific ioctl() on them that is only available on serial devices. Would that be a good solution, though?
Update
hrickards suggested to look at the source for «setserial». Its code does exactly what I had in mind: First, it opens a device with:
fd = open (path, O_RDWR | O_NONBLOCK)
ioctl (fd, TIOCGSERIAL, &serinfo)
If that call returns no error, then it’s a serial device, apparently. I found similar code in Serial Programming/termios, which suggested to also add the O_NOCTTY option. There is one problem with this approach, though: When I tested this code on BSD Unix (that is, Mac OS X), it worked as well. However, serial devices that are provided through Bluetooth cause the system (driver) to try to connect to the Bluetooth device, which takes a while before it’ll return with a timeout error. This is caused by just opening the device. And I can imagine that similar things can happen on Linux as well — ideally, I should not need to open the device to figure out its type. I wonder if there’s also a way to invoke ioctl functions without an open, or open a device in a way that it does not cause connections to be made? What should I do?
How to List all Linux Disk Devices
How to list disk devices in Linux with lsblk
The proper way to list block devices such as hard disks is using the command lsblk.
Note: the -a flag forces lsblk to list also empty devices.
In the first column you can see all the connected devices, in the image above you can see 3 devices: sda, sdc and sdd. Lets see some information on each.
Lsblk, The column NAME:
The NAME column shows the name of each disk device and partition. As you can see in the extract of the column below the disk SDA contains 4 partitions: sda1, sda2, sda3 and sda4. You can ignore the “_crypt_” for now.
The second listed disk device is sdc with only one partition, sdc1.
The second listed disk device is sdd with only one partition, sdd1.
The last listed device is the DVD or CDROM:
Lsblk, The column MAJ:MIN:
Following the column NAME there is the column MAJ:MIN is the internal identificator for each device the kernel uses according to the device type.
Lsblk, The column RM:
The column RM shows if the device is removable (where 1 yes and 0 no), in this case last 2 disk are external and the last device is the DVD.
Lsblk, The column SIZE:
The column SIZE displays the size of each of the disk devices listed.
Lsblk, The column RO:
The column RO means Read Only, being 1 positive and 0 negative, if 0 then devices are not read only, if 1, they are read-only.
Lsblk, The column TYPE:
The column TYPE displays the type of device such as devices, partitions, optical devices, encrypted partitions and more.
Lsblk, The column MOUNTPOINT:
The column MOUNTPOINT shows the mount point of each device or partition, the next image shows the partitions of the device sda.
The screenshot below shows an efi partition belonging to sda1, the encrypted sda2 root partition, the sda3 for boot and an encrypted sda4 SWAP.
The flag -l will show the devices and partition as a list rather than as tree:
The flag -f instructs lsblk to inform the filesystem of each partition:
Additional flags for the command lsblk are available and explained in the man page which you can also access at https://linux.die.net/man/8/lsblk.
Listing disk devices in Linux with alternative methods: fdisk and fstab
While the correct way to list disk devices in Linux is using the command lsblk, other options are available.
The first one to try is fdisk, to list all block devices with fdisk run:
How to show free and used space in Linux disk devices
Additionally to listing your storage devices you may need to show the free and used space, this can be achieved using the command df.
As you see in the screenshot below, the availability of space of all disks formerly listed is now displayed.
The command df allows you to easily check each partition identified both by its device name or its mountpoint, yet, the -h option makes it easier to be readed by humans.
For example the image above shows the partition /dev/sda2_crypt which is the root mount point / has 150 GB available and 64 GB used.
About the author
David Adams
David Adams is a System Admin and writer that is focused on open source technologies, security software, and computer systems.
Смотрим список дисков Linux
Linux отображает подключённые жёсткие диски иначе, чем Windows. В операционной системе от Microsoft мы привыкли к тому, что у нас есть диск C, D, E, и нам не нужно задумываться о реальных именах разделов и жёстких дисков. Все диски размещены в проводнике и очень просто доступны.
В Linux такой возможности нет, как и нет такой абстракции. Диски и разделы именуются как есть, и вы будете иметь дело именно с этими именами. В этой статье мы разберём, как посмотреть список дисков Linux.
Как посмотреть список дисков в Linux
В Linux все отображается в файловом виде, в том числе и устройства. Все подключённые к операционной системе Linux устройства размещаются в каталоге /dev/ здесь вы найдете микрофоны, камеры, жёсткие диски, флешки, одним словом, все внешние и внутренние устройства.
Жёсткие диски имеют особенные названия. В зависимости от интерфейса, через который подключён жёсткий диск, название может начинаться на:
- sd — устройство, подключённое по SCSI;
- hd — устройство ATA;
- vd — виртуальное устройство;
- mmcblk — обозначаются флешки, подключённые через картридер;
В наше время большинство блочных устройств Linux подключаются через интерфейс SCSI. Сюда входят жёсткие диски, USB-флешки, даже ATA-диски теперь тоже подключаются к SCSI через специальный переходник. Поэтому в большинстве случаев вы будете иметь дело именно с дисками sd.
Третья буква в имени диска означает его порядковый номер в системе. Используется алфавитная система. Например sda — первый диск, sdb — второй диск, sdc — третий и так далее. Дальше следует цифра — это номер раздела на диске — sda1, sda2.
Самый простой способ увидеть все подключённые диски — это посмотреть содержимое каталога /dev/ и отфильтровать устройства sd:
Как видите, в моей системе сейчас есть только один диск и два раздела. Дальше мы можем посмотреть, куда примонтирован каждый из разделов:
Здесь, кроме дисков, будут отображаться различные специальные файловые системы: procfs, sysfs, tmpfs, cgroup и так далее. Однако все эти команды не помогут нам получить доступ к информации о дисках. Поэтому нам понадобится кое-что другое. Посмотреть подключённые диски с выводом информации о размере и свободном пространстве можно с помощью утилиты df:
Здесь отображается уже подробная информация. Но вы можете узнать ещё больше с помощью команды lsblk:
В этом случае список примонтированных дисков Linux включает ещё и информацию о точке монтирования, типе раздела (диск, раздел, привод) и его мажорном и минорном номере, по которым можно понять, что это за устройство. Если вам нужна информация о размере, то лучше использовать fdisk:
Это все утилиты, которыми вы можете воспользоваться, чтобы просмотреть список дисков Linux. Но есть ещё и графические утилиты.
Посмотреть список дисков в GUI
Во-первых, если к компьютеру подключено несколько дисков, то вы сможете их увидеть на левой панели файлового менеджера Nautilus или Dolphin. Там будет отображаться список подключенных устройств Linux, их метки и размер:
В Gnome есть программа Disks, которая позволяет настраивать поведение дисков, она же может отображать список подключенных устройств к системе. Вы можете найти её в главном меню:
Утилита отображает всю доступную информацию о дисках и разделах на них, вы можете даже посмотреть информацию о состоянии smart. Список дисков находится на панели слева, а справа разделы на этом диске:
Ещё одна утилита, которую вы можете использовать, чтобы посмотреть список жёстких дисков Linux — это Gparted. Это редактор разделов для Linux, но вы можете посмотреть подключнёные диски и структуру каждого из них. Раскрывающийся список вы найдёте в верхнем правом углу:
А в основной части окна программы отображается список разделов.
Выводы
В этой статье мы разобрали несколько способов посмотреть список примонтированных дисков Linux. Каждый из них может понадобиться в различных ситуациях. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Information about the device files: /dev
command lists the device files. How to know the associated drivers/major_numbers/minor_numbers with those device files?
2 Answers 2
ls -l /dev will give you the major and minor numbers, e.g.
crw-rw---- 1 root dialout 4, 64 Apr 4 07:54 /dev/ttyS0
has major number 4 and minor number 64.
Then you can look at /proc/devices to look up the major number. In this example we have a character device ( c at the start of the line) with major number 4 , and in /proc/modules we find
Character devices: . 4 tty 4 ttyS
Allocation of minor numbers is device-dependent.
Some devices are driven from core kernel code (e.g. tty ), whereas others are managed by loadable modules (e.g. rfcomm ). You could try looking in /proc/modules for a matching module; alternatively look in /proc/kallsyms for the module name. You’ll get lots of results, but the key thing to look for is the presence or absence of a string in square brackets. For example, grep tty /proc/kallsyms gives
0000000000000000 t tty_drivers_open 0000000000000000 t show_tty_range 0000000000000000 t show_tty_driver .
whereas grep rfcomm /proc/kallsyms gievs
0000000000000000 t rfcomm_apply_pn [rfcomm] 0000000000000000 t rfcomm_dlc_debugfs_open [rfcomm] 0000000000000000 t rfcomm_dlc_debugfs_show [rfcomm]
[rfcomm] indicates that the code is in the rfcomm module, whereas tty is in the kernel itself and not in a module, so nothing appears in square brackets.
This method is not definitive but should give you some idea as to where the controlling code lives.