LINUX.ORG.RU

Сообщения amaora

 

music request 2

Фильтрация по тегам не достаточна точна.

http://www.jamendo.com/ru/track/348646

amaora
()

[laptop_mode][reiserfs] Частая запись

Работает rtorrent, пишет на диск, не делает fsync, смотрел strace. Диск смонтирован с параметром commit=480 (хотя ман говорит что для reiserfs нет такого). Включен laptop_mode,

init_laptop() {
        echo 5 > /proc/sys/vm/laptop_mode
        echo 48000 > /proc/sys/vm/dirty_expire_centisecs
        echo 48000 > /proc/sys/vm/dirty_writeback_centisecs
        echo 20 > /proc/sys/vm/dirty_ratio
        echo 1 > /proc/sys/vm/dirty_background_ratio
        blockdev --setfra 16384 /dev/sda
}

Результат, каждые 4-5 секунд дергается диск. Как это можно подебажить? чтобы понять причину.

Скорость прибывания данных ~200Кб/сек, не так быстро чтобы записывать каждые 5 секунд. Память 2G, почти вся свободна.

 

amaora
()

[spinlock, atomic] без готовых инструкций

Как реализовать для примера атомарный инкремент имея только инструкции чтения сложения и записи? Кажется есть какой-то метод, как-то вот так, точно не помню, найти не могу (не знаю как называется),

#define MAX_THREAD		(2)

#define RET_OK			(0)
#define RET_FAIL		(-1)

struct atvar {
	int	val;
	int	tab[MAX_THREAD];
};

int at_init(struct atvar *v)
{
	int	i;

	v->val = 0;

	for (i = 0; i < MAX_THREAD; ++i)
		v->tab[i] = 0;
}

int at_inc(struct atvar *v, int tid)
{
	int	i, rval;

	for (i = 0; i < MAX_THREAD; ++i) {
		if (v->tab[i])
			return RET_FAIL;
	}

	v->tab[tid] = 1;

	for (i = 0; i < MAX_THREAD; ++i) {
		if (i != tid && v->tab[i]) {
			v->tab[tid] = 0;
			return RET_FAIL;
		}
	}
	
	rval = v->val;
	v->val = rval + 1;

	v->tab[tid] = 0;
	return RET_OK;
}

И ещё возникает вопрос как анализировать правильность подобных алгоритмов.

amaora
()

[eeepc1215p] backlight после рестрата

Если поменять на 0% и сделать рестарт, то это значение остается судя по видимой яркости и току потребления, но ядро принимает его за 100% и каким-то образом продолжает регулировку в новом диапазоне.

Z    0%   10%  20%  30%  40%  50%  60%  70%  80%  90%  100%
-----*----*----*----*----*----*----*----*----*----*----*
0%   100%
-----*

Можно сделать ещё темнее и сберечь ~0.2W. Работает одинаково хорошо через /sys/class, xbacklight, Fn+F5/F6. Но что это за багофича? И как исправить?

CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y

По каким словам искать?

amaora
()

Способы сделать suspend to disk

Вот стало надобно это сконфирурить, но возникают вопросы, зачем столько
способов сделать suspend и какой и чем лучше/хуже, s2ram/standby не
интересуют, только на диск.

1. echo disk > /sys/power/state + cmdline=«resume=/dev/<yourdev>»
2. s2disk + initramfs + resume
3. tuxonice, какие-то сторонние патчи, но не понятно зачем

Попробовал первый способ, похоже там даже есть сжатие, сначала опасался,
что это будет преимуществом user space методов. Что используете и почему?

Спасибо.

amaora
()

[C] Чтение файлов без блокировки

Такое бывает? При условии, что использовать можно только libc и SDL. Вносить треды и их синхронизировать мне не кажется хорошей идеей.

 

amaora
()

[initramfs][diskless][busybox] Не работает

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

1. Не работает init, точнее не читает /etc/inittab

$ pwd
/home/amaora/devel/imx233/build/rootfs
$ ls -l
...
lrwxrwxrwx 1 amaora users   11 Aug 20 18:46 init -> bin/busybox

$ cat etc/inittab 
# /etc/inittab
#

