четверг, 1 января 2009 г.

Fuck NetworkManager

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

Как убить NetworkManager.


/etc/network # update-rc.d -f NetworkManager remove
Removing any system startup links for /etc/init.d/NetworkManager ...
/etc/rc2.d/S28NetworkManager
/etc/rc3.d/S28NetworkManager
/etc/rc4.d/S28NetworkManager
/etc/rc5.d/S28NetworkManager
/etc/network # /etc/init.d/NetworkManager stop
[199G[ OK ]


Тут самое время записать настройки сети в /etc/networking/interfaces. Например, вот так:


auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.1.1.10
netmask 255.255.255.0
gateway 10.1.1.1


Записи auto определяют, какие интерфейсы следует поднимать по ifup -a.
/etc/init.d/networking start вызывает ifup -a (а /etc/init.d/networking stop соответственно ifdown -a ).

Еще нужно записать в /etc/resolv.conf свой любимый сервер DNS, как-то вот так:


nameserver 10.1.1.1


И, введя все это:


/etc/network # /etc/init.d/networking restart
* Reconfiguring network interfaces...  RTNETLINK answers: No such process
SIOCDELRT: No such process
[199G[ OK ]

art of mount: current status

Немного о том, как монтировать разделы vfat. Особенно под Kubuntu 8.10 . Особенно полные файлов с русскими названиями.

1. -o remount ни черта не работает.


vg@bishop:/media$ grep sda7 /proc/mounts
/dev/sda7 /media/disk-2 vfat rw,nosuid,nodev,uid=1000,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1 0 0
vg@bishop:/media$ sudo mount -v -t vfat -o codepage=cp866,iocharset=utf8,remount /dev/sda7 disk-2/
/dev/sda7 on /media/disk-2 type vfat (rw,codepage=cp866,iocharset=utf8)
vg@bishop:/media$ grep sda7 /proc/mounts
/dev/sda7 /media/disk-2 vfat rw,uid=1000,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1 0 0


Как можно видеть, ничего не изменилось. Система даже не сказала "мне плевать". Она просто промолчала. Это плохо.

2. mount / mount -l ни черта не работает.


vg@bishop:/media$ mount |grep sda7
/dev/sda7 on /media/disk-2 type vfat (rw,codepage=cp866,iocharset=utf8)
vg@bishop:/media$ sudo mount -v -t vfat -o codepage=qwerqwerqwerqw,iocharset=utf8qwerqwer,asdfasd=xcvzxcv,remount /dev/sda7 disk-2/
/dev/sda7 on /media/disk-2 type vfat (rw,codepage=qwerqwerqwerqw,iocharset=utf8qwerqwer,asdfasd=xcvzxcv)
vg@bishop:/media$ mount |grep sda7
/dev/sda7 on /media/disk-2 type vfat (rw,codepage=qwerqwerqwerqw,iocharset=utf8qwerqwer,asdfasd=xcvzxcv)


Т.е. она печатает все, что мы ей дали в -o, даже не пытаясь осмыслить. Тоже плохо.
Таким образом, если нужно посмотреть состояние смонтированных ФС, лучше смотреть в /proc/mounts .

3. Как справиться.


vg@bishop:/media$ sudo umount disk-2
vg@bishop:/media$ sudo mount -t vfat -o rw,nodev,nosuid,noexec,fmask=0111,dmask=0,codepage=866,iocharset=utf8 /dev/sda7 dos/
vg@bishop:/media$ ls dos/ru/
(2005) сатана [promotional version] Drugly Cats алёша пальцев Кровосток Михей и Джуманджи МОРАБЛИ паперный --Ш2 ульи шлюз


Если не размонтировать автоматически созданный "диск-2", то раздел снова смонтируется с уже использованными до этого параметрами. А они неправильные.

Также, значения fmask и dmask инвертируются. Отсюда, когда мы говорим fmask=0111, получается, что все файлы в разделе будут доступны на чтение и запись. А dmask=0 значит, что каталоги должны быть доступны на ВСЕ.

понедельник, 3 ноября 2008 г.

ALSA configuration tree

Система управления проигрыванием и записью звука в Линуксе ALSA дает очень много возможностей для настройки. Конфигурация ALSA представляет собой дерево: ее составные (compound) переменные могут включать в себя поименованные ссылки на другие переменные, которые в свою очередь также могут быть составными. Кроме составных переменных, в этом дереве еще могут быть текстовые строки, целые числа, дробные числа и 64битные целые числа (почему-то это отдельный тип). У каждой переменной есть имя внутри своего узла, поэтому на любую переменную можно сослаться выражением типа


pcm.cowbell.slave.type


Чем-то это напоминает мне SNMP.

Настройки, грубо говоря, хранятся в трех файлах:




/usr/share/alsa/alsa.conf
а на Федоре это /etc/alsa/alsa.conf

Настройки данной версии программы ALSA
/etc/asound.conf
Настройки для данной машины
~/.asoundrc
Настройки пользователя. Это место не стоит использовать для описания физических устройств, но можно описать тут разные виртуальные миксеры и прочее


Обо всем этом хорошо написано в http://www.volkerschatz.com/noise/alsa.html. А здесь я хочу написать вот о чем.

Разделы дерева конфигурации



/

pcm/
Именованные ссылки на описания устройств, пригодных для проигрывания и записи.
Например:
Команды aplay -Dcowbell bang.wav или arecord -Dcowbell bang.wav говорят ALSA, что описание устройства нужно прочитать из составной переменной pcm.cowbell.
Команда aplay -Dhw:0,0 ведет вот в это место файла alsa.conf


pcm.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type string
default {
@func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
default {
@func refer
name defaults.pcm.card
}
}
}
@args.DEV {
type integer
default {
@func igetenv
vars [
ALSA_PCM_DEVICE
]
default {
@func refer
name defaults.pcm.device
}
}
}
@args.SUBDEV {
type integer
default {
@func refer
name defaults.pcm.subdevice
}
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
hint {
show {
@func refer
name defaults.namehint.extended
}
description "Direct hardware device without any conversions"
}
}

Этот код говорит, куда нужно поставить параметры, идущие после "hw:" в опции -D.
Можно видеть, что устройство hw, вызываемое конструкцией -Dhw:x,y[,z] - это оболочка для встроенного типа PCM-устройств "hw".


pcm_slave/
Поименованные описания нижележащих устройств для конструкций, использующих нижележащие устройства. Например:


pcm_slave.bling {
pcm {
type hw
card 0
device 0
}
}

pcm.blang {
type plug
slave bling
}


Строка "bling" в поле slave объекта pcm.blang указывает на объект в поле "blang" объекта pcm_slave.



pcm_type

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

ctl_type/
ctl/

Похоже, здесь некоторые описания параметров для миксера


rawmidi_type/
rawmidi/
seq_type/
seq/
Это все что-то для МИДИ


server/
pcm_scope/
pcm_scope_type/
pcm_hook/
pcm_hook_type/
hook_args/
Вообще не понял.