OSDev
http://osdev.su/

Ubuntu Linux
http://osdev.su/viewtopic.php?f=12&t=1460
Страница 2 из 2

Автор:  Himik [ 16 июн 2018, 16:24 ]
Заголовок сообщения:  Re: Ubuntu Linux

* В 64-х битной версии Ubuntu 18.4 обнаружился установочный пакет Binutils для сборки 32-битных программ:
Код:
sudo apt install binutils-i686-linux-gnu

Появился также и GCC
Код:
sudo apt install gcc-i686-linux-gnu
sudo apt install g++-i686-linux-gnu

Я попробовал компилировать свои программы с помощью этого g++-i686-linux-gnu, возникают ошибки. Пришлось его удалять и самому собирать GCC из исходников - ошибки пропали.

* Открыть файловый менеджер с правами администратора - sudo nautilus

Автор:  Himik [ 22 июн 2018, 23:10 ]
Заголовок сообщения:  Re: Ubuntu Linux

Теперь у меня на жёстком диске разделы GPT, Windows и Ubuntu в режиме EFI. Чтобы иногда запускать системы с MBR разделов без EFI, понадобилось установить второй жёсткий диск, и загружаться конкретно с него, выбирая в BIOS-е этот диск горячей клавишей F12.
Установить GRUB на второй диск с помощью Ubuntu оказалось нетрудно.
- Загружаем в Ubuntu установочные файлы GRUB для режима i386 BIOS
Код:
sudo apt install grub-pc-bin
Файлы загружаются в директорию /usr/lib/grub/i386-pc
Потом готовим диск для установки.
- Создаём новый раздел с атрибутом "Активный", значит загрузочный.
- Примонтируем созданный раздел.
- Создаём в нём пустую директорию boot, потом запускаем
Код:
sudo grub-install -v --target=i386-pc --boot-directory=/media/himik/EOS/boot /dev/sdb
Параметр -v не обязателен, просто выводит на экран множество служебной информации.
/media/himik/EOS - это путь примонтированного раздела, а /dev/sdb - дисковое устройство.
- Копируем файл настроек grub.cfg в папку boot\grub

Важно, чтобы в имени дискового устройства небыло цифры на конце, типа sda1 или sdb2. Цифру из имени просто сотрите.
В некоторых случаях, особенно при установке на внешние носители, флешки, установщику не нравится раздел диска и останавливается с ошибкой, тогда в строку добавляем параметр --force

Автор:  Himik [ 23 июл 2018, 21:11 ]
Заголовок сообщения:  Re: Ubuntu Linux

Переключение языка клавиатуры: Левый + Правый Shift,
или Alt + Shift.
Это не отображено в настройках клавиатуры, там программируется дополнительная клавиша переключения, а эти работают "железно".
... в версии 19.04 уже не работают.

Автор:  SII [ 23 июл 2018, 23:57 ]
Заголовок сообщения:  Re: Ubuntu Linux

Himik писал(а):
Переключение языка клавиатуры: Левый + Правый Shift,
или Alt + Shift.
Это не отображено в настройках клавиатуры, там программируется дополнительная клавиша переключения, а эти работают "железно".


Двумя шифтами -- ранняя официально русская DOS (в 4.хх точно был этот способ). Альт-Шифт -- по умолчанию в Винде. А Контрол-Шифт не позволяет (альтернативная в Винде; я, например, её использую -- удобней).

Автор:  poly [ 24 июл 2018, 16:05 ]
Заголовок сообщения:  Re: Ubuntu Linux

В современной Винде Альт-Шифт переключает между языками, а Контрол-Шифт между раскладками для одного языка. Например, между машинописью и ЯВЕРТЫ для русского, или между QWERTY и Двораком для английского.
Виндовс(Супер)-Пробел - сквозной проход по всему списку раскладок и языков.

Автор:  SII [ 24 июл 2018, 17:01 ]
Заголовок сообщения:  Re: Ubuntu Linux

В современной Винде это настраивается.

Автор:  Himik [ 22 окт 2018, 23:18 ]
Заголовок сообщения:  Re: Ubuntu Linux

Есть способ, как запустив систему в VirtualBox, увидеть содержимое регистров процессора в любой точке программы.
* В нужной точке программы делаем зацикливание, типа for(;;){} или asm hlt чтобы процессор здесь остановился.
* Запускаем систему в VirtualBox, ждём пока программа дойдёт до точки останова.
* Выключаем виртуальную машину.
* На имени этой машины нажимаем правой кнопкой мыши, в контекстном меню открываем "Показать журнал".
* Пролистываем журнал до раздела ****************** Guest state at power off for VCpu 0 ******************

Автор:  Himik [ 15 май 2020, 20:33 ]
Заголовок сообщения:  Re: Ubuntu Linux

Как компилировать 32-битный код в 64-битном Ubuntu и получить чистый код.
В прошлый раз у меня не получалось собирать 32-битные модули с помощью штатного пакета, мешали разного рода ошибки компиляции и бинарный код с кучей лишнего мусора. Теперь для сборки всего проекта я могу использовать только готовые пакеты Ubuntu как говорится "из коробки", свои собирать не надо.
Для языка C устанавливаем компилятор
Код:
sudo apt install gcc-i686-linux-gnu

Для языка C++ устанавливаем компилятор
Код:
sudo apt install g++-i686-linux-gnu

В параметрах компилятора нужно использовать набор дополнительных ключей. В дополнение к "общеизвестным" параметрам, добавляем
Код:
-fno-PIC
-fno-stack-clash-protection
-fcf-protection=none
(эти параметры полезны и для 64-битного кода)

В линковщике вместо ключа -Ttext=0x12345678 для указания адреса модуля, теперь указываем -Ttext-segment=0x12345678
Ключ --omagic минимизирует шаг выравнивания процедур и данных.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/