LINUX.ORG.RU

Сообщения true_admin

 

jagged alliance 2: оно как под линуксом?

Тут пришло от gag.com письмо что за 4 бакса можно взять ja2. Однако не понятно на сколько оно работоспособно под линухом. Гугление показало что... многие ссылки мертвы, инфа неактуальна, что с совместимостью с модами и AMD64 не понятно. Перелопачивать тонны фан-сайтов не хочется.

В общем, у кого какой опыт с нативной версией? Или забить и не насиловать труп?

true_admin
()

возврат ошибок системных вызовов

 , ,

Есть одна вещь которая меня коробит, это то как сделаны коды возврата в ядре. Идея простая: есть системные вызовы и есть стандартные коды возврата от SUCCESS до всяких EPERM, EBADF и прочих. Когда речь идёт о тривиальных вызовах типа open(«some file») всё понятно (и то бывают дурацкие проблемы со всякими xattrs, selinux и прочим, но selinux хотя бы логи умеет вести). Но есть гораздо более сложные ситуации когда внутри ядра происходит куча всего и одна и код возврата может быть использован в разных местах. Соотв. из userspace понять что там в ведре случилось невозможно. И что, блин, характерно, в логах тоже ничего не найдёшь.

Вот пример такого:

* We only trust the superuser with rebooting the system. */
- if (!capable(CAP_SYS_BOOT))
+ if (!capable(CAP_SYS_BOOT) || !capable(CAP_COMPROMISE_KERNEL))
return -EPERM;

Как бы с точки зрения ядра всё прекрасно, но вот для юзерспейса важно почему что-то не работает, иначе непонятно как исправлять ситуацию. И в данном случае без исходников ядра и долгого ковыряния определить почему ядро возвращает EPERM для рутового процесса очень сложно.

