LINUX.ORG.RU

Избранные сообщения imul

Почему ОС всё ещё не загружаются по сети?

 

Представьте, в ОС или каком-либо компоненте нашли уязвимость, взломали, и одно дело, утекшие данные, а ведь до кучи могут сделать хост частью своего ботнета, например. Вы хватаетесь за голову, что ж теперь, аудит проводить, куда лазили, что делали, или просто переустановить всё, опять же заново настраивать, — сплошной головняк. Восстановление из последнего бэкапа? Как давно он был сделан? Ведь наверняка с тех пор в конфигурацию хоста внесены изменения. Я веду к тому, что всё ещё популярно хранить актуальное состояние ОС в единственном экземпляре в «горячем» виде, так сказать.

А что если, экземпляр вашей ОС хранился бы в «холодном» виде в образе, на сервере, откуда бы загружался на ваш хост при каждом его включении, и подтягивал за собой всю конфигурацию, необходимую для работы. Хост взломали, а вы просто исправили баг в образе который хранится «на холодную» и жмякнули кнопочку reset для перезагрузки, и снова в строю. Это же просто офигенно.

Как раз сейчас я этим и занимаюсь и решил поделиться мыслями. Хочу перевести все свои сервисы на удалённую «бездисковую» загрузку по сети. Чтоб даже домашний ПК-роутер, раздающий интернеты, загружался по сети и подтягивал образ с соответствующей конфигурацией. Для этого нужен только DHCP, tftp-hpa и... grub2, либо syslinux.

Когда компьютер включается, UEFI / BIOS при необнаружении накопителей пытается загрузиться через сеть, это так по-умолчанию, можно тупо принести новый комп из магазина домой, закрытыми глазами его собрать, включить и он загрузится, и станет нодой, частью вашей сети, да... кра-со-та.

UEFI спросит DHCP-сервер, DHCP выдаст IP и скажет, что по такому-то адресу находится загрузчик. UEFI попытается загрузить его по TFTP-протоколу, и в случае успеха, уже сам grub2 покажет красивую менюшку с выбором ОС, — добро пожаловать бездисковую загрузку по сети!

С установкой и запуском tftp-hpa проблем не будет, /usr/sbin/in.tftpd --listen --secure --verbose /var/ftp/tftpboot

Предлагаю всё хранить в /var/ftp/tftpboot, туда же установим загрузчик GRUB2:

# grub-mknetdir --net-directory /var/ftp/tftpboot
Netboot directory for i386-pc created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/i386-pc/core.0
Netboot directory for i386-efi created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/i386-efi/core.efi
Netboot directory for x86_64-efi created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/x86_64-efi/core.efi

Далее DHCP, достаточно настроить чтобы он раздавал IP и говорил по какому адресу находится файл загрузчика, который UEFI будет загружать через TFTP.

# cat /etc/dhcpd.conf
shared-network arpanet {
  interface br0;

  allow booting;
  allow bootp;
  next-server 10.0.0.1;
  filename "boot/grub/i386-pc/core.0";

  subnet 10.0.0.0 netmask 255.0.0.0 {
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option subnet-mask 255.0.0.0;
    option routers 10.0.0.1;
    range 10.0.0.2 10.0.0.254;
  }
}

Загрузка будет происходить с tftp://${next-server}/${filename}. У меня интерфейс br0 — бридж, в который вхожи все виртуальные машины. Именно br0 присвоен 10.0.0.1. У вас это может быть просто сетевая карта enp1s4po3te5ri7ng9.

Алсо, если у вас реально UEFI, можно добавить проверку, какой загрузчик отдавать системе:

option client-system-architecture-type code 93 = unsigned integer 16;

if option client-system-architecture-type = 00:09 {
  filename "boot/grub/x86_64-efi/core.efi";
}
else {
  filename "boot/grub/i386-pc/core.0";
}

У меня кстати на QEMU с OVMF загрузчик EFI не заработал. Не знаю почему, то ли OVMF кривой, то ли надо тестировать на реальном железе (пока не пробовал).

Ну и вишенкой на торте надо создать обычный grub.cfg vi /var/ftp/tftpboot/boot/grub/grub.cfg:

set default=0
set timeout=60
menuentry "Boot SLAX" {
  linux /boot/os/slax/vmlinuz load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 from=http://10.0.0.1/slax/slax-64bit-9.9.1.iso
  initrd /boot/os/slax/initrfs.img
}
menuentry "Reboot" {
  reboot
}
menuentry "Shutdown" {
  halt
}
menuentry "Continue" {
  exit
}

На этом вся настройка. Для теста я использовал qemu-system-x86_64 -nic tap, который скриптами /etc/qemu-{ifup,ifdown} входил в бридж br0. BIOS спрашивал DHCP, DHCP выдавал IP и сообщал адрес загрузчика, далее BIOS загружал его с TFTP сервера и удачно грузился grub2, а дальше — дело тривиальное. Напихать кучу образов ОС.

Для примера можно использовать SLAX, для этого скачаем ISO-образ дистрибутива, стырим оттуда файлики /slax/boot/{vmlinuz,initrfs.img} и положим к себе в /var/ftp/tftpboot/boos/os/slax/.

Расскажу, как это работает, почему загружается SLAX и почему не загружается Debian / Ubuntu / Anything Else по сети.

Мы включили ПК, по TFTP загрузился grub2 и всё управление сейчас находится у него. Далее, выбирая пунктик меню загрузки SLAX, сам grub2 загружает с TFTP-сервера файлы /vmlinuz и /initrfs.img и передаёт управление уже ядру /vmlinuz. А ядро-то про TFTP сервер ничего не знает! И initrd SLAX'а, и любого другого дистрибутива ничего про TFTP не знает. До того момента, как мы грузимся по сети, мы работаем с TFTP-сервером, grub2 может оттуда загружать все свои модули, шрифты, аниме-картинку-с-понями для фона, но после того, как он передаёт управление ядру — забудьте про TFTP, всё.

В данном примере параметром к ядру указан from=http:// iso-образ SLAX, — да, iso-образ будет скачан с этого ресурса и SLAX будет успешно загружен по сети, нооо, важная деталь — это не параметр ядра, from= сохранится в /proc/cmdline, но ядро не знает что с этим делать, с from= будет работать сам /init скрипт находящийся в initrfs.img. Это чисто фича SLAX, и такой фичи нет у других дистрибутивов.

Как же тогда загрузить Ubuntu Live по сети? Да, grub2 может загрузить ISO образ размером 2гб, но оно вам надо? Ядро не знает про http и ftp (поправьте, если ошибаюсь), но ядро знает про NFS (Network File System) и умеет работать с ней. Таким образом, чтобы загрузить Ubuntu Live, вам надо точно так же извлечь vmlinuz и initrd из iso-образа Ubuntu, а параметром к ядру дописать root=/dev/nfs, таким образом ядро Ubuntu (и любого другого дистрибутива, т.к. это уже фича самого ядра Linux), будет знать, что после того как какой-нибудь скрипт в initrd запросит внешний файл, например, Live-образ системы, — ядро знает, что брать его надо с nfs://10.0.0.1/ubuntu-live — так-то!

Если будут вопросы, постараюсь ответить (хотя скоро спать).

За основу дистрибутива для загрузки по сети я беру любимый CRUX. Вся идея в том, чтобы загружался простенький busybox, подключался к сети (udhcpc), а затем через wget ftp://10.0.0.1/boot/pxelinux.cfg/54:52:00:12:34:56/init.sh && sh init.sh выполнял дальнейшие инструкции для загрузки, которые могут быть вообще любые. Подтягивал любой образ ФС по сети и switch_root в него! Так-то.

Spoofing
()

Snort для чайников

 

Есть много статей по использованию сетевой системы обнаружения (IDS) и предотвращения вторжений (IPS) под названием Snort.

Например, вот эта: Система обнаружения вторжений на базе IDS Snort

Но не дойдя даже до половины ее, начинаешь зевать и ужасно хочется спать :)
Потому что статья написана не для простых пользователей, которым нравится копаться во всяком ... настройках, а для гиков.

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

Есть ли у кого простенькое хавту, чтобы в два притопа поставить этот Snort и не заморачиваться с его многочисленными настройками?

Как, например, Fail2ban: установил по дефолту - и забыл про него, а он себе молча работает и не компостирует мозги.

chukcha
()

Печёт от вебмакак

 , ,

Приветствую! У меня просто термоядерный синтез между ягодицами! Это надо же умудрится наклепать сайтик с 2к пользователей онлайн чтобы оно жрало 24 ядра камня и 96Гб рамы... С*ка когда же вебмакаки вымрут...

P.S Не бомбил бы, если это бы не я админил этот веб-сервер. И не получал по шапке от тех же вебмакак: «почииму тормозитт наш сайтиикк».

P.P.S Да, накипело.

Hg194
()

Управление архивом фоток. Автоматическая уменьшалка.

 

Вот есть куча фоток, снятых 16 мпикс смартфоном, весит каждая под 5 мб, но их можно уменьшать килобайт до 800 обычно без особой потери информативности.

Фотки стяны с разным разрешением.

Хочется такую интеллектуальную тулзу: она берёт фотку, пытается её по-разному уменьшать, оценивает результат по степени информативности или некого эффективного разрешения (ищет на фотке самые контрастные куски или куски с какой-то рябью и оценивает как они деградируют). Я, скажем, задаю некоторую приемлимую степень деградации и софтина юзает эту настройку.

Просто уменьшить все фотки в 2 раза - в принципе выход, но они разные и не все можно покоцать именно в 2 раза, какую-то может быть можно только в 1.5 раза коцать. А какую-то в 8 раз, потому что она вся смазанная.

Короче, есть чё на эту тему?

igloev
()

QEMU тормозит

 

Всех приветствую! Решил ознакомится с хвалёной QEMU, до этого в основном юзал виртуалбокс и иногда Vmware, основная система - опесузя тумбльвид, установил из репов qemu virt-manager и все что нужно к ним, запустил виртманагер, приконнектился (там это так называется) к QEMU выбрал создание новой системы, выделил ей 4 гига оперативы и 2 процессорных ядра, при таком раскладе виртуальная винда у меня при установке в вирт.бокс работает хоть и не так шустро как будучи основной но и не тормозит, я уж не говорю что основная ось - ни винда ни линух при запуске виртуальной оси в вирт.боксе или вмваре у меня не тормозила никогда вообще! Так вот продолжаю - вставил в вирт.CD-ROM создаваемой системы ISO образ винды 10-ки, у дальше началось ужасное - винда устанавливалась часа два наверно, в то время как если ставить её хоть как основную хоть виртуальную в виртуалбокс или вмваре ставится не больше часа, все время установки основная ось - опенсузя, жутко тупила, я даже вспомнил древние компы из 90-х, так опесузя у меня не тормозила даже на слабеньком нетбуке при максимальной нагрузке! Как установка закончилась вроде опенсузя ожила хотя и все равно как то несовсем, виртуальная десятка тоже как то работала не так шустро как в виртуалбоксе, что такое что я делаю не так? Как настроить QEMU на макс.быстродействие? Виртуалбокс и вмваре работают сразу нормально, и без доп.настроек, а тут тормоза дичайшие с этим QEMU, в чем проблема может быть? Проц. AMD Ryzen оперативы 8 гигов, аппаратная виртуализация в биосе включена, что может быть не так?

barmaley99
()

SimJacker - критическая уязвимость в SIM-картах

 , , , ,

Уязвимость, получившая название SimJacker, находится в программном обеспечении SIMalliance Toolbox Browser (S@T Browser), встроенном в большинство SIM-карт, которые используются мобильными операторами как минимум в 30 странах мира. Злоумышленники могут прибегнуть к ней независимо от марки устройства жертвы. По словам специалистов, этот эксплойт успешно используется хакерами последние несколько лет.

S@T Browser представляет собой приложение, которое устанавливается на SIM-карты, в том числе и на eSIM, как часть SIM Tool Kit (STK), и предназначено для того, чтобы мобильные операторы могли предоставлять своим клиентам разные базовые услуги. S@T Browser содержит ряд инструкций STK, таких как отправка сообщений, настройка звонков, запуск браузера, предоставление локальных данных, запуск по команде и отправка настроек, которые могут быть активированы сообщением.

Используя GSM-модем за 10 долларов, злоумышленники могут отправить на аппарат жертвы поддельное сообщение, содержащее вредоносный код. Это позволяет им:

  • Получить местоположение целевого устройства и его IMEI
  • Распространять любую информацию путём отправки поддельных сообщений от имени жертв
  • Совершать звонки на платные номера
  • Шпионить, приказав устройству позвонить по номеру телефона злоумышленника
  • Загружать вредоносные программы, заставляя браузер устройства открывать вредоносные веб-страницы
  • Отключать SIM-карту
  • Получать информацию о языке на устройстве, заряде аккумулятора и т. д.

