Я успешно запустил полный системный симулятор gem5 для x86.Я смонтировал образ следующим образом:
sudo mount -o loop,offset=32256 linux-x86.img tempdisk
и скопировал туда программу hello world.Затем я запустил симуляцию.Linux успешно загрузился.Я использовал telnet для проверки моделируемой системы.Мне удалось скомпилировать исходный код hello world, который я поместил на диск образа через симулированную систему, и он тоже успешно работает.
Затем я повторил то же самое для другого исходного файла C, который у меня был.Этот исходный код нуждается в следующем заголовке, и я получаю эту ошибку:
error: x86intrin.h: No such file or directory
Я пытался установить другие версии gcc.Я попробовал следующее, чтобы добавить общедоступный DNS Google для запуска apt-get:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt-get update
Однако команда apt-get
не работает.Я обнаружил, что образ Linux, предоставленный на веб-сайте gem5 для x86, был не Ubuntu, а следующим дистрибутивом:
Gentoo Base System release 1.12.11.1
ПоэтомуЯ использовал команду emerge
для обновления и установки других версий gcc, но она также не работала.
(none) / # emerge gcc-4.8
emerge gcc-4.8
!!! /etc/make.profile is not a symlink and will probably prevent most merges.
!!! It should point into a profile within /usr/portage/profiles/
!!! (You can safely ignore this message when syncing. It's harmless.)
Calculating dependencies -
!!! 'gcc-4.8' is not a valid package atom.
!!! Please check ebuild(5) for full details.
!!! (Did you specify a version but forget to prefix with '='?)
В конечном счете, я хочу запускать атаки по побочным каналам, такие как spectre
на полную систему gem5.В этих кодах используются такие инструкции, как rdtscp
и clflush
, для которых требуется заголовок x86intrin.h
.
Есть ли другой способ запустить мой код в полной системе симуляции gem5?Я выполнил шаги, объясненные здесь для x86, но в основном это были для Arm и Ubuntu.Попытка их для x86 привела меня к вышеупомянутым ошибкам.