Я не требую введения иерархии эксепшенов. Прочто чочу чтобы ядро тоже умело писать в лог :(. Ну хотя бы в дебаг-сборке.

Перемещено mono из talks

true_admin
()

два гейтвея: http/https завернуть во второй

Хочу http трафик завернуть в vpn. Попробовал вот так, но в туннель попадают пакеты не с того адреса:

# ДОБАВЛЯЕМ
iptables -t mangle -A OUTPUT -p tcp -m multiport --dports 80 -j MARK --set-xmark 666
ip route add table exevpn default via 172.16.1.1
ip rule add fwmark 666 table exevpn
ip route flush cache

# ПРОВЕРЯЕМ
# iptables -t mangle -L OUTPUT -v
Chain OUTPUT (policy ACCEPT 556 packets, 33522 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  379 22740 MARK       tcp  --  any    any     anywhere             anywhere             multiport dports http MARK set 0x29a

# ip route get 6.6.6.6 mark 666
6.6.6.6 via 172.16.1.1 dev exevpn  src 172.16.1.111  mark 0x29a
    cache 

# ip route get 6.6.6.6
6.6.6.6 via 10.23.0.1 dev wlan0  src 10.23.2.131 
    cache 

Вроде бы и правила на фаерволе срабатывают и роутинг отрабатывает как надо. Но вот tcpdump говорит что в туннель exevpn попадают пакеты с src-ip интерфейса wlan0, а надо чтобы было с адреса 172.16.1.111:

$ sudo tcpdump -n -i exevpn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on exevpn, link-type EN10MB (Ethernet), capture size 65535 bytes
14:23:59.483671 IP 10.23.2.131.56446 > 87.250.250.119.80: Flags [S], seq 900304472, win 14600, options [mss 1460,sackOK,TS val 1053120 ecr 0,nop,wscale 7], length 0
14:23:59.483834 IP 10.23.2.131.35691 > 213.180.193.119.80: Flags [S], seq 2742770037, win 14600, options [mss 1460,sackOK,TS val 1053120 ecr 0,nop,wscale 7], length 0
14:24:00.486667 IP 10.23.2.131.56446 > 87.250.250.119.80: Flags [S], seq 900304472, win 14600, options [mss 1460,sackOK,TS val 1053421 ecr 0,nop,wscale 7], length 0

Что делать и почему так происходит? Неужели SNAT поднимать?

PS интерфейсы:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:17:30:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.23.2.131/16 brd 10.23.255.255 scope global wlan0
    inet6 fe80::c685:8ff:fe17:30c2/64 scope link 
       valid_lft forever preferred_lft forever
3: intbr: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether c6:02:87:04:13:ca brd ff:ff:ff:ff:ff:ff
    inet 172.16.5.254/24 brd 172.16.5.255 scope global intbr
    inet6 fe80::c402:87ff:fe04:13ca/64 scope link 
       valid_lft forever preferred_lft forever
6: exevpn: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/ether aa:cb:15:09:c0:bf brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.111/24 brd 172.16.1.255 scope global exevpn
    inet6 fe80::a8cb:15ff:fe09:c0bf/64 scope link 
       valid_lft forever preferred_lft forever

true_admin
()

как быстро создать свой ЯП?

 ,

Сабж. Есть идеи, хочу их попробовать. Если ли, скажем, какие-то тулкиты для эээ автоматизации этого? Ну, например, набор примитивов (структуры, списки, массивы ...), плюс какие-нить парсеры итд итп. Я не про yacc/bison+llvm, а про что-нить более высокоуровневое и лузер-френдли.

true_admin
()

феерический ппц нашего времени

 , , , ,

Давным-давно в systemd поломали dhcpcd@-сервис (а может он всегда был кривой). Проявляется это в том что там захардкодено eth0 в файле сервиса. Хрен бы с этим, но ведь с недавнего времени никаких eth0 больше нет, зато есть всякие enp3s0. И естестно это больше не работает вообще никак. Баг в арчлинукс направлен 10-го августа. Арчеводы быстренько закрыли с wontfix и перекинули проблему в upstream. А апстриму пофиг, апстрим не чешется. А между тем в обоих багтрекерах давным давно лежат решения проблем. Что делать, Зин?

Раньше говорили: «а ты написал багрепорт». Потом стали говорить «а ты засабмитил патч?». Что теперь говорить? «Постучал ли ты по башке девелоперам»? «Форкнул ли ты проект»? Зла на них всех не хватает :(. Короче, кто хочешь написать письмо Его Величеству? Я не в настроении писать цензурно.

Я давно предлагаю ввести новую должность - пинатель девелоперов.

PS а линукс тут при том что он служит низкоуровневой прослойкой для systemd.

Список использованной литературы:

https://bugs.archlinux.org/task/31093

https://bugs.freedesktop.org/show_bug.cgi?id=53954

true_admin
()

почему после копирования дистра на другой раздел он стал больше?

 , ,

Сабж.

# mkdir /tmp/arch
# mount --bind / /tmp/arch
# rsync -aHAXtShx --progress /tmp/arch/ /mnt/
sent 605.08M bytes  received 589.46K bytes  36.71M bytes/sec
total size is 611.91M  speedup is 1.01
# tune2fs -m 1 /dev/sda3
tune2fs 1.42.6 (21-Sep-2012)
Setting reserved blocks percentage to 1% (24412 blocks)
# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          960M  662M  250M  73% /
/dev/sda2       960M  662M  250M  73% /
/dev/sda2       960M  662M  250M  73% /tmp/arch
/dev/sda3       9.2G  790M  8.4G   9% /mnt
/dev/sda3       9.2G  790M  8.4G   9% /tmp/arch/mnt

Файлухи ext4, копировал с поддержкой sparse files, с хардлинками итп. Что я упустил?

PS кажется, я понял, так что пусть это будет задачкой для сисадминов.

true_admin
()

не хочет hostname выставлять по dhcp

 , ,

В /etc/conf.d/dhcpcd стоит DHCPCD_ARGS="-q -e force_hostname=YES", /etc/hostname я удалил, а имя всё равно localhost. По логам dnsmasq отдаёт корректное hostname.

Опытным путём было установлено что при следующем запросе (когда lease time истекает) оно таки выставляет правильный hostname. Вопрос: как сделать так чтобы оно сразу получало по сети нормальное имя?

true_admin
()

работает ли в autofs wildcard?

 ,

Пытаюсь придумать что-то удобное для автомонтирования флешек. Наткнулся на autofs, но, по-моему, там конфиги мегакостыльные. Простой сценарий когда прописываешь путь к устройству и папку монтирования работает, а вот со всеми этими wild cards не хочет работать, хотя делаю всё по мануалу с оффсайта и по манам.

Т.е. такая байда у меня не работает:

[root@ux32vd /]# cat /etc/autofs/auto.master 
/media /etc/autofs/auto.media

[root@ux32vd /]# cat /etc/autofs/auto.media 
*    -fstype=auto,sync     :/dev/sd&

[root@ux32vd ~]# automount -m

autofs dump map information
===========================

global options: none configured

Mount point: /media

source(s):

  instance type(s): file 
  map: /etc/autofs/auto.media

  * | -fstype=auto,sync     :/dev/sd&

Демона запускал через automount -v -d -f, всё без толку, путного ничего не выводит. ЧЯДНТ?

Если задать явно что /dev/sdb1 монтировать в /media/flashka то всё работает, но у флешки не обязательно имя sdb и не обязательно там один раздел.

true_admin
()

что есть философия unix

 

В порядке ликбеза.

Очень много споров на лоре на эту тему и стороны никак не могут между собой договориться. И тут, читая википедию на тему Поттеринг vs груповой шедулинг в cfs, наткнулся на, вы не поверите, http://en.wikipedia.org/wiki/Unix_philosophy . Что ж, теперь хоть понятно откуда корни у этой философии.

Для Ъ: там не только про модульность и «каждая программа должна делать только одну вещь».

true_admin
()

не менять разрешение консоли при загрузки

 ,

Хочу arch грузить с kvm -curses. Systemd хитрее: не смотря на nosetmode, nofb итп он всё равно меняет. Как я выяснил с systemd.confirm_spawn=true, происходит это в момент запуска udev.

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

true_admin
()

Accessing a corrupted shared library

 , ,

Почему на выходе получается битая либа? gcc version 4.7.2, ld 2.23.1 . Раньше такое работало.

p1@libtest$ cat ./test.c 
#include<stdio.h>
const char interpreter[] __attribute__((section(".interp"))) = "/lib/ld-linux.so.2";

int test(void) {
    printf("test\n");
}

p1@libtest$ cat ./Makefile 
test.so: test.c
	gcc -shared -ggdb -fpic -pipe -Wl,-e,test ./test.c -o test.so -ldl


p1@libtest$ make
gcc -shared -ggdb -fpic -pipe -Wl,-e,test ./test.c -o test.so -ldl
p1@libtest$ ldd ./test.so 
/usr/bin/ldd: line 117: ./test.so: Accessing a corrupted shared library
true_admin
()

узнать текущую частоту процессора не через proc/ACPI/whatever

Хочу узнать текущую частоту процессора в ноутбуке. Данные которые выдают powertop или /proc/cpuinfo противоречат спецификациям (что, кстати, заметил не только я, но и https://wiki.ubuntu.com/Kernel/Reference/fwts).

Вот вопрос как вычислить программными средствами. Может там какой цикл сделать и замерить скорость его выполнения?

Проц i7-3517, частоту пишет 2.8GHz для всех четырёх ядер (включая hyper-threading) стабильно. Должно быть 2.4, если верить powertop, или 2.3 если верить http://processors.findthebest.com/l/844/Intel-i7-3517U.

Ноут asus ux32vd.

true_admin
()

gmail теперь не работает с почтовиками с self-signed certificates

Сорри, если уже обсудили.

Теперь только «валидные» сертификаты принимаются если настроен забор почты с другого сервера: http://support.google.com/mail/bin/answer.py?hl=en&answer=21291&ctx=g...

Свой сертификат импортировать нельзя. Со слов гугла это делается для секурности. Поэтому или платите за сертификат, или ... снимите галочку «использовать ssl» в гэмыли. Секурно, мда..

А проблем две: 1) лично я не собираюсь 10 сертификатов покупать только чтобы угодить гуглу. Хотя, может жизнь заставит.

2) когда сервер не свой, а «корпоративный», заставить что-то сделать очень сложно. У подруги как раз этот случай, потому и плачусь.

true_admin
()

реально ли играть с bumblebee?

 , ,

Купил не так давно ноут asus ux32vd с core i7-3517u и geforce GT 620M. Решил поиграть (~6.5лет не играл, а тут захотелось). Дистр арч, поставил bumblebee из aur, всё как по инструкции (исключая допиливания под ядро 3.7). Проверил, optirun на glxspheres аж на 30% быстрее hd4000 (т.е. работает). Итак, запускаю American McGee's Alice (платиновый статус в wine имеет) и...

Выставляю разрешние 1920x1080, максимальные текстуры и 32-битный цвет (игра-то аж 2000 года) и... адские тормоза. Понижение качества текстур до среднего (хотя в игре уже ничего не видно, одно мыло) довело фпс аж до 12-14.5. В отдельных редких случаях фпс мог и превысить 15 (до 16.5 где-то), но только если камера в стену, нет врагов и не стрелять. Мышка реагирует с полусекундной задержкой, клава тоже. С меньшим разрешением оно чуток лучше шевелилось, но всё равно неиграбельно и были проблемы с масштабированием картинки (похоже, из-за того что игра не знает о существовании 16:9 моников, хотя можно подшаманить в конфигах). Я пытался применить компрессию (optirun -c jpeg), это только добавило тормозов. По top ядра все загружены на полную (интересно почему, отключение ядер не сильно уменьшило fps). На hd4000 тормозов ещё больше, тут уже откровенное слайдшоу. По-моему, у меня riva tnt третьекваку лет 12 назад быстрее гоняла. Правда, в 16-и битном цвете и 640x480, но всё же.

Так вот, это у всех так с bumblebee и virtualgl или только у меня?

PS я бы подумал что это тупо ноут слабый, но на ютубе под виндаме оно сносно шевелится даже в современных играх, надо только спецэффекты поубавить в соответствии с мощностью видяхи.

true_admin
()

увеличить чувствительнось тачпада

Хочу чтобы тачпад был более скоростным. Пробовал через xset mouse 10 1 и другие числа, не помогает. Пробовал через xinput шаманить с параметрами типа Device Accel Constant Deceleration, Device Accel Velocity Scaling и прочими, всё равно ничего не получается. Через synclient тоже не вышло. Вот уменьшить не проблема, проблема увеличить.

Я может что-то в корне не так делаю? Тачпад 'ETPS/2 Elantech Touchpad'

true_admin
()

реально ли перепаять память в ультрабуке для увеличения объёма?

Уже почти конец света, а ноуты в массе до сих пор с 4Gb памяти идут, даже якобы топовые. В большинстве случаев внутри всё намертво распаяно.

Реально ли в полукустарном окружении перенести более ёмкие микрухи на материнку ноута? Микрухи снять с планки памяти, например, или заказать отдельно. Я пока вижу основную проблема в пайке bga-корпусов.

true_admin
()

ipython vs нормальный питон: import urllib

 

Почему если в ipython импортировать urllib то импортируется и urllib.request? Это фича такая?

$ ipython 
Python 3.3.0 (default, Sep 29 2012, 15:50:43) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
[skip]
In [1]: import urllib

In [2]: urllib.request.urlopen
Out[2]: <function urllib.request.urlopen>
$ python3
Python 3.3.0 (default, Sep 29 2012, 15:50:43) 
[GCC 4.7.1 20120721 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> urllib.request.urlopen
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'request'

true_admin
()

не могу собрать код из real world haskell

 

Вот этот код не собирается потому что был написан под Control.OldException который давно выкинули. Моих знаний не хватило чтобы переделать. Можете подсказать что поменять?

module NiceFork
    (
      ThreadManager
    , newManager
    , forkManaged
    , getStatus
    , waitFor
    , waitAll
    ) where

import Control.Monad (join)
import Control.Concurrent
import Control.Exception (Exception, try)

import qualified Data.Map as M

data ThreadStatus = Running
                  | Finished         -- terminated normally
                  | Threw Exception  -- killed by uncaught exception
                    deriving (Eq, Show)

newtype ThreadManager =
    Mgr (MVar (M.Map ThreadId (MVar ThreadStatus)))
    deriving (Eq)

-- | Sleep :)
sleep :: Double -> IO ()
sleep s = threadDelay $ round $ s * 1000000

-- | Create a new thread manager.
newManager :: IO ThreadManager
newManager = Mgr `fmap` newMVar M.empty

-- | Create a new managed thread.
forkManaged :: ThreadManager -> IO () -> IO ThreadId
forkManaged (Mgr mgr) body =
    modifyMVar mgr $ \m -> do
      state <- newEmptyMVar
      tid <- forkIO $ do
        result <- try body
        putMVar state (either Threw (const Finished) result)
      return (M.insert tid state m, tid)

-- | Immediately return the status of a managed thread.
getStatus :: ThreadManager -> ThreadId -> IO (Maybe ThreadStatus)
getStatus (Mgr mgr) tid =
  modifyMVar mgr $ \m ->
    case M.lookup tid m of
      Nothing -> return (m, Nothing)
      Just st -> tryTakeMVar st >>= \mst -> case mst of
                   Nothing -> return (m, Just Running)
                   Just sth -> return (M.delete tid m, Just sth)

-- | Block until a specific managed thread terminates.
waitFor :: ThreadManager -> ThreadId -> IO (Maybe ThreadStatus)
waitFor (Mgr mgr) tid =
  join . modifyMVar mgr $ \m ->
    return $ case M.updateLookupWithKey (\_ _ -> Nothing) tid m of
      (Nothing, _) -> (m, return Nothing)
      (Just st, m') -> (m', Just `fmap` takeMVar st)


-- | Block until all managed threads terminate.
waitAll :: ThreadManager -> IO ()
waitAll (Mgr mgr) = modifyMVar mgr elems >>= mapM_ takeMVar
    where elems m = return (M.empty, M.elems m)
true_admin
()

отговорите: asus ux32vd

Я уже года четыре себе ноут выбираю и, кажись, нашёл свой идеал: asus 32vd. Там есть слот для оперативы, так что я могу туда запихнуть 8гб плашку и получить 10гиг в сумме (2гб на мамке распаяно). Так же там обычный венник стоит (правда, 7мм высотой) и 32гб ssd распаяно на мамке. Имхо, это превосходно: я систему поставлю на 32гига, а винтом буду пользоваться для помойки. В остальных случаях его можно будет отключить чтобы не сдох от, скажем, вибрации. Батарейка средняя, 48Wh. А так же: fullhd ISP матрица!

Из недостатков разве что nvidia optimus, но мне «дискретное» видео вообще не нужно, отключу сразу.

В общем, неужели я нашёл идеал?

UP: экран мерцает, юзеры жалуются на брак и на мягкую верхнюю крышку. Думаю откажусь от покупки

true_admin
()

временный тихий режим

Я часто забываю восстановить громкость звонка после того как поставил её в ноль, скажем, на совещании. В результате потом пропускаю звонки. Можно ли какой-нить софтиной выставить «тихий режим - 1час!» ? Вернее, кто что порекомендует для этого?

OS: android 4.1 (cm10), трубка sgs2

true_admin
()