Откуда берётся стек в программе выполняющейся без ОС (загрузчике ОС, например)?
Насколько я себе представляю, его нужно создавать самому. Или есть какая-то магия gcc?
Пример из практики, код NetBSD.
int stack[8192/4 + 4] __attribute__((__aligned__ (4), __used__));
А в соседнем файле,
int devopen() {
...
/* allow disk blocks up to 65536 bytes */
char buf[65536];
Локальный массив, по стандарту, создаётся на стеке. Но стека-то столько нет. В результате, у меня buf наползает на код. И как только что-то большое записывается в buf - наступает конец. Однако, есть куча сообщений в сети, что этот код работает. Но, чёрт побери, как?
Имеется большой проект, в котором частенько чего-нибудь ломают. Пишу в своей локальной ветке модуль для этого проекта, который, соответственно, не работает, если в основном проекте что-то сломали.
Процедура поиска бага выглядит таким образом:
git bisect
(увидеть номер тестируемой версии)
git checkout my_branch
git checkout -b testing
git rebase my_branch (тестируемая версия)
(проверить, работает ли)
git branch -d testing
git checkout (тестируемая версия)
git bisect good/bad
(и т.д)
Имеется домашний сервер с Linux'ом и белым ip. Что нужно разрешить в iptables, чтобы ноутбук с Cisco AnyConnect, подключненный через домашний сервер, мог соединяться?
Думал, что из домашней сети форвардится вообще весь трафик. Но что-то AnyConnect'у не нравится - не может начать сессию. Забавный момент, что если открыть сессию не через домашний сервер, а через телефон, потом можно переключиться на домашний сервер и VPN продолжает работать.
Текущие правила iptables для FORWARD:
:PREROUTING ACCEPT [3848:186272]
:POSTROUTING ACCEPT [873:48418]
:OUTPUT ACCEPT [1279:69120]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
-A FORWARD -d 192.246.40.244 -j DROP
-A FORWARD -i eth0 -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o ppp0 -j DROP
Разве "-A FORWARD -i eth0 -o ppp0 -j ACCEPT" - без указания протокола, не разрешает перенаправлять вообще всё? Или для UDP нужно отдельное правило?
Поскольку, на главной мало дефолтных скриншотов с Wheezy, вот, решил восполнить этот недостаток.
Первично, собирался сделать скриншот с третьим Гномом и подвохом, но третий гном захотел ~800М всяких пакетов, большая часть из которых мне тут никогда не потребуется, и я решил сэкономить место на 4х гиговом винте. Количество пакетов, необходимых Гному, так меня поразило, что я решил запечатлеть это на скриншоте (всё к сожалению не уместилось) для дальнейшего обсуждения.
Итак, на скриншоте, свежеустановленный Wheezy. Видно даже DVD, с которого устанавливался. Ещё видно кусок окна с выводом dmesg и cat /proc/cpuinfo .
А теперь - вопрос :-). Угадайте, на что этот Wheezy установлен.
Первые 5 правильно угадавших смогут получить от меня (самозабором) систему, в которую воткнут DVD со скриншота.
После трёх месяцев активной разработки вышла в свет очередная версия QEMU — популярной виртуальной машины, реализующей полную эмуляцию более десятка архитектур и виртуализацию некоторых из них.
Неполный список изменений:
KVM на платформе ARM, обеспечивающий виртуализацию.
Поддержка локализации в пользовательском интерфейсе на базе GTK+.
Улучшение производительности кодогенератора TCG на хостах с ОС Windows.
Поддержка горячего подключения для CPU и Character device.
Новые устройства — WMWare PVSCSI, VMXNET3.
Поддержка чтения файлов VHDX.
Экспериментальная поддержка для проброса видеоадаптеров VGA через VFIO.
Поддержка загрузки с устройств virtio-ccw в эмуляции s390x.
Улучшения работы с прерываниями в эмуляции SPARC-64 (sun4u), позволяющие стабильно использовать несколько устройств PCI (в т.ч. virtio).
После шести месяцев активной разработки вышла в свет очередная версия QEMU — популярной виртуальной машины, реализующей полную эмуляцию более десятка архитектур. В числе прочего:
поддержка мостов PCI-to-PCI;
поддержка горячего подключения устройств PCI;
эмуляция ARM: добавлены платформы nuri, smbkc210, highbank, vexpress-a15;
удалена поддержка Symbian Virtual Platform;
эмуляция PPC: поддержка устройств virtio в -M pseries;
эмуляция SPARC: добавлена возможность загрузки Linux/sparc64;
эмуляция новых устройств: virtio-scsi, USB 3.0 (xHCI);
новый сетевой мост, не требующий привилегий суперпользователя для основного процесса QEMU;
Есть закрытый драйвер (ELF для Солярис/спарк, но это скорее всего, не принципиально), содержащий примерно такой код:
static struct type_a struct1 = {
1,
func1_from_other_module,
static_func2,
};
static struct type_b struct2 = {
/* Тут тоже полно ссылок на локальные и внешние фукции */
};
Как посредством objcopy (или ещё чего) сделать что-нибудь из следующего:
поменять в struct1 ссылку static_func2 на func2_from_other_module ?
зарезервировать место между struct1 и struct2 ?
или перенести struct1 в конец файла (и обновить ссылки на неё)?
Второй-третий пункт опциональны. Просто, в новой версии соляры, type_a cущественно расширился, и теперь структуры наползают друг на друга. К счастью, пожертвовав некоторой функциональностью на это забить, но лучше сделать всё чисто.
После шести месяцев активной разработки вышла в свет очередная версия QEMU - популярной виртуальной машины, реализующей полную эмуляцию более десятка архитектур.
В числе прочего:
Добавлена возможность эмуляции новых архитектур: Lattice Mico32 и UniCore32.
Эмуляция ARM: новые модели express-a9 и Sharp Zaurus SL-5500
Эмуляция SPARC32: новая версия OpenBIOS, позволяющая загружать Солярис 7 и 8.
Улучшения эмуляции SPARC64 сделали возможной загрузку HelenOS.
Улучшения в эмуляции Linux-User позволяют запускать бинарники Linux/SPARC64, S390x и UniCore32
KVM теперь поддерживает процессоры VIA и процессоры с SMEP (Supervisor Mode Execution Protection)
Множество улучшений в различных подсистемах.
Данный релиз является продуктом почти 150 контрибуторов и содержит более полутора тысяч коммитов.
Вышла в свет первая версия COREMU - эмулятора, основанного на qemu, но осуществляющего концепцию «многоядерный гость на многоядерном хосте» («multicore-on-multicore»).
Это очень важное преимущество перед qemu, поскольку последний осуществляет эмуляцию в одном потоке и, как следствие, не может использовать многоядерность/многопроцессорность машины, загружая только одно ядро или процессор.
На настоящий момент COREMU может эмулировать до 255 ядер x86-64 и до четырёх ядер ARM MPcore на обычном ПК с четырёхъядерным процессором.
После трёх лет разработки Мэт Фредетт (Matt Fredette) выпустил версию 0.8 эмулятора tme. Tme (The Machine Emulator) эмулирует машины, которые выпускались фирмой Sun.
Самым важным нововведением явилась эмуляция 64-битных процессоров SPARC и машины с архитектурой sun4u, а именно Ultra-1.
На настоящий момент tme 0.8 эмулирует следующие платформы: sun2, sun3, sun4c и sun4u.
В списке других улучшений - эмуляция графического адаптера cg6. (Предыдущая версия умела только cg3).
P.S. К сожалению, OpenSolaris не поддерживает машины Ultra-1. Но для желающих попробовать спарковскую версию в эмуляторе есть Martux (http://www.martux.org/) - неофициальный дистрибутив OpenSolaris с поддержкой старых Ультраспраков.
Добрался я до момента, когда солярис/спарк в эмуляторе уже начинает грузиться и даже грузит boot block. Но этот boot block почему-то не находит следующую фазу загрузки - ufsboot.
Одно время сан давал исходники всем купившим 8ку или 9ку. Они их до сих пор продают учебным заведениям за символическую цену. Ни у кого не завалялось?
Посмотреть бы, как бут-блок работает. Там в принципе 8 килобайт всего, когда-нибудь и дебаггером расковыряю, но вдруг у кого на полке лежат...
Ищу имиджи ПЗУ (OpenBoot) от машинок архитектуры sun4m (sun4u тоже может пригодиться на будущее).
Мне это надо для доведения qemu до состояния, когда он сможет запускать солярис.
Покамест удалось найти имиджи от SparcStation-10 и 20. К сожалению обе эти машинки очень слабо эмулируются qemu, так что пока прогресс нулевой.
Особенно сильно разыскиваются имиджи от SS-5, поскольку её железо лучше всего поддерживается на настоящий момент. Но если у кого завалялись ПЗУ или имиджи от LC, LX или Sun-4/6x0 - буду премного благодарен.
Или может, кто знает Forth и FCode? Есть небольшая функция (определающая объём присутсвующей памяти), которую надо отладить. Подозреваю, что для спеца по FCode - это 5 минут, но среди разработчиков qemu таких, к сожалению, нет.
Пытаюсь запустить solaris/sparc под qemu, как оказалось с opensolaris он не дружит, потому что не умеет толком 64 бита. Перерыл всю рапиду, нигде не могу найти загрузочную-установочную дискету для solaris/sparc 8-9. Ни у кого в загашнике нет, случаем?
В январе 2002 года компания Caldera International, Inc. опубликовала исходный код UNIX Version 7 (известный также под названием V7), который был был выпущен в 1979 году компанией Bell Laboratories и, по-существу, являлся первым портабельным юниксом.
Недавно компания Nordier & Associates портировала V7 на процессоры c архитектрурой x86. В релиз, распространяемый под лицензией BSD, входят компилятор С, основанный на Amsterdam Compiler Kit (ACK), C-Shell, утилита more, а также редакторы ex и vi.
Хочу добавить опцию umask=000, чтобы любой пользователь мог читать/писать в любой, смонтированный кем-угодно, фатовский усб-диск/флешку. Но не могу найти, куда это добавлять. В fstab - как-то глупо, поскольку и названия и имена девайсов могут быть разными.
Где dbus/hal хранят опции монтирования разных фс? Чёта меня на гугле забанили.
Кто пользуется встроеным аудио на интеловских чипсетах? Что про него можно сказать хорошего и не очень?
Я так понимаю, что там нет аппаратного микшера, поэтому надо пользоваться софтовыми надстройками? Кто какими пользуется? Попробовал pulseaudio , как-то оно глючит неподетски, и хуже всего, что когда зависает, вернуть звук пользователю можно только перезагрузкой системы, банальный killall pulseaudio && pulseaudio -D не помогают.
Думаю выкинуть pulseaudio, но непонятно, чем микшировать в этом случае. Есть success stories?
Или же объявить интеловскую карту лажей и поставить старый добрый SB live с аппаратным микшированием? Я ей был вцелом доволен, но там 5.1 звук странно регулировался: убавляешь PCM, действительно убавляются передние колонки, но вместе с тем добавляется сабвуфер.
У кого-нибудь pulseaudio нормально работает? У меня с интеловским встроеным звуком оно работает через раз. Причем может от одного пользователя, залогиненого через su работать, а от основного - нет. mplayer говорит:
А можно ли настроить Konqueror, или хотябы Firefox, чтобы поиск в Гугле осуществлялся через то же поле ввода, что и url (как это сделано в Мозилле)? Как?
Не пойму, зачем нужны все эти извраты с дополнительными полями ввода и алиасами...