Вход/Регистрация
Программирование для Linux. Профессиональный подход
вернуться

Самьюэл Алекс

Шрифт:

целочисленной переменной. */

 next_random_byte = (char*)&random_value;

 bytes_to_read = sizeof(random_value);

 /* Цикл выполняется до тех пор, пока не будет прочитано

требуемое количество байтов. Поскольку файл /dev/random

заполняется в результате пользовательских действий,

при длительном отсутствии активности операция чтения

может быть заблокирована или возвращать

лишь один байт за раз. */

 do {

int bytes_read;

bytes_read =

read(dev_random_fd, next_random_byte, bytes_to_read);

bytes_to_read -= bytes_read;

next_random_byte += bytes_read;

 } while (bytes_to_read > 0);

 /* Вычисляем случайное число в правильном диапазоне. */

 return min + (random_value % (max - min + 1));

}

6.5.5. Устройства обратной связи

Устройство обратной связи позволяет сымитировать блочное устройство с помощью обычного дискового файла. Представьте жесткий диск, в котором данные находятся не в дорожках и секторах, а в файле с именем

disk-image
(естественно, сам этот файл должен размещаться на реальном диске, размер которого больше имитируемого).

Устройства обратной связи называются

/dev/loop0
,
/dev/loop1
и т.д. Каждому из них соответствует одно виртуальное блочное устройство. Создавать такие устройства может только суперпользователь.

Устройство обратной связи используется так же, как и любое другое блочное устройство. В частности, на нем можно создать файловую систему и смонтировать ее подобно файловой системе обычного диска или раздела. Такая файловая система, целиком размещаемая в дисковом файле, называется виртуальной файловой системой (ВФС).

Ниже описана последовательность действий, которые необходимо выполнить, чтобы создать виртуальную файловую систему и смонтировать ее на устройстве обратной связи.

1. Создайте пустой файл, который будет содержать образ ВФС. Размер файла должен соответствовать видимому размеру виртуальной файловой системы после ее монтирования.

Проще всего создать файл фиксированного размера с помощью команды

dd
. Эта команда копирует блоки (по умолчанию каждый из них имеет размер 512 байтов) из одного файла в другой. Лучший источник байтов для копирования — устройство
/dev/zero
.

Файл

disk-image
размером 10 Мбайт создается следующим образом:

% dd if=/dev/zero of=/trap/disk-image count=20480

20480+0 records in

20480+0 records out

% ls -l /tmp/disk-image

– rw-rw---- 1 root root 10485760 Mar 8 01:56 /trap/disk-image

2. Только что созданный файл заполнен нулевыми байтами. Теперь следует сформировать в нем файловую систему. При этом будут созданы управляющие структуры, предназначенные для организации и хранения файлов, и корневой каталог.

Файловая система может иметь любой тип. Команда

mke2fs
создает файловую систему типа
ext2
(чаще всего используется в жестких дисках Linux-систем). Поскольку команда обычно работает с блочными устройствами, она потребует подтверждение:

% mke2fs -q /tmp/disk-image

mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09

disk-image is not a block special device.

Proceed anyway? (y,n) y

Опция

– q
подавляет вывод статистики файловой системы.

Теперь файл

disk-image
содержит новую файловую систему, как если бы это был жесткий диск емкостью 10 Мбайт.

3. Смонтируйте файловую систему с использованием устройства обратной связи. Для этого введите команду

mount
, указав файл образа диска в качестве устройства монтирования. Необходимо также задать опцию
– о loop=устройство_обратной_связи
. Ниже показаны команды, которые это делают. Помните, что только суперпользователь может работать с устройством обратной связи. Первая команда создает каталог
/tmp/virtual-fs
, который станет точкой монтирования ВФС.

  • Читать дальше
  • 1
  • ...
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: