LINUX.ORG.RU

Сообщения AITap

 

Как купить лакрицу (сальмиачные конфеты) в Петербурге?

Всем привет.

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

Что может быть проще, чем двухкилограммовая упаковка лакричного экстракта с хлоридом аммония, которые некоторые странные люди считают съедобными? Что я делаю не так? Где в Санкт-Петербурге реально найти розничный магазин, в который можно просто прийти вечером в пятницу и взять столько лакричных конфет, сколько хватит сил унести?

P.S. Линукс тут при том, что Линус наверняка знает толк в этих конфетах.

 ,

AITap ()

13″ Linux-ноутбук с ≥4G RAM за ≤40000?

Ку.

Перечислю хотелки в порядке убывания важности:

  • Стоимость ≤40000 рублей, чёртова девальвация, откуда у меня вообще такие деньги
  • Работа GNU/Linux без особой потери времени работы от батареи
  • Хотя бы 4G RAM и процессор с виртуализацией (хотя последнее, как я понимаю, не проблема)
  • Реалистичное время работы от батареи хотя бы 5 часов
  • Диагональ 13±1 дюймов, мне с ним ездить в разные места
  • Слоты ОЗУ и HDD

Такое вообще бывает?

Upd: при прочих равных предпочту ноутбук без дискретной видеокарты и переключалки.

 

AITap ()

Защита от случайного выдёргивания запущенной с флешки системы

Привет всем, кто запускает Linux с флешки!

Вы наверняка попадали в ситуации, когда кто-то задевал флешку, с которой работает система, или подключал рядом с USB-жёстким диском требовательный к питанию смартфон, в результате чего устройство на долю секунды теряло питание, сбрасывалось и переподключалось. Система оказывалась в дико неприятном состоянии, в котором вот оно, корневое устройство, но ни одна команда, кроме тех, которые ещё лежат в кэше, не работает, и даже Alt+SysRq+S,U не поможет предотвратить потерю данных: устройство, на которое можно было бы сбросить кэш, уже отключено, и убедить ядро обратиться к другому невозможно. Фрустрации добавляло ещё и то, что Windows To Go с этим прекрасно справляется, зависая, пока флешку не вставят обратно (с выключением по минутному таймауту).

Оказывается, в Linux это тоже просто обойти. Достаточно создать при помощи dmsetup логический диск в режиме linear и при помощи правил udev делать ему suspend, если устройство было удалено, и создавать ему новую таблицу и делать resume, когда устройство с тем же UUID вставят обратно. На всякий случай, memlockd позволяет удержать в кэше бинарники udev, dmsetup, busybox и blockdev, на которых всё работает. Готовые скрипты (в расчёте на initramfs-tools) лежат на https://github.com/aitap/switchblock/. Адаптировать на другие initramfs должно быть несложно, потому что это всего лишь правило udev + вызываемые из него файлы.

Если кому-то будет интересно, готов принять pull request'ы со скриптами сбора пакетов.

 , ,

AITap ()

Заставить текст в дочернем div обтекать div-сиблинг при наличии textarea рядом

Ку!

Есть общий для двух страниц шаблон (оформление сайта) и два подшаблона (показ страницы и редактирование страницы). Подшаблон рендерится в <div class=content_block>, после <div class=path_links>. У .content_block есть сиблинг .children, в него рендерится список дочерних страниц.

Показ страницы работает так, как я хочу: текст из .content_block > .content обтекает <div class="children">, расположенный справа: http://jsfiddle.net/1r6cvjt9/

При редактировании страницы в .content_block располагаются .path_links из основного шаблона и форма. Внутри формы - .edit_container, внутри него - .textarea с textarea внутри и .preview с HTML отрендеренного текста. Так вот, текст внутри .content_block > form > .edit_container > .preview не обтекает .children, а либо весь .edit_container оказывается ниже второго, либо перекрывает его: http://jsfiddle.net/zwk0jdrz/

Несомненно, я делаю что-то не так. Как заставить .preview обтекать .children?

Бонусный вопрос: как (если это возможно) растянуть textarea на всю высоту страницы без JS, средствами одного CSS?

 ,

AITap ()

Подскажите смарт-браслет или часы

Добрый вечер. Моё гугл-фу меня покинуло, ибо не может быть, чтобы ни один китаец не собрал такой простой вещи.

Требования:

  • синхронизация с компьютером по USB (у меня нет и не предвидится Bluetooth 4.0 устройств)
  • умный будильник (чтобы отслеживал фазы сна и будил в 30-минутное окно) с вибрацией
  • цена порядка 3000 рублей

Шагомер не интересует, но сойдёт в качестве бесплатного приложения. Минусом будет требование постоянно сливать данные в китайское облако.

Возможно, я не там ищу, но все смарт-браслеты, которые я откопал на Aliexpress, требуют BT 4.0 LE, есть немного, которые синхронизируются по USB, но не имеют умного будильника, SleepTracker закрыл производство, а aXbo меня совершенно не устраивает из-за цены и отсутствия вибрации.

Совсем замечательно будет, если синхронизация по USB будет работать под GNU/Linux, но это утопия. Или если устройство будет полностью самостоятельным (как обычные наручные часы).

 

AITap ()

«Хочу всё знать о компьютерах»

Доброго времени суток.

У меня уже довольно давно несколько человек просят посоветовать книгу, в которой было бы написано «в общем» о компьютерах. Причём не для чайников (компьютер состоит из телевизора, большой железной коробки и манипулятора типа «мышь»; для запуска тетриса нужно надавить стрл-алт-делете на доске с торчащими штуковинами), а поподробнее. Частные ситуации вроде книг только о Windows/только о Linux/только про x86 тоже не подходят.

Как я себе это представляю - что-то вроде упрощённой версии http://wiki.osdev.org/ и по-русски. Чтобы было рассказано, за что отвечают процессор, менеджер памяти, шины, от менеджера памяти плавно перешли бы к устройству современных ОС (ядро, загрузчик, прикладное и системное ПО), как работают программы (разделение памяти, виртуальная адресация, линковка). Что ещё стоит рассказать, не знаю, но наверняка что-то упустил. У задающих такой вопрос, понятное дело, знаний недостаточно, чтобы рассказать, о чём они хотят узнать, а ответить за один присест на него нельзя, потому что тема неподъёмно большая.

Подскажите, пожалуйста, такую книгу, если кто встречал.

 

AITap ()

Застрял на neh1m9 «To the death»

Ку.

Играю в Nehahra на Darkplaces build 09:42:27 Oct 12 2012 0~20110628+svn11619-3 Debian.

Не могу понять, куда идти дальше. Уже достал себе инопланетный скоростной дробовик и sprocket launcher. По идее, мне нужно попасть за эту дверь и в левую часть коридора, но я никак не могу понять, где она открывается. В правой части только решётка, которая открывается с другой стороны и спуск в какую-то ёмкость с жидкостью, где можно достать секрет - красную броню. Если спуститься туда ещё раз, выхода в месте расположения красной брони уже не будет, а идти, кроме как в лаву, больше некуда.

Даже нашёл за движущимися штуковинами resurrection artifact, но ни следа кнопки, которая открывает одну из этих дверей.

Зачистил всю карту, но каждые несколько минут поисков спавнится ещё один Tsemoch, что добавляет фрустрации.

ЧЯДНТ? Где искать кнопку? Или это глюк игры?

 ,

AITap ()

Протокол почты для флоппинета

Пришла мне в голову эта идея, и не отпускала, пока я ею не занялся. Возможно, зря я это сделал и зря сюда об этом пишу. Посмотрим.