Allakka
()

Bind и форвард onion

 , ,

После отпуска решил апнуть @world
Прилетел бЫнд 9.14.4
ИИИ....форвард onion'а фсё

zone "onion." in {
	type forward;
	forwarders {
	    127.0.0.1 port 5300; //TOR
	};
};

выцарапал де'былд net-dns/bind-9.12.3_p4 в локал_оверлай, счас скомпиляю..и посмотрю, и че как
а так, nslookup на тор резовит онион четко.
Как так то?
Да, 9.12 робыть. Нафига такие апдейты...

KosmiK
()

Насоветуйте дешевый VPS-хостинг для VPN

 ,

Сабж. Сейчас пользуюсь арубой за 1 евро в месяц, иногда возникают проблемы с коннектом. Не слишком часто, но всё же.

Так же хотелось бы чтобы не заблочили за нарушение авторских прав при скачивании торрентов

bsdfun
()

Защита от копирастической гэбни при загрузке торрентов

 ,

Какие есть варианты защиты от копирастов при загрузке торрентов (в частности кина) с европейского VPS? Отключение DHT, включение шифрования? В первый раз сегодня столкнулся с письмом счастья от правообладателей при загрузке фильмов через дополнение в kodi, скачивал через российский трекер. До этого качал/раздавал что угодно через православный qbittorrent и ничего не приходило. Как вообще происходит мониторинг этого дела в автоматическом режиме?

bsdfun
()

cgroups, systemd и распределение процессора.

 , ,

Есть 4 меделеных ядра, systemd, 2 пользователя и желание нагрузить комп многопотоком так, чтобы мне это не мешало. nice прекрасно работал давно, когда ядро было единственное и процессы однопоточные. Почитал про cgroups и сделал вывод, что с помошью этой штуки можно рулить приоритетами для многопоточной нагрузки на многоядерных системах, т.е. теоретически это то что надо.

Далее, раз уж системд всё равно есть, раз уж cgroups в него зашит, то и пользоваться нужно им. Вроде как каждой отдельной сессии пользователя выдаётся отдельный slice с собственной долей cpu и в соответствии с этой долей выделяются проценты cpu. Стандартно доли равные, но можно указать в /etc/systemd/system/user-1000.slice.d/50-CPUShares.conf

[Slice]
CPUShares=2048
и в /etc/systemd/system/user-1001.slice.d/50-CPUShares.conf
[Slice]
CPUShares=100
и вторичный пользователь должен получить малую долю cpu если у первичного появится достаточно потоков. Т.е. в теории то что нужно.

Ребут, логин первичного и вторичного пользователей, запуск условного майнера под вторичным, и что то идёт не так: условный майнер отказывается отдавать первичному пользователю более 50% свободного cpu, даже если первичный создаёт 8-10-12 потоков нагрузки.

Почему настройка CPUShares не применяется (механизм работает! но явно с равными шарами!) и предусмотрен ли способ применять изменения без перезагрузки системы? А без перезапуска сессии?

kirill_rrr
()

Играем на P106-100 в линуксе без интегрированной графики

 ,

Собственно, обещал отписаться, как закончу. Огромное спасибо за подсказки всем в этом треде.

Для тех, кто в танке - есть Nvidia P106-100, майнинг вариант GTX1060, который можно дешево добыть у китайцев. Если после майнинга, то совсем совсем дешево. Играть на нем (официально) нельзя, но если воткнуть в материнку с интегрированной графикой и пропатчить виндовые дрова по методу Дяди Ляо, то можно.

В линуксе никто это дело почему-то не пытался даже заводить, а зря, ибо, как оказалось, заводится оно с полпинка. Есть иксы с композитингом и видеоускорением, работает steam и стриминг игр, виндовые игры на ура стартуют через proton. Ведьмак дал где-то 30-50 fps на ultra настройках, что для видюхи стоимостью меньше 100 баксов очень даже неплохо.

Кому интересно, я сделал инструкцию у себя в бложике.

Пока тестил только с проприетарным драйвером nvidia, в планах потом попробовать еще nouveau. Вдруг заработает vaapi, ибо nvenc/vdpau с проприетарным не взлетели, как и SLI ;)

sudo cast pon4ik peregrine sergej intelfx

ncrmnt
()

в копилку косяков debian buster

 

на второй взгляд, выскочило гораздо больше косяков, чем хотелось бы. хорошо что это домашний комп

  1. самый критичный. при большом количестве LV, pvscan зависает. виснет именно userspace процесс, в ядре никаких проблем. прибить pvscan, запустить заново - и работает. но. это полный пипец. тем более если на компе много LV ( например, libvirt kvm сервер ) - загрузка зависает, виртуалки не стартуют. пока добавил костыль ( стартует из крона, ждёт 2 минуты и убивает процессы pvscan, которые запустил systemd; после этого загрузка продолжается ) . в выходные буду ковырять подробнее
  2. /etc/network/interfaces теперь игнорируется при загрузке. вручную можно вполнить ifup/ifdown, но кто блин будет делать это вручную. по умолчанию используется systemd-network. я с ним не знаком, поставил и настроил привычный network-manager, перенёс сетевую конфигурацию в него. некоторых вещей не хватает ( хуки на up/down ), надо курить документацию. и, видимо, изучать systemd-network, наше блин светлое будущее
  3. в связи с заменой xorg на wayland + xwayland, частично не работает клавиатура в x2go. причина - keyboard rules теперь не xfree86, а evdev
    ## было:
    ## /usr/bin/setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle,grp:ctrl_shift_toggle" -rules xfree86
    ## стало:
    /usr/bin/setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle,grp:ctrl_shift_toggle" -variant '' -model 'pc105'  -rules evdev
    
  4. в nautilus перестали создаваться thumbnail'ы картинок. лечится установкой пакета libgdk-pixbuf2.0-bin
router
()

Как организовать перехват нескольких редиректов при выполнении proxy_pass в nginx ?

 

Собственно сабж. Как организовать перехват и перенаправление нескольких редиректов при выполнении proxy_pass в nginx ? Т.е. имеется ввиду, когда по ссылке цепочкой идёт один 302-й редирект за другим.

nginx умеет перехватывать редирект при использовании конструкции

{

***

proxy_intercept_errors on;
error_page 301 302 307 = @handle_redirect;
}

location @handle_redirect {
resolver 8.8.8.8;
set $saved_redirect_location '$upstream_http_location';
proxy_pass $saved_redirect_location;
}
но вот только хватает этого на одну итерацию. В случае наличия повторного редиректа нужно повторить перехват ошибок и конструкцию @handle_redirect. Существует ли возможность заставить nginx следовать редиректам до упора, без применения сторонних средств типа PHP или CGI ? Или это невозможно ?

Blacksmith
()

Приложение в debian на отдельный интерфейс

 ,

Здравствуйте. Есть приложение, которое отправляет запросы каждый раз на разные IP, поэтому маршруты строить вручную не очень удобно. Хочу его пускать всегда через отдельный интерфейс с впном, но чтобы без оверхеда на виртуализацию и т.п. Как это грамотно сделать?

qwertynobody
()

Origin

 , , , ,

Дарю инструкцию для интересующихся:

$ mkdir -p ${HOME}/Origin

В директории Origin создаём файл hchmod.c с содержимым:

#include <dlfcn.h>
#include <sys/stat.h>
#include <unistd.h>

int (*mkdir_real)(const char *pathname, mode_t mode) = NULL;
int (*chmod_real)(const char *pathname, mode_t mode) = NULL;
int (*fchmod_real)(int fd, mode_t mode) = NULL;

int mkdir(const char *pathname, mode_t mode){
  if ( mkdir_real == NULL ){
        mkdir_real = dlsym(RTLD_NEXT,"mkdir");
  }
return (mkdir_real(pathname, mode | S_IWUSR ));
}

int chmod(const char *pathname, mode_t mode){
  if ( chmod_real == NULL ){
        chmod_real = dlsym(RTLD_NEXT,"chmod");
  }
return (chmod_real(pathname, mode | S_IWUSR ));
}

int fchmod(int fd, mode_t mode){
  if ( fchmod_real == NULL ){
        fchmod_real = dlsym(RTLD_NEXT,"fchmod");
  }
return (fchmod_real(fd, mode | S_IWUSR ));
}
Собираем:
$ cd ${HOME}/Origin
$ gcc -shared -fPIC -D_GNU_SOURCE -o hchmod.so hchmod.c -ldl
Если вы уже безуспешно пытались установить Origin, то надо поправить права на папку:
$ chmod 755 "${HOME}/.wine/drive_c/Program Files (x86)/Origin"
или удалить её:
$ rm -R "${HOME}/.wine/drive_c/Program Files (x86)/Origin"
Качаем и устанавливаем Origin
$ wget https://download.dm.origin.com/origin/live/OriginSetup.exe
...
$ export LD_PRELOAD=${HOME}/Origin/hchmod.so 
$ wine OriginSetup.exe

Upd.: когда-то была ошибка входа, помогало это:

$ export LC_TIME=en_US.UTF-8
$ cd "$HOME/.wine/drive_c/Program Files (x86)/Origin/" 
$ wine Origin.exe

superuser
()

С космодрома Восточный стартовала ракета «Союз-2.1б»

 , , ,

МОСКВА, 5 июл — РИА Новости. С космодрома Восточный стартовала ракета «Союз-2.1б» с метеорологическим спутником «Метеор-М» №2-2 и 32 малыми спутниками.

Это первый пуск с Восточного в 2019 году. За ним наблюдали секретарь Совета безопасности Николай Патрушев, вице-премьер Юрий Борисов, глава «Роскосмоса» Дмитрий Рогозин, а также вице-премьер — полпред президента на Дальнем Востоке Юрий Трутнев.

Старт состоялся в 8:42 по московскому времени. Через десять минут от носителя отделился разгонный блок «Фрегат», чтобы развести аппараты по трем разным орбитам. Через час после пуска «Метеор-М» вышел на рабочую орбиту средней высотой 832 километра.

Далее «Фрегат» будет выводить на две другие орбиты — высотой порядка 580 и 530-540 километров — малые спутники США, Великобритании, Германии, Таиланда и Чехии, а также несколько университетских аппаратов из Швеции, Франции, Германии, Эстонии и Эквадора.

Россию представят три научно-образовательных аппарата «Сократ», «ВДНХ-80» и «АмурСат».

После окончания миссии «разгонник» переведут на траекторию входа в атмосферу. Примерно в 14:07 мск несгоревшие элементы конструкции приводнятся в несудоходном районе Тихого океана.

Прошлый аналогичный запуск с Восточного в ноябре 2017 года закончился неудачно. Ракета штатно стартовала с «Метеором-М» №2-1 и 18 малыми аппаратами, но разгонный блок не смог вывести их на орбиту из-за неправильно заложенных алгоритмов.

https://ria.ru/20190705/1556227683.html

kickass
()

Как включить LTO

 ,

При сборке модулей добавляю -flto -fno-fat-lto-objects, при вызове ld ничего не добавляю, не знаю что надо, результат.

arm-none-eabi-ld: /tmp/pmc/hal/adc.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/can.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/hal.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/pwm.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/usart.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/ap.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/cml.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/lib.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/m.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/pmc.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/sh.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/task.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/tel.o: plugin needed to handle lto object
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x2a): undefined reference to `halStart'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x2e): undefined reference to `halMain'
/tmp/pmc/hal/entry.o:(.vectors+0x8): undefined reference to `irqNMI'
/tmp/pmc/hal/entry.o:(.vectors+0xc): undefined reference to `irqHardFault'
/tmp/pmc/hal/entry.o:(.vectors+0x10): undefined reference to `irqMemoryFault'
/tmp/pmc/hal/entry.o:(.vectors+0x14): undefined reference to `irqBusFault'
/tmp/pmc/hal/entry.o:(.vectors+0x18): undefined reference to `irqUsageFault'
/tmp/pmc/hal/entry.o:(.vectors+0x2c): undefined reference to `irqSVCall'
/tmp/pmc/hal/entry.o:(.vectors+0x38): undefined reference to `irqPendSV'
/tmp/pmc/hal/entry.o:(.vectors+0x3c): undefined reference to `irqSysTick'
/tmp/pmc/hal/entry.o:(.vectors+0x78): undefined reference to `irqDMA1_Stream3'
/tmp/pmc/hal/entry.o:(.vectors+0x88): undefined reference to `irqADC'
/tmp/pmc/hal/entry.o:(.vectors+0x90): undefined reference to `irqCAN1_RX0'
/tmp/pmc/hal/entry.o:(.vectors+0x94): undefined reference to `irqCAN1_RX1'
/tmp/pmc/hal/entry.o:(.vectors+0x98): undefined reference to `irqCAN1_SCE'
/tmp/pmc/hal/entry.o:(.vectors+0xa4): undefined reference to `irqTIM1_UP_TIM10'
/tmp/pmc/hal/entry.o:(.vectors+0xdc): undefined reference to `irqUSART3'
Makefile:57: recipe for target '/tmp/pmc/pmc' failed
make: *** [/tmp/pmc/pmc] Error 1

Если вызвать gcc вместо прямого вызова ld то получаю проблемы со всяким стартовым кодом и библиотеками которые мне не нужны. Когда-то я и перешел на вызов ld чтобы не иметь этих проблем.

/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans0.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans0.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans1.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans1.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans2.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans2.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans3.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans3.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans4.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans4.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans5.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans5.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans6.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans6.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans7.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans7.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans8.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans8.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans9.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans9.ltrans.o
/usr/lib/gcc/arm-none-eabi/5.3.0/../../../../arm-none-eabi/lib/crt0.o: In function `_start':
/var/tmp/portage/cross-arm-none-eabi/newlib-2.4.0/work/newlib-2.4.0/newlib/libc/sys/arm/crt0.S:403: undefined reference to `main'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x34): undefined reference to `ldSdata'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x38): undefined reference to `ldEtext'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x3c): undefined reference to `ldEdata'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x40): undefined reference to `ldSbss'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x44): undefined reference to `ldEbss'
/tmp/pmc/hal/entry.o:(.vectors+0x0): undefined reference to `ldStack'
/tmp/ccs6XVoG.ltrans4.ltrans.o: In function `halStart':
<artificial>:(.text+0x9c0): undefined reference to `ldSvectors'
collect2: error: ld returned 1 exit status
Makefile:57: recipe for target '/tmp/pmc/pmc' failed
make: *** [/tmp/pmc/pmc] Error 1

Undefined reference это понятно, надо как-то объяснять, что функция вызывается из вне и выбрасывать ее нельзя.

В первом случае похоже никакого LTO нет, судя по времени работы ld и сообщениях о плагинах, но почему есть undefined reference? Во втором не знаю как сделать, чтобы компоновки не было, а только бы произошла оптимизация и генерация объектного кода, дальше я бы сам вызвал ld как мне надо.

Исходный Makefile.

amaora
()

Помогите выбрать осциллограф

 

Надумалось мне купить на поиграться осциллограф. Точных целей для такой покупки у меня нет. Брать решил бу на авито. Из всех представленных моделей в моем регионе мне приглянулись:

С1-49 за 2000 рублей

С1-68 за 2500 рублей

С1-94 за 3500 рублей

Поскольку в данной теме я нуль то хотелось бы знать что посоветует разум лора.

Behem0th
()

Скандинавская альтернатива Let's Encrypt

 , , ,

Всем доброго дня!

Вопрос по сабжу, кто-нибудь уже использовал BuyPass в проде?

Twissel
()

Стала доступна бета-версия S.T.A.L.K.E.R. Зов припяти на движке OpenXRay

 , ,

Группа Игры

После полу-годовой работы над стабильностью, стала доступна бета-версия игрового движка OpenXRay.

Побеждены случайные вылеты, улучшен рендер (ближе к ванильной картинке), игру можно пройти до конца.

Известные баги и проблемы:

  • При выходе из игры процесс может зависнуть
  • При переходе между локациями/повторной загрузке сейвов портится картинка, игра может вылететь (пока решается только через перезапуск игры с загрузкой сейва)
  • Сейвы и логи не поддерживают UTF-8
  • Проект не собирается clang

Для работы игры понадобятся ресурсы от оригинальной игры, они должны находиться в ~/.local/share/GSC/SCOP/

Для steam их можно получить следующим образом:

steamcmd "+@sSteamCmdForcePlatformType windows" +login <username> +force_install_dir ~/.local/share/GSC/SCOP/ +app_update 41700 +quit

Если ресурсы из GOG, нужно привести все пути к нижнему регистру(это особенность движка)

Перед началом игры нужно исправить строку в ~/.local/share/GSC/SCOP/_appdata_/user.ltx renderer renderer_r1 на renderer renderer_gl, и vid_mode 1024x768 на ваше разрешение, иначе оно слетит.

PPA (пока только для bionic)

В планах дальнейшее улучшение рендера, поддержка ресурсов от ClearSky (сейчас в отдельной WIP ветке) и TЧ.

>>> Подробности (github.com)

eagleivg
()