ttyAM0::sysinit:/etc/rc.init
ttyAM0::shutdown:/etc/rc.clean

tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2

ttyAM0::respawn:/sbin/getty -L ttyAM0 115200 vt100

Результат,

...
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP cubic registered
NET: Registered protocol family 17
Freeing init memory: 852K
can't run '/etc/init.d/rcS': No such file or directory
can't open /dev/tty3: No such file or directory
can't open /dev/tty4: No such file or directory

can't open /dev/tty2: No such file or directory
can't open /dev/tty3: No such file or directory
can't open /dev/tty4: No such file or directory

судя по исходникам это дефолтная конфигурация используемая в случае неудачного чтения конфига.

2. Добавил в cmdline ядра init=/bin/sh

...
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP cubic registered
NET: Registered protocol family 17
Freeing init memory: 856K
can't run '/etcmmc0: new high speed SD card at address 0002
mmcblk0: mmc0:0002 00000 954 MiB 
 mmcblk0: p1 p2

(none) login: 
(none) login: ls
Password: 

(none) login: root
Password: 

(none) login: no
Password: 

(none) login:

?

 ,

amaora
()

[gentoo] сломался ppp

Похоже после перехода на openrc,

~ /etc/conf.d/net

link_ppp1=«/dev/ttyACM0»
username_ppp1=«mobile»
password_ppp1=«internet»

pppd_ppp1=(
   «defaultroute»
   «usepeerdns»
   «noipdefault»
   «ipcp-accept-local»
   «ipcp-accept-remote»
   noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)

chat_ppp1=(
   'TIMEOUT' '45'
   'ABORT' 'BUSY'
   'ABORT' 'NO CARRIER'
   'ABORT' 'ERROR'
   " 'ATZ'
   'OK' 'AT+CRM=i1;&C0'
   'OK' 'ATDT#777'
   'CONNECT' "
)

# /etc/init.d/net.ppp1 restart
* Bringing up interface ppp1
* Starting pppd in ppp1 ... [ ok ]
* Backgrounding ...
* WARNING: net.ppp1 has started, but is inactive

# cat /var/log/ppp-connect-errors
sh: -c: line 0: syntax error near unexpected token `;&'
sh: -c: line 0: `/usr/sbin/chat -e -E -v TIMEOUT 45 ABORT BUSY ABORT NO CARRIER ABORT ERROR ATZ OK AT+CRM=i1;&C0 OK ATDT#777 CONNECT'

Делал всякие ";&" и \;\&, не помогает, если эту строку убрать тоже фэйл, но в логах ничего нет.

 

amaora
()

[telnet] Выключить локальное эхо

Установлен вот такой telnet клиент.

net-misc/telnet-bsd

Как ему выключить local echo не понятно. Есть только задание символа для переключения режимов удаленной стороной насколько я понял. Какой клиент умеет выключать эхо?

 

amaora
()

[gentoo] Missing charsets in String to FontSet conversion

После emerge world стал очень медленно и без шрифтов запускаться gvim. Раньше такое было, но как решить не помню. Уге перестановил шрифты, перегенерил локали, пробовал use флаги (nls,...), не помогает.

$ gvim
Warning: Missing charsets in String to FontSet conversion
Warning: Missing charsets in String to FontSet conversion

Да и переключение язиков в Xorg сломалось тоге, этот текст прошел через translit.ru.

Thanks.

 

amaora
()

[gentoo][embedded] время

Устройство имеет rtc, но не имеет питания для rtc. Часы каждый раз обнуляются. В логе загрузки следующее.

 * Mounting proc at /proc ...                                             [ ok ]
 * Mounting sysfs at /sys ...                                             [ ok ]
 * Mounting /dev ...                                                      [ ok ]
 * Starting udevd ...                                                     [ ok ]
 * Populating /dev with existing devices through uevents ...              [ ok ]
 * Waiting for uevents to be processed ...                                [ ok ]
 * Mounting devpts at /dev/pts ...                                        [ ok ]
 * Checking root filesystem ...Reiserfs super block in block 16 on 0x5b000 of format 3.6 with standard journal
Blocks (total/free): 3148736/2951371 by 4096 bytes
Filesystem is clean
File system check timestamp is in the future. Checking now.
Filesystem seems mounted read-only. Skipping journal replay.
File system check timestamp is in the future. Checking now.
Checking internal tree.. finished
                                           [ ok ]
 * Remounting root filesystem read/write ...                              [ ok ]
 * Checking all filesystems ...                                           [ ok ]
 * Mounting local filesystems ...                                         [ ok ]
 * Activating (possible) swap ...                                         [ ok ]
 * Setting system clock using the hardware clock [Local Time] ...
 * hwclock: settimeofday() failed, errno=22: Invalid argument.
 * Failed to set clock You will need to set the clock yourself
                                                                          [ !! ]
 * Configuring kernel parameters ...Unknown HZ value! (83) Assume 100.
                                      [ ok ]
 * Cleaning /var/lock, /var/run ...Unknown HZ value! (82) Assume 100.
                                       [ ok ]
 * Wiping /tmp directory ...                                              [ ok ]
 * One of the files in /etc/{conf.d,init.d} or /etc/rc.conf
 * has a modification time in the future!
 * One of the files in /etc/{conf.d,init.d} or /etc/rc.conf
 * has a modification time in the future!
 * One of the files in /etc/{conf.d,init.d} or /etc/rc.conf
 * has a modification time in the future!
 * One of the files in /etc/{conf.d,init.d} or /etc/rc.conf
 * has a modification time in the future!
...

Думаю надо сохранять время в файл, а когда будет доступна сеть использовать ntp. Вопрос в том есть ли, что нибудь готовое для этого? или мне самому переписывать /etc/init.d/clock ?

 ,

amaora
()

[gentoo] root password

Нет возможности сделать chroot на свеже-распакованную из stage3 систему. Делаю init=/bin/sh,

Freeing init memory: 112K
sh: cannot set terminal process group (-1): Inappropriate ioctl for device
sh: no job control in this shell
sh-4.1#
sh-4.1# su
bash: no job control in this shell
(none) / #
(none) / # passwd 
New password: 
Retype new password: 
passwd: password updated successfully
(none) / #
(none) / # whoami 
root
(none) / #
(none) / # su operator
bash: no job control in this shell
bash: /root/.bashrc: Permission denied
operator@(none) / $ 
operator@(none) / $ whoami 
operator
operator@(none) / $ su
Password: 
su: Permission denied
operator@(none) / $
operator@(none) / $ exit

// reboot

This is localhost.unknown_domain (Linux armv5tejl 2.6.35.3+) 00:02:26

localhost login: root
Password: 

Login incorrect

Что не так, и как надо?

 

amaora
()

Ошибки сборки модулей ядра

$ make CONFIG_DEBUG_SECTION_MISMATCH=y zImage modules

...

WARNING: vmlinux.o(.data+0x1f858): Section mismatch in reference from the variable udc_driver to the function .init.text:fsl_udc_probe()
The variable udc_driver references
the function __init fsl_udc_probe()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, 

  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
  KSYM    .tmp_kallsyms1.S
  AS      .tmp_kallsyms1.o
  LD      .tmp_vmlinux2
  KSYM    .tmp_kallsyms2.S
  AS      .tmp_kallsyms2.o
  LD      vmlinux
  SYSMAP  System.map
  SYSMAP  .tmp_System.map
  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  GZIP    arch/arm/boot/compressed/piggy.gzip
  AS      arch/arm/boot/compressed/piggy.gzip.o
  CC      arch/arm/boot/compressed/misc.o
  CC      arch/arm/boot/compressed/decompress.o
  SHIPPED arch/arm/boot/compressed/lib1funcs.S
  AS      arch/arm/boot/compressed/lib1funcs.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  Building modules, stage 2.
  MODPOST 55 modules

...

WARNING: drivers/usb/gadget/g_serial.o(.data+0x240): Section mismatch in reference from the variable gserial_driver to the function .init.text:gs_bind()
The variable gserial_driver references
the function __init gs_bind()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, 

ERROR: "soc_codec_dev_mxs" [sound/soc/mxs/snd-soc-mxs-evk-adc.ko] undefined!
ERROR: "mxs_codec_dai" [sound/soc/mxs/snd-soc-mxs-evk-adc.ko] undefined!
ERROR: "mxs_init_lcdif" [drivers/video/mxs/mxsfb.ko] undefined!
ERROR: "mxs_reset_block" [drivers/mmc/host/mxs-mmc.ko] undefined!
ERROR: "mxsfb_get_info" [drivers/media/video/mxs_pxp.ko] undefined!
ERROR: "mxsfb_cfg_pxp" [drivers/media/video/mxs_pxp.ko] undefined!
ERROR: "input_register_polled_device" [drivers/hwmon/mxc_mma7450.ko] undefined!
ERROR: "input_allocate_polled_device" [drivers/hwmon/mxc_mma7450.ko] undefined!
ERROR: "input_free_polled_device" [drivers/hwmon/mxc_mma7450.ko] undefined!
ERROR: "input_unregister_polled_device" [drivers/hwmon/mxc_mma7450.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

Ядро патченое, из git freescale. Однако, подобные проблемы (undefined!) наблюдаются и при сборке linux-2.6.34-gentoo-r12.

amaora
()

Сравнение конфигов ядра

Чем можно смотреть отличия между двумя конфигами ядра?

diff не подходит, т.к. учитывает порядок строк и комменты.

Спасибо.

amaora
()

[device][usb] volatile storage

Бывают такие? Тоже, что и flash drive только память не flash а ram (sd,ddrsd,...).

Если нет, то интересуют идеи как дешево сделать хотябы 1Гб.

_

 ,

amaora
()

[задача] Продолжите последовательность

1. Pseudo terminals
2. Loop device
3. FUSE
4. TUN/TAP
5. ...

 

amaora
()

[plan9] Пересобрать ядро

Есть новая инсталляция plan9 в qemu. При старте rio, в окне qemu цветной мусор, хотя при установке rio нормально работал. Удалось нагуглить, что это может пройти если пересобрать ядро. Итак вопрос. Как получить sys шелл и при этом не пытаться стартовать rio? от пользователя none не знаю как пробраться к sys, auth/login требует какие-то пароли. Если же при старте указать sys то будет запуск rio и фэйл. Кто нибудь здесь знает.

 

amaora
()

[gentoo] Сделал find /etc/ | xargs rm

Бэкапа нет. Не удается переключиться на другой тег в wmii, там make.conf остался открыт в gvim. :(

Есть какие нибудь идеи?
Что надо симержить для восстановления? хотя emerge тоже сломался :(

1. Распаковать /etc/ из stage
2. Узнать какие конфиги были удалены (как?)
3. Перемержить соответствующие пакеты

Все верно? но как же все таки спасти make.conf

 

amaora
()

[gmailfs] Куда ещё можно делать бэкапы?

Этот скриптик на питоне похоже не очень стабилен, и у меня не работает. Если бы работал, был бы подходящий вариант, для хранения исходников/конфигов/etc.

amaora
()

[jabber] mcabber shell-bot

--> cat jbot.serv
<== #!/bin/sh
<== rm -f ~/utils/jbot.event.d/*
<== proxychains mcabber -f ~/.mcabberrc.bot

--> cat jbot.shell
<== #!/bin/sh
<== ADMIN_JID=«someone@jabber.ru»
<== while true; do
<== cat ~/utils/jbot.shell.in | while read cmd; do
<== $cmd 2>&1 | while read ln; do
<== echo «/say_to $ADMIN_JID $ln» > ~/utils/jbot.fifo
<== done
<== done
<== done

--> cat jbot.event
<== #!/bin/sh
<== ADMIN_JID=«someone@jabber.ru»
<== test «$1» == «MSG» || exit
<== test «$2» == «IN» || exit
<== test «$3» == «$ADMIN_JID» || exit
<== test «$4» || exit
<== cat $4 > ~/utils/jbot.shell.in
<== rm -f $4

Как это можно улучшить, чтобы хотя бы cd, su, ssh нормально работали? У меня идеи закончились, ясно только, что надо держать отдельный процесс шелла, но перенаправить туда строки и забрать вывод не очень то получается.

 

amaora
()

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