Итак, есть черновик протокола и черновая же реализация (https://github.com/aitap/flash-mail.git). В некоторых местах там очень необъективно расходуется память, в некоторых можно специально сформированным файлом залезть в файловую систему читающего файл компьютера - это черновик. Зависимости: perl, xz, openssl.

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

Концепция общения такая: генерируем командой gen-id пару ключей, открытый складываем (export-id) в директорию на флешке. Желающие складывают его себе в keys/. Можно писать личные сообщения командой write (и указывать msgid, на который отвечаешь). Группа (вроде почтовой рассылки) создаётся как пара ключей (они будут использоваться для модерации, если дойдут руки дописать) командой gen-group, открытый ключ публикуется и складывается желающими писать в groups/. После написания сообщения архивируются на флешку (export) и копируются другими людьми (import). Просмотр дерева делается командой list, чтение - show. Если индекс сообщений вдруг сломается, есть команда reindex.

Опасайтесь багов, они повсюду. Значительная часть программы - прикрученный проволокой openssl smime.

В планах - развить программу до эдакой смеси git и gpg, придумать интерактивный протокол (для сетей, где они будут) и сменить openssl и xz на Crypt::*, Digest::* и IO::[Un]Compress::Xz.

Кому интересно?

Чуть не забыл, делается just for fun и никому не нужно. Стандарты всё равно не победить.

AITap ()

Как в QDomElement заменить подпадающие под regexp части текста на другие DOM element?

Ку. Есть QDomElement, внутри - Jabber-сообщение. Нужно изо всех тегов <body>, где бы они ни попались (внутри <html>, или отдельно) вынуть подпадающий под regexp текст, скормить его некой функции, а результат сделать значением атрибута созданного на месте этого текста элемента (<img />, если быть точным).

Вопрос: как это сделать? Может ли QXmlPattern вызвать некий callback для получения $replacement для fn:replace()? Или это невозможно средствами XQuery, и нужно извращаться с API QDomElement, QDomDocument и компании? Очень не хочется удалять строковой элемент, вручную его нарезать, а потом по одному добавлять куски обратно.

Фокусы со строковыми радостями escape и unescape хочу оставить на потом как костыльные и потенциально небезопасные.

 ,

AITap ()

Микрофон в универсальном разъёме для наушников/микрофона на Asus 1011PX

Ку. Имеется Asus 1011PX, вот его alsa-info.

При подключении чего угодно в разьём для наушников/микрофона динамик отключается, а в этот разъём подаётся звук. Хотелось бы иметь возможность руками переключать это на микрофон (ещё лучше - линейный вход) и обратно. В alsamixer нашёлся только переключатель Auto Mute, который позволяет не вырубать динамик при подключении наушников. Среди доступных для Capture устройств есть «Internal Mic» (работает), «Mic» и «Internal Mic 1», записывающие тихий шум.

В /proc/asound/card0/codec#0 есть 2 интересных Node:

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out 
  Control: name="Mic Boost Volume", index=0, device=0         
    ControlAmp: chs=3, dir=In, idx=0, ofs=0                   
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0   
  Amp-In vals:  [0x00 0x00]                                   
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1  
  Amp-Out vals:  [0x80 0x80]                                  
  Pincap 0x00001734: IN OUT Detect                            
    Vref caps: HIZ 50 GRD 80                                  
  Pin Default 0x01a19c20: [Jack] Mic at Ext Rear              
    Conn = 1/8, Color = Pink                                  
    DefAssociation = 0x2, Sequence = 0x0                      
  Pin-ctls: 0x24: IN VREF_80                                  
  Unsolicited: tag=00, enabled=0                              
  Connection: 1                                               
     0x0d 
Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out 
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0                  
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0   
  Amp-In vals:  [0x00 0x00]                                   
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1  
  Amp-Out vals:  [0x00 0x00]                                  
  Pincap 0x0000003c: IN OUT HP Detect                         
  Pin Default 0x03211c1f: [Jack] HP Out at Ext Left           
    Conn = 1/8, Color = Black                                 
    DefAssociation = 0x1, Sequence = 0xf                      
  Pin-ctls: 0xc0: OUT HP                                      
  Unsolicited: tag=04, enabled=1                              
  Connection: 2                                               
     0x0c* 0x0d  
Особенно меня интересует второй (который 0x1a): очень похоже, что именно его настройкой можно переключить разъём на вход.

Как получать числа вроде 0x03211c1f самостоятельно, я не понял. Нагуглить удалось программы hda-analyzer и hda-jack-restack. Перебор флажков и прочих контролов в первом приводил разве что к отключению вывода на динамик/наушники или микрофона; попытки настроить что-то при помощи второго - либо к ошибкам «permission denied», когда что-то занимало звуковую карту, либо к исчезновениям контролов в alsamixer (например, удалось полностью отключить взаимодействие с этим универсальным разъёмом), либо к полному исчезновению PLAYBACK и RECORD-устройств. Кстати, вторая программа предлагала перенастроить чёрный разъём либо на другие выводящие звук варианты, либо на internal mic, больше вариантов не было.

Собственно, ищу людей, которым удалось воткнуть в такой универсальный разъём микрофон или гитару и заставить их работать.

UPD: запустил livecd Fedora 18 с ядром 3.6.10, там в микшере появилась настройка Input Source: Internal Mic / Headphone Mic и работает нормально. Завтра поставлю ядро из Liquorix, наверняка заработает.

UPD2: новое ядро, действительно, решило проблему. Надеюсь, не добавило новых.

 ,

AITap ()

Чем в наше время принято делать статичные HTML-страницы?

Есть задача: сделать простой сайт, вроде визитки. Изменяться он, скорее всего, не будет, так что делать его решено статическими HTML-страницами.

Но верстать все страницы по одной руками - это же неудобно, особенно если учесть, что в каждой из них должно быть одинаковое меню для перехода по страницам сайта. Чем в наше время делают такие вещи? Может быть, я проглядел в Kompozer'е возможность сделать общий для всего сайта кусок страницы? Или какую-нибудь оффлайновую CMS? Ведь не на фреймах же это всё делать?

И да, хотелось бы обойтись без JS там, где это возможно.

UPD: SSI, PHP, прочие серверные вещи - это замечательно, но где в наше время можно найти _надёжный_ бесплатный хостинг с этими самыми PHP и SSI и без сюрпризов вроде «10 постов на местном форуме в неделю» или рекламы через месяц использования?

 ,

AITap ()

escu - легковесная учебная реализация coreutils

Dorif

Привет пользователям UNIX-like систем!

Я пишу небольшой набор открытых и свободных coreutils (небольшой проект, не такой фичастый, как GNU coreutils) для POSIX-совместимых ОС. Проект называется escu (сокращение от Extremelly Small CoreUtils). Писать начал, когда пожелав выучиться системному программированию по исходникам GNU Coreutils, но не смог разобраться в spaghetti code и решил их переписать согласно спецификациям The OpenGroup.

Уже есть утилиты: basename, chroot, dirname, false, head, link, ln, logname, ls, mkfifo, mv, pwd, test, true, tty, uname, unlink, yes. Многие из них уже полностью POSIX-совместимы. Я использую системные вызовы для снижения накладных расходов, а также стараюсь писать максимально простой код для облегчения понимания новичками.

Проект нацелен на максимальную переносимость, поэтому при написании используются только возможности стандартной библиотеки языка C, а для сборки будут использоваться только POSIX-совместимые make, компилятор языка C и командная оболочка.

Релизы будут выпускаться тогда, когда они будут готовы, за исключением багфиксов.

Комментарии, предложения и патчи приветствуются!



Ссылка: https://github.com/Dorif/escu

 , ,

AITap ()

Подскажите фильм

Сам не смотрел, мне только кусок пересказал знакомый. Название он тоже сообщил, но оно благополучно вылетело из памяти. Не напомните?

Главный герой летит в самолёте. Почти все люди в нём хотят его убить. ГГ знакомится с девушкой (из тех, которые не хотят его убить). Девушка отправляется в туалет, в это время на него нападают. Камера попеременно показывает накрашивающуюся девушку и ГГ, расправляющегося с нападающими. Девушка выходит из санузла - салон чист, трупов как бы не видно. ГГ поясняет полушутливым тоном девушке, что оба пилота мертвы и что требуется его присутствие в кабине пилотов, уходит, самолёт наклоняется, и плохо спрятанные трупы начинают отовсюду сыпаться.

Вот. Это ведь не для Чего бы почитать/послушать/посмотреть? (2) вопрос, да?

AITap ()

А оконный менеджер вашего DE умеет скрывать заголовки всех окон?

В борьбе за место на экране размером 600px по вертикали все средства хороши, и я решил отключить заголовки окон. Использую Xfce 4.8. Заглянул в Настройки->Диспетчер окон. Ничего. Заглянул в Настройки->Диспетчер окон (дополнительно). Тоже нет.

Странно. Почему такая послезная функция до сих пор может отсутствовать? Отправляю багрепорт: https://bugzilla.xfce.org/show_bug.cgi?id=9082

Ответ:
> Applications can use standard mechanism to hide their decorations.

> One of the key roles of the Window manager is to decorate applications windows (unless they ask otherwise), so such an option is denied.

Логика, конечно, в этом есть. Но даже LXDE, который некоторые считают Плутоном среди DE, благодаря своему Openbox это умеет (хотя и не «одной кнопкой»).

Вобщем, я сделал mkdir ~/.themes/No\ title\ bars && cp -r /usr/share/themes/Default/xfwm4/ ~/.themes/No\ title\ bars && mogrify -resize 1x1! ~/.themes/No\ title\ bars/xfwm4/* и выставил в настройках Xfwm соответствующую тему, но...

А оконный менеджер Вашего DE умеет скрывать заголовки всех окон?

 , ,

AITap ()

Чем аппроксимировать и обработать экспериментальные данные?

Ку!

Имеется много экспериментальных данных - зависимость одного параметра от другого. В идеале график этой зависимости должен выглядеть как две полуокружности. На деле получается кусок этой конструкции: либо левая полуокружность, либо по куску от обеих, либо только правая. Окружности пересекаются в 0.

Задача: из каждой такой зависимости найти точку пересечения окружностей. Если точка пересечения в диапазоне измеряемых значений отсутствует, аппроксимировать график эллипсом и найти его пересечение с осью абсцисс (понятно, что эллипс даст 2 пересечения; выбирать, видимо, нужно то, которое ближе к измеренному диапазону значений).

Вопрос: чем лучше всего это делать? R? Octave? Буду благодарен, если накидаете подходящих ссылок.

 , ,

AITap ()

Программа-лабораторный журнал?

Придумало ли человечество что-нибудь лучше ручки и бумаги для этого дела?

Нужно не так много: таблица из двух колонок, слева - выполняемые действия, справа - наблюдения/выводы, ещё слева и справа по мере необходимости нужно размещать расчёты. Встроенный «калькулятор» с возможностью «умной» записи математичесих выражений не помешал бы. Встроенные электронные таблицы (вроде: даны значения такого-то коэфф-та, найти по нему и данным константам несколько масс) также были бы очень полезны. Построение графиков gnuplot'ом, таблица Менделеева были бы совсем замечательными функциями, но совершенно не обязательными.

Google подсказывает либо каких-то монстров под Windows с огромными зависимостями, либо вовсе что-то не то.

AITap ()

Уменьшаем систему, собираемую при помощи Gentoo: продолжение банкета

Идея: собрать мини-дистрибутив с GParted и минимумом необходимого для его работы и запускать его из initramfs/initrd.
Реализация: для сборки используется Gentoo stage3 с USE-флагами "-* minimal" и другими настройками.
Предыдущая тема: [Gentoo]Как уменьшить размер системы?

Разобрался с неотложными делами и снова приступил к сборке.

По советам из предыдущей темы получились вот такие правила в Makefile:

buildroot:
	cp -L /etc/resolv.conf $(STAGE3)/etc/resolv.conf
	cp $(CONFIG)/make.conf $(STAGE3)/etc/make.conf
	cp $(CONFIG)/package.use $(STAGE3)/etc/portage/package.use
	cp -rv $(CONFIG)/savedconfig $(STAGE3)/etc/portage/
	chroot $(STAGE3) env-update
	chroot $(STAGE3) emerge --sync
	chroot $(STAGE3) emerge -un portage
	chroot $(STAGE3) eselect news read

target:
	mountpoint $(STAGE3)/proc || chroot $(STAGE3) mount -t proc proc /proc
	chroot $(STAGE3) emerge -un $(PACKAGES) gentoo-sources
	# А сейчас будет адский костыль
	chroot $(STAGE3) env ROOT=$(TARGET) USE="make-symlinks -python" emerge --with-bdeps=n -pt $(PACKAGES) | perl -ne 'if (/^\[.*(python|eselect|udev)/ and $$prev =~ /^\[[^\]]+\] +([^ ]+)/ and ($$file=$$1)=~s|([^/]+/)([a-z0-9\-]+)(-[0-9].*)|/usr/portage/$$1$$2/$$2$$3.ebuild|) {print $$file; system("sed","-ri.bak","/^[^ ]*PYTHON/s/^/#/;/^inherit/s/python//;s#[^\"(]*app-admin/eselect[^\")]*##;s#[^\"(]*sys-fs/udev[^\")]*##","$(STAGE3)".$$file); system("chroot","$(STAGE3)","ebuild","$$file","digest"); print "\n"}; $$prev=$$_' 
#	chroot $(STAGE3) env ROOT=$(TARGET) USE="make-symlinks -python" emerge --with-bdeps=n -ptv $(PACKAGES)
	chroot $(STAGE3) env ROOT=$(TARGET) USE="make-symlinks -python" emerge --with-bdeps=n $(PACKAGES)
	chroot $(STAGE3) env ROOT=$(TARGET) emerge --with-bdeps=n --depclean
	mountpoint $(STAGE3)/proc && chroot $(STAGE3) umount /proc || true
	# Чуть не снёс из-за опечатки кусок системы
	# С chroot'ом безопаснее
	chroot "$(STAGE3)" rm -vrf "$(TARGET)/usr/include" "$(TARGET)/usr/share/doc" "$(TARGET)/usr/share/locale" "$(TARGET)/var/db/pkg" "$(TARGET)/usr/share/aclocal" "$(TARGET)/usr/share/gnome" "$(TARGET)/usr/share/gtk-doc" "$(TARGET)/usr/share/man"
	cp -v $(STAGE3)//usr/lib/gcc/i686-pc-linux-gnu/*/lib*.so* $(STAGE3)/$(TARGET)/lib
#	cp $(CONFIG)/inittab $(STAGE3)/$(TARGET)/etc/inittab
#	cp $(CONFIG)/rc.init $(STAGE3)/$(TARGET)/sbin/rc.init
(плюс ещё патч для ebuild'а xorg-server, иначе он не собирается из-за бага в апстриме, но это вручную и, надеюсь, временно).

Обратите внимание на костыль, который убирает зависимости от python, eselect и udev, что даёт возможность выиграть ~200M от несжатой системы. Как правильно с точки зрения Gentoo-way хранить такие препарированные ebuild'ы? В локальном оверлее?

При этом du -sh для собранной системы даёт: 109M stage3/target/. При запуске ядро распаковывает initramfs (логично, правда?), что будет означать, что при таком подходе ещё до запуска init система займёт 109M ОЗУ. Для компьютера с 128M ОЗУ это будет неприлично много.

Правильно ли я понимаю, что получив в качестве initrd файловую систему squashfs, ядро её просто читает, а не распаковывает? Это уже лучше: в сжатом squashfs+xz виде initrd занимает всего 30M.

Что ещё можно вырезать из кишок Xorg или GTK+? Список устанавливаемых пакетов прилагаю.

AITap ()

[Gentoo]Как уменьшить размер системы?

Понадобилось мне собрать для своих нужд маленький live-дистрибутив, причём настолько маленький, что есть смысл запихать его целиком в initramfs.

Придя к выводу, что наиболее удобным buildroot можно считать gentoo stage3, я им воспользовался:

wget -cO./download/stage3-latest.tbz $(wget -qO- "http://gentoo.bloodhost.ru/releases/x86/autobuilds/current-stage3-i686/" | sed -rn '/i686-[0-9]+.tar.bz2"/{s#.*href="([^"]+)".*#http://gentoo.bloodhost.ru/releases/x86/autobuilds/current-stage3-i686/\1#p;q}')
tar xvf ./download/stage3-latest.tbz -C ./stage3/
wget -cO./download/portage-latest.txz http://gentoo.bloodhost.ru/releases/snapshots/current/portage-latest.tar.xz
tar xvf ./download/portage-latest.txz -C ./stage3//usr

Написал такие конфиги:

# make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -march=i686 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="i686-pc-linux-gnu"

USE="-* minimal"
VIDEO_CARDS="vesa"
# package.use
sys-apps/busybox savedconfig static
sys-block/gparted dmraid fat hfs jfs mdadm ntfs reiser4 reiserfs xfs

#required by x11-libs/gtk+-2.24.5-r1, required by dev-cpp/gtkmm-2.24.2, required by sys-block/gparted-0.9.1, required by gparted (argument)
x11-libs/cairo X svg
#required by app-text/gnome-doc-utils-0.20.6, required by sys-block/gparted-0.9.1, required by gparted (argument)
dev-libs/libxml2 python
#required by x11-libs/gtk+-2.24.5-r1, required by dev-cpp/gtkmm-2.24.2, required by sys-block/gparted-0.9.1, required by gparted (argument)
x11-libs/gdk-pixbuf X

x11-base/xorg-server kdrive

#required by dev-libs/libxml2-2.7.8-r3[python], required by x11-misc/shared-mime-info-0.90, required by x11-libs/gtk+-2.24.5-r1, required by dev-cpp/gtkmm-2.24.2, required by sys-block/gparted-0.9.1, required by gparted (argument)
dev-lang/python xml

И попытался собрать систему:

chroot ./stage3 env ROOT=/target emerge busybox xorg-server gparted

А emerge сначала потребовал изменить USE-флаги (см. выше), а потом поставил аж на 363M всяких программ.

Что можно сделать, чтобы ещё уменьшить размер системы? Сменить профиль?

Tarkus / # eselect profile list
Available profile symlink targets:
  [1]   default/linux/x86/10.0 *
  [2]   default/linux/x86/10.0/selinux
  [3]   default/linux/x86/10.0/desktop
  [4]   default/linux/x86/10.0/desktop/gnome
  [5]   default/linux/x86/10.0/desktop/kde
  [6]   default/linux/x86/10.0/developer
  [7]   default/linux/x86/10.0/server
  [8]   hardened/linux/x86
  [9]   hardened/linux/x86/selinux

AITap ()

udisks не блокирует дисковод и не следит за извлечением диска из него

Ку!

Дано: Debian Testing,

ii  udisks                                 1.0.4-2                                storage media interface
ii  udisks-glue                            1.3.2-1                                simple automount daemon with support for user-defined actions

Симптомы:

Когда я вставляю компакт-диск в дисковод, он нормально монтируется, с ним можно работать. Когда я нажимаю на кнопку извлечения на дисководе, диск выезжает, несмотря на то, что файловая система на нём смонтирована. Когда я монтирую тот же диск при помощи mount /media/cdrom0, дисковод блокируется нормально и не выезжает, пока я его не размонтирую.

Почему так?

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

Конфиг udisks-glue:

default {
	automount = true
	post_mount_command = "notify-send 'Device mounted' '%device_file - %mount_point'"
	post_unmount_command = "notify-send 'Device unmounted' '%device_file - %mount_point'"
}


filter cdrom {
	optical = true
	usage = filesystem
}

match cdrom { 
	automount = true
	post_mount_command = "notify-send 'Device mounted' '%device_file - %mount_point'"
	post_unmount_command = "udisks --eject %device_file; notify-send 'Device unmounted' '%device_file - %mount_point'"
}

Строчка в fstab:

/dev/sr0       /media/cdrom0   udf,iso9660 user,noauto     0       0

Лог, полученный от udisks --monitor-detail:

[23:57:26][aitap@Tarkus ~]> udisks --monitor-detail
Monitoring activity from the disks daemon. Press Ctrl+C to cancel.
 // я выдвигаю лоток привода, кладу на него диск и задвигаю лоток обратно
 // это появляется сразу:
changed:     /org/freedesktop/UDisks/devices/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
  detected at:                 Чтв 15 Дек 2011 17:05:20
  system internal:             0
  removable:                   1
  has media:                   0
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  0
  mount paths:             
  mounted by uid:              0
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:           
  presentation icon:           
  automount hint:              
  size:                        0
  block size:                  0
  job underway:                no
  usage:                       
  type:                        
  version:                     
  uuid:                        
  label:                       
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.01
    serial:                    
    WWN:                       
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host4
    similar devices:
    media:                     
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available
 // это - через несколько секунд:
changed:     /org/freedesktop/UDisks/devices/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
  detected at:                 Чтв 15 Дек 2011 17:05:20
  system internal:             0
  removable:                   1
  has media:                   1 (detected at Чтв 15 Дек 2011 23:58:31)
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  0
  mount paths:
  mounted by uid:              0
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:
  presentation icon:
  automount hint:
  size:                        692715520
  block size:                  2048
  job underway:                no
  usage:                       filesystem
  type:                        iso9660
  version:
  uuid:
  label:                       AITap Boot CD
  optical disc:
    blank:                     0
    appendable:                0
    closed:                    1
    num tracks:                1
    num audio tracks:          0
    num sessions:              1
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.01
    serial:
    WWN:
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host4
    similar devices:
    media:                     optical_cd_r
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available

job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                FilesystemMount, initiated by uid 1000
changed:     /org/freedesktop/UDisks/devices/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
  detected at:                 Чтв 15 Дек 2011 17:05:20
  system internal:             0
  removable:                   1
  has media:                   1 (detected at Чтв 15 Дек 2011 23:58:31)
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  1
  mount paths:             /media/cdrom0
  mounted by uid:              0
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:
  presentation icon:
  automount hint:
  size:                        692715520
  block size:                  2048
  job underway:                no
  usage:                       filesystem
  type:                        iso9660
  version:
  uuid:
  label:                       AITap Boot CD
  optical disc:
    blank:                     0
    appendable:                0
    closed:                    1
    num tracks:                1
    num audio tracks:          0
    num sessions:              1
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.01
    serial:
    WWN:
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host4
    similar devices:


    media:                     optical_cd_r
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available

job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                no

 // а теперь я вынимаю диск нажатием на кнопку извлечения на дисководе
 // и снова его задвигаю
 // и снова вынимаю
 // а теперь ввожу udisks --umount /dev/sr0
 // это появляется сразу:
job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                FilesystemUnmount, initiated by uid 1000
changed:     /org/freedesktop/UDisks/devices/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
  detected at:                 Чтв 15 Дек 2011 17:05:20
  system internal:             0
  removable:                   1
  has media:                   1 (detected at Чтв 15 Дек 2011 23:58:31)
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  0
  mount paths:
  mounted by uid:              0
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:
  presentation icon:
  automount hint:
  size:                        692715520
  block size:                  2048
  job underway:                FilesystemUnmount, initiated by uid 1000
  usage:                       filesystem
  type:                        iso9660
  version:
  uuid:
  label:                       AITap Boot CD
  optical disc:
    blank:                     0
    appendable:                0
    closed:                    1
    num tracks:                1
    num audio tracks:          0
    num sessions:              1
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.01
    serial:
    WWN:
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host4
    similar devices:
    media:                     optical_cd_r
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available

job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                no
job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                DriveEject, initiated by uid 1000
changed:     /org/freedesktop/UDisks/devices/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
  detected at:                 Чтв 15 Дек 2011 17:05:20
  system internal:             0
  removable:                   1
  has media:                   0
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  0
  mount paths:
  mounted by uid:              0
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:
  presentation icon:
  automount hint:
  size:                        0
  block size:                  0
  job underway:                DriveEject, initiated by uid 1000
  usage:
  type:
  version:
  uuid:
  label:
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.01
    serial:
    WWN:
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host4
    similar devices:
    media:
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available

 // это появляется после того, как udisks выдвинет лоток дисковода и покажет на экране никому не нужное сообщение
job-changed: /org/freedesktop/UDisks/devices/sr0
  job underway:                no

Пробовал комментировать строчку в fstab. Не помогло, разве что mountpoint изменялся с /media/cdrom0 на неопределённый в /media/.

AITap ()

Подземный стук на веб-сервере (кто-то стучится на него с locahost'а)

Сегодня заметил в логе веб-сервера lighttpd следующие странные строки:

localhost - - [11/Sep/2011:00:18:20 +0400] "GET  HTTP/1.0" 400 349 "-" "-"
(всего таких уже 28; первая была в 10/Sep/2011:15:58:39, последняя - 11/Sep/2011:00:18:20 +0400). Никакой логики во времени между запросами не наблюдается, сами запросы и ответы одинаковы:
GET  HTTP/1.0

Host: 127.0.0.1

Accept-Encoding: gzip

Connection: close


HTTP/1.0 400 Bad Request

Content-Type: text/html

Content-Length: 349

Connection: close

Date: Sat, 10 Sep 2011 19:17:50 GMT

Server: lighttpd/1.4.29



<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>400 - Bad Request</title>
 </head>
 <body>
  <h1>400 - Bad Request</h1>
 </body>
</html>

Пробовал:

  • iptables -j LOG, ULOG - не записывает PID
  • tcpdump и wireshark - не записывает PID
  • netstat -cntp - не успевает поймать момент ESTABILISHED (получил много строк с TIME_WAIT и без указания имени программы):
    tcp        0      0 127.0.0.1:47651         127.0.0.1:80            TIME_WAIT   -
  • systemtap - не разобрался, какую функцию ловить, чтобы можно было проверять целевой протокол, ip-адрес и порт, а также узнавать PID.

Как отловить басурмана (как минимум PID)?
Умеют ли вообще iptables и libpcap отлавливать PID процесса, отправляющего пакет, или они не работают на том уровне, на котором это возможно (как тогда работает nethogs)?

AITap ()

RSS подписка на новые темы