Установка QNX 6
Безумный Иван
Акула пера
3/30/2010, 3:39:59 AM
Здравствуйте, господа!
Заинтересовался юниксоподобной операционной системой реального времени QNX.
Скачал загрузочный диск демо-версию, установил ее на виртуальную машину VMware. Для понимания всех процессов установки теперь решил установить ее на отдельный диск вручную, без загрузчика. Нашел в интернете информацию и следовал ей. Ссылку дать не могу, потому что там есть специализированный форум, на нем мой вопрос проигнорировали.
Вот как описан процесс установки вручную:
Может возникнуть ситуация, когда нужно установить QNX на компьютер без CD привода, или при отсутствии загрузочного CD с QNX 6.1, наконец: что-то при установке пошло не так, как описано выше. Не всё ещё потеряно, можно установить QNX и в этом случае. При такой установке нам предстоит вручную, командами QNX, подготовить раздел, а потом перенести в него уже существующую систему. Самое важное, что если мы умеем это делать, то мы сможем произвольно переносить свою систему в любое место, например, во flash диск DiskOnChip! Но этот тип установки только для настоящих мужчин, любящих поработать руками.
Итак, приступаем.
* Нам нужна некоторая исходная система QNX, но ни с CD, ни с дискеты нам её получить не удаётся. Установим систему в FAT раздел. Это, как правило, не обязательный этап чаще у нас будет потребность перенести уже существующую копию QNX на новый носитель, но, по крайней мере, таким образом можно легко получить стартовый экземпляр системы. Обычно, установка в раздел FAT происходит без каких либо проблем. Загружаем эту систему (все операции должны выполняться в системе QNX, не в DOS/Windows!).
* Создаём QNX раздел, для чего запустим программу fdisk (всё под именем пользователя root): #fdisk /dev/hd0
Это вид команды для 1-го IDE диска в системе (часто это Primary Master), для других, соответственно: /dev/hd1, /dev/hd2, /dev/hd3 Возможный вид (текстового) экрана вывода fdisk показан ниже. На представленном на рисунке диске нет собственных QNX-разделов, QNX в данном случае установлен в FAT, но видно 2 Linux-раздела (native и swap: в Linux-нотации они привычней как 0x82 и 0x83, но QNX fdisk показывает тип системы в десятичной нотации). Клавишами стрелки Up-Down на клавиатуре вы можете перемещаться между разделами диска, а Left-Right между операциями меню в верхней части экрана. Чем приятен fdisk от QNX (так же как и fdisk в Linux), так это то, что он не сделает изменений (не напортит) в разбивке диска до тех пор, пока вы не выполните операцию Save в меню. Экспериментируйте!
В рассматриваемом случае, вам необходимо выбрать неиспользуемый (неразмеченный) раздел диска (или удалить существующий - Delete) и выполнить из меню Change. Для разделов QNX предусмотрены 3 типа разделов: QNX 77, QNY 78, QNZ 79 (на одном физическом диске не могут одновременно присутствовать более одного QNX раздела с совпадающими типами). Интересно, что QNX 6.1 при стандартной установке с загрузочного CD создавал первичный раздел типа QNX (77), а QNX 6.2 создаёт QNZ (79). Но оставим это на совести QSSL, похоже, что это 3 полностью идентичные типа. Вам предстоит: Change определить тип неиспользуемого раздела; определить его границы (размер); Boot определить его как загрузочный; Save записать сделанные изменения в MBR.
Код:
FDISK
Ignore Next Prev 1 2 3 4 Change Delete Boot Unboot Restore Loader Save Quit
_____OS_____ Start End ______Number_____ Size Boot
name type Cylinder Cylinder Cylinders Blocks
--> 1. FAT32 ( 11) 0 194 195 3132612 1529 MB *
2. nonQNX (130) 580 596 17 273105 133 MB
3. nonQNX (131) 195 579 385 6185025 3020 MB
4. Extd'd ( 15) 597 1215 619 9944235 4855 MB
Choose a partition by typing the partition number OR moving the pointer
with the UP/DOWN arrows.
Then, choose one of the actions on the top line of the screen.
Drive : /dev/hd0 Config: 255 Heads
Size : 9538 Mbytes 63 Sectors/track
Loader: QNX 1216 Cylinders
512 Block Size
Перегружаем систему, чтобы сделанные изменения вступили в силу. После перезагрузки у вас в каталоге /dev появится устройство какого-то такого вида: hd0t79 (обратите внимание, что в каталоге примонтированных файловых систем /fs у вас всё ещё нет нового устройства диск не подготовлен). Созданный диск нужно подготовить: #dinit -h
После выполнения этой операции хорошо бы проверить подготовленный диск (операция может оказаться достаточно продолжительной):
#dcheck m /dev/hd0t79
Теперь диск подготовлен. Снова перезагрузка. Теперь в /fs появится новый диск, нечто типа /fs/qnx4-hd0t79, мы можем посмотреть его содержимое:
Код:
#ls /fs/qnx4-hd0t79
drwxrwxr-x 5 root adm 2048 Jun 29 2001 .
drwxrwxr-x 5 root adm 2048 Jun 29 2001 ..
-rw------- 1 root root 0 Aug 21 20:54 .altboot
-r--r--r-- 1 root root 307200 Aug 21 20:54 .bitmap
-rw------- 1 root root 0 Aug 21 20:54 .boot
-r--r--r-- 1 root root 142336 Aug 21 20:54 .inodes
Стандартных UNIX каталогов нет (да и откуда им пока взяться), обращает на себя внимание нулевой размер .boot и отсутствие .diskroot. К этой стадии завершено создание нового рабочего диска QNX, который вы можете примонтировать, например, в качестве /home (естественно, в таком качестве раздел не следует отмечать как загрузочный). Для получения системного диска нам осталось скопировать на него образ ядра системы, и поместить на него файл .diskroot, отмечающий файловую систему как корневую. Эти файлы мы можем взять с дискеты, которая создаётся в DOS программой qmakedsk.exe:
Код:
#mount /dev/fd0 /fs/fd
#mv -f /fs/fd/.boot /fs/qnx4-hd0t79
#mv -f /fs/fd/.diskroot /fs/qnx4-hd0t79
Минимально необходимые комментарии к этим операциям:
* не монтируйте дискету с типом DOS (часто используемый ключ t dos);
* вместо операции cp мы используем POSIX операцию mv во избежание Permission denied, связанного со специфическими атрибутами файлов;
Кажется всё Можно попробовать загрузиться (обратите внимание, что поскольку теперь у вас уже присутствует 2 альтернативных образа корневой файловой системы, OS просит по F1/F2 выбрать ту, с которой она будем работать). Но из этого ничего не получается: начинаетсначинается загрузка с нового раздела, но она завершается выводом последовательности до несколько сот символов . (нормальная загрузка сопровождается выводом ., но в количестве несколько десятков). Происходит это потому, что у нас уже создано загрузочное ядро системы, но нет типовой структуры UNIX файловой системы (/etc, /bin, /sbin, /lib, /opt и т.д.), некоторые файлы которой используются, в том числе, и на поздних стадиях загрузки. Поправим это дело, предварительно загрузившись со старого работоспособного экземпляра QNX (кстати, можете грузиться из нового образа, но по F2 указать старую корневую файловую систему очень поучительно):
#cd /
Копируем по-каталогам раздельно (к примеру, каталоги /dev, /fs, /net, /proc не подлежат копированию), например:
#cp -cR /bin /fs/qnx4-hd0t79/bin
. . . . и т.д.
В принципе, должно сработать и cp cR * /fs/qnx4-hd0t79 (благодаря ключу -R), но это уже для самостоятельной проработки. Всё, вот теперь можно перезагружаться с вновь созданной системы (и, возможно, уничтожить старый её экземпляр, установленный в FAT).
Примечание: В п.3 мы могли бы инициализировать раздел одновременно с созданием в нём образа системы .boot, и тем самым упростить себе последующую жизнь. Делается это такой командой: dinit -hf /fs/fd/.boot при этом, конечно, дискета должна быть уже предварительно смонтирована, как мы это делали в п.4. Но я изложил последовательный путь по шагам, который даёт больше для понимания.
Примечание: Выше было написано уничтожить старый её экземпляр, установленный в FAT - естественно, предполагалось не физическое уничтожение каталога D:/Program Files/qnx, а деинсталляцию по правилам Windows. Но есть ещё одна интересная возможность (иногда, полезная практически, но ещё более для понимания происходящего). Установим загрузку с раздела Windows, с config-меню выбора OS и т.д. При загруженном экземпляре QNX, установленном в FAT32, удалим файл .diskroot в корне её файловой системы. Перезагружаемся образ ядра системы QNX qnxbase.ifs при загрузке перестаёт видеть корневую систему на своём FAT32 разделе и без запроса выбора монтирует файловую систему на разделе QNX. Что мы получили OS, со всеми преимуществами установки в раздел QNX, может быть запускаема из стартового меню Windows.
Я монтировал новый диск из запущенной операционной системы виртуальной машины. Дошел до места, когда надо перекопировать все каталоги на диск. Вот что пишется в описании:
#cd /
Копируем по-каталогам раздельно (к примеру, каталоги /dev, /fs, /net, /proc не подлежат копированию), например:
#cp -cR /bin /fs/qnx4-hd0t79/bin
Скопировал все каталоги кроме тех, которые не копируются. Но ведь каталог /dev содержит информацию о железе компа. А он не подлежит копированию. Пробовал загрузиться с нового диска, в процессе загрузки идет проверка железа и комп виснит. Я думаю потому что каталогов не хватает. Может в описании установки что-то упущено? Помогите пожалуйста.
Заинтересовался юниксоподобной операционной системой реального времени QNX.
Скачал загрузочный диск демо-версию, установил ее на виртуальную машину VMware. Для понимания всех процессов установки теперь решил установить ее на отдельный диск вручную, без загрузчика. Нашел в интернете информацию и следовал ей. Ссылку дать не могу, потому что там есть специализированный форум, на нем мой вопрос проигнорировали.
Вот как описан процесс установки вручную:
скрытый текст
Может возникнуть ситуация, когда нужно установить QNX на компьютер без CD привода, или при отсутствии загрузочного CD с QNX 6.1, наконец: что-то при установке пошло не так, как описано выше. Не всё ещё потеряно, можно установить QNX и в этом случае. При такой установке нам предстоит вручную, командами QNX, подготовить раздел, а потом перенести в него уже существующую систему. Самое важное, что если мы умеем это делать, то мы сможем произвольно переносить свою систему в любое место, например, во flash диск DiskOnChip! Но этот тип установки только для настоящих мужчин, любящих поработать руками.
Итак, приступаем.
* Нам нужна некоторая исходная система QNX, но ни с CD, ни с дискеты нам её получить не удаётся. Установим систему в FAT раздел. Это, как правило, не обязательный этап чаще у нас будет потребность перенести уже существующую копию QNX на новый носитель, но, по крайней мере, таким образом можно легко получить стартовый экземпляр системы. Обычно, установка в раздел FAT происходит без каких либо проблем. Загружаем эту систему (все операции должны выполняться в системе QNX, не в DOS/Windows!).
* Создаём QNX раздел, для чего запустим программу fdisk (всё под именем пользователя root): #fdisk /dev/hd0
Это вид команды для 1-го IDE диска в системе (часто это Primary Master), для других, соответственно: /dev/hd1, /dev/hd2, /dev/hd3 Возможный вид (текстового) экрана вывода fdisk показан ниже. На представленном на рисунке диске нет собственных QNX-разделов, QNX в данном случае установлен в FAT, но видно 2 Linux-раздела (native и swap: в Linux-нотации они привычней как 0x82 и 0x83, но QNX fdisk показывает тип системы в десятичной нотации). Клавишами стрелки Up-Down на клавиатуре вы можете перемещаться между разделами диска, а Left-Right между операциями меню в верхней части экрана. Чем приятен fdisk от QNX (так же как и fdisk в Linux), так это то, что он не сделает изменений (не напортит) в разбивке диска до тех пор, пока вы не выполните операцию Save в меню. Экспериментируйте!
В рассматриваемом случае, вам необходимо выбрать неиспользуемый (неразмеченный) раздел диска (или удалить существующий - Delete) и выполнить из меню Change. Для разделов QNX предусмотрены 3 типа разделов: QNX 77, QNY 78, QNZ 79 (на одном физическом диске не могут одновременно присутствовать более одного QNX раздела с совпадающими типами). Интересно, что QNX 6.1 при стандартной установке с загрузочного CD создавал первичный раздел типа QNX (77), а QNX 6.2 создаёт QNZ (79). Но оставим это на совести QSSL, похоже, что это 3 полностью идентичные типа. Вам предстоит: Change определить тип неиспользуемого раздела; определить его границы (размер); Boot определить его как загрузочный; Save записать сделанные изменения в MBR.
Код:
FDISK
Ignore Next Prev 1 2 3 4 Change Delete Boot Unboot Restore Loader Save Quit
_____OS_____ Start End ______Number_____ Size Boot
name type Cylinder Cylinder Cylinders Blocks
--> 1. FAT32 ( 11) 0 194 195 3132612 1529 MB *
2. nonQNX (130) 580 596 17 273105 133 MB
3. nonQNX (131) 195 579 385 6185025 3020 MB
4. Extd'd ( 15) 597 1215 619 9944235 4855 MB
Choose a partition by typing the partition number OR moving the pointer
with the UP/DOWN arrows.
Then, choose one of the actions on the top line of the screen.
Drive : /dev/hd0 Config: 255 Heads
Size : 9538 Mbytes 63 Sectors/track
Loader: QNX 1216 Cylinders
512 Block Size
Перегружаем систему, чтобы сделанные изменения вступили в силу. После перезагрузки у вас в каталоге /dev появится устройство какого-то такого вида: hd0t79 (обратите внимание, что в каталоге примонтированных файловых систем /fs у вас всё ещё нет нового устройства диск не подготовлен). Созданный диск нужно подготовить: #dinit -h
После выполнения этой операции хорошо бы проверить подготовленный диск (операция может оказаться достаточно продолжительной):
#dcheck m /dev/hd0t79
Теперь диск подготовлен. Снова перезагрузка. Теперь в /fs появится новый диск, нечто типа /fs/qnx4-hd0t79, мы можем посмотреть его содержимое:
Код:
#ls /fs/qnx4-hd0t79
drwxrwxr-x 5 root adm 2048 Jun 29 2001 .
drwxrwxr-x 5 root adm 2048 Jun 29 2001 ..
-rw------- 1 root root 0 Aug 21 20:54 .altboot
-r--r--r-- 1 root root 307200 Aug 21 20:54 .bitmap
-rw------- 1 root root 0 Aug 21 20:54 .boot
-r--r--r-- 1 root root 142336 Aug 21 20:54 .inodes
Стандартных UNIX каталогов нет (да и откуда им пока взяться), обращает на себя внимание нулевой размер .boot и отсутствие .diskroot. К этой стадии завершено создание нового рабочего диска QNX, который вы можете примонтировать, например, в качестве /home (естественно, в таком качестве раздел не следует отмечать как загрузочный). Для получения системного диска нам осталось скопировать на него образ ядра системы, и поместить на него файл .diskroot, отмечающий файловую систему как корневую. Эти файлы мы можем взять с дискеты, которая создаётся в DOS программой qmakedsk.exe:
Код:
#mount /dev/fd0 /fs/fd
#mv -f /fs/fd/.boot /fs/qnx4-hd0t79
#mv -f /fs/fd/.diskroot /fs/qnx4-hd0t79
Минимально необходимые комментарии к этим операциям:
* не монтируйте дискету с типом DOS (часто используемый ключ t dos);
* вместо операции cp мы используем POSIX операцию mv во избежание Permission denied, связанного со специфическими атрибутами файлов;
Кажется всё Можно попробовать загрузиться (обратите внимание, что поскольку теперь у вас уже присутствует 2 альтернативных образа корневой файловой системы, OS просит по F1/F2 выбрать ту, с которой она будем работать). Но из этого ничего не получается: начинаетсначинается загрузка с нового раздела, но она завершается выводом последовательности до несколько сот символов . (нормальная загрузка сопровождается выводом ., но в количестве несколько десятков). Происходит это потому, что у нас уже создано загрузочное ядро системы, но нет типовой структуры UNIX файловой системы (/etc, /bin, /sbin, /lib, /opt и т.д.), некоторые файлы которой используются, в том числе, и на поздних стадиях загрузки. Поправим это дело, предварительно загрузившись со старого работоспособного экземпляра QNX (кстати, можете грузиться из нового образа, но по F2 указать старую корневую файловую систему очень поучительно):
#cd /
Копируем по-каталогам раздельно (к примеру, каталоги /dev, /fs, /net, /proc не подлежат копированию), например:
#cp -cR /bin /fs/qnx4-hd0t79/bin
. . . . и т.д.
В принципе, должно сработать и cp cR * /fs/qnx4-hd0t79 (благодаря ключу -R), но это уже для самостоятельной проработки. Всё, вот теперь можно перезагружаться с вновь созданной системы (и, возможно, уничтожить старый её экземпляр, установленный в FAT).
Примечание: В п.3 мы могли бы инициализировать раздел одновременно с созданием в нём образа системы .boot, и тем самым упростить себе последующую жизнь. Делается это такой командой: dinit -hf /fs/fd/.boot при этом, конечно, дискета должна быть уже предварительно смонтирована, как мы это делали в п.4. Но я изложил последовательный путь по шагам, который даёт больше для понимания.
Примечание: Выше было написано уничтожить старый её экземпляр, установленный в FAT - естественно, предполагалось не физическое уничтожение каталога D:/Program Files/qnx, а деинсталляцию по правилам Windows. Но есть ещё одна интересная возможность (иногда, полезная практически, но ещё более для понимания происходящего). Установим загрузку с раздела Windows, с config-меню выбора OS и т.д. При загруженном экземпляре QNX, установленном в FAT32, удалим файл .diskroot в корне её файловой системы. Перезагружаемся образ ядра системы QNX qnxbase.ifs при загрузке перестаёт видеть корневую систему на своём FAT32 разделе и без запроса выбора монтирует файловую систему на разделе QNX. Что мы получили OS, со всеми преимуществами установки в раздел QNX, может быть запускаема из стартового меню Windows.
Я монтировал новый диск из запущенной операционной системы виртуальной машины. Дошел до места, когда надо перекопировать все каталоги на диск. Вот что пишется в описании:
#cd /
Копируем по-каталогам раздельно (к примеру, каталоги /dev, /fs, /net, /proc не подлежат копированию), например:
#cp -cR /bin /fs/qnx4-hd0t79/bin
Скопировал все каталоги кроме тех, которые не копируются. Но ведь каталог /dev содержит информацию о железе компа. А он не подлежит копированию. Пробовал загрузиться с нового диска, в процессе загрузки идет проверка железа и комп виснит. Я думаю потому что каталогов не хватает. Может в описании установки что-то упущено? Помогите пожалуйста.
.:Captain:.
Мастер
4/13/2010, 11:20:54 PM
попробуй через SUDO, например 'sudo cp -cR /bin /fs/qnx4-hd0t79/bin'