LINUX.ORG.RU

Сообщения PamidoR

 

Рандомно меняются местами правый и левый каналы звука при использовании микрофона

Привет, лор!

Debian 10.3
Pulseaudio 12.2
USB-звуковуха Lexicon Alpha

Происходит непонятная дичь: если использовать микрофон (болтать в голосовых чатах, писать что-то в Audacity), то в абсолютно рандомные моменты левый и правый выходные каналы меняются местами. Через некоторое время могут поменяться обратно. Первый раз заметил при игре в кваку лайв, там это вообще убийственно, т.к. перестаёшь ориентироваться по звуку и потешно стреляешь куда угодно, только не в игроков. Потом заметил в Audacity при работе через Pulseaudio: ставим играть стерео-дорожку, в это время пишем с микрофона моно-дорожку. Опять же в рандомный момент каналы меняются местами, что звучало слева — начинает звучать справа и наоборот.

Подозреваю, что проблема именно в пш-ш-шаудио, потому что при использовании JACK такого не наблюдал.

Попытался поймать в логах что-нибудь при игре, когда это происходит: https://bit.ly/2YESEbp, ничего криминального не увидел.

/etc/pulse/daemon.conf: https://bit.ly/2SxeglQ
/etc/pulse/default.pa: https://bit.ly/2Yr2GN2

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

Подскажи, а?

 ,

PamidoR
()

Необязательные аргументы с ключевыми словами в Scheme

Лисперы, прошу помощи.
Есть задача: парсить файлы с S-выражениями и на основе их содержимого создавать структуры данных. S-выражения эти представляют собой маленький DSL следующего вида:

(define-my-struct struct-name
  (optional-keyword1 <optional-value1>)
  (optional-keyword2 <optional-value2>)
  (optional-keyword3 <optional-value3>)
  (mandatory-keyword <mandatory-value>))

Любой из optional-keywordN может отсутствовать (тогда используется значение по умолчанию), но если присутствуют несколько из них, то они всегда идут по порядку (т.е. optional-keyword2 может идти только после optional-keyword1), а mandatory-keyword всегда идёт последним.

Так вот, я хочу написать такой макрос, чтобы содержимоe файла просто скармливать eval'y. Первое пришедшее решение в лоб:

(define-syntax define-my-struct
  (syntax-rules (opt1 opt2 opt3 mandatory)
    ((_ name (opt1 oval1) (opt2 oval2) (opt3 oval3) (mandatory mval))
     (make-my-struct oval1 oval2 oval3 mval))
    ((_ name (opt1 oval1) (opt2 oval2) (mandatory mval))
     (make-my-struct oval1 oval2 30 mval))
    ((_ name (opt1 oval1) (mandatory mval))
     (make-my-struct oval1 20 30 mval))
    ((_ name (opt1 oval1) (opt3 oval3) (mandatory mval))
     (make-my-struct oval1 20 oval3 mval))
    ((_ name (opt2 oval2) (opt3 oval3) (mandatory mval))
     (make-my-struct 10 oval2 oval3 mval))
    ((_ name (opt2 oval2) (mandatory mval))
     (make-my-struct 10 oval2 30 mval))
    ((_ name (opt3 oval3) (mandatory mval))
     (make-my-struct 10 20 oval3 mval))))
Некрасиво, подвержено ошибкам, не масштабируется. Конечно, можно сделать так:
(define-syntax define-my-struct
  (syntax-rules (mandatory)
    ((_ name  ... (mandatory mval))
     (make-my-struct name ... mval))))
но я хочу валидацию опциональных ключевых слов, а в этом случае мы этого лишаемся. По форуму нашёл только это: Необязательные параметры функции в Scheme (комментарий), но немного не то.

P.S.
А может, тут и не нужен макрос вовсе? Проверять опциональные аргументы на этапе парсинга файлов и всё.

 , ,

PamidoR
()

Выравнивание неполного типа, расположенного на стеке

Доброго дня.
Меня интересует, как можно разместить opaque type на стеке, использовав его нативное выравнивание. Пока у меня есть такое:

/* foo.h */

#ifndef FOO_H
#define FOO_H
	
#include <stddef.h>
#include <stdalign.h>

typedef struct foo Foo;
typedef unsigned char foo_store;

extern const size_t foo_sz;
extern const size_t foo_align;

Foo* foo_init (void);
Foo* foo_init_local (foo_store *store);

#define foo_local(x) alignas(max_align_t) foo_store x[foo_sz]

#endif //FOO_H
/* foo.c */

#include <stdlib.h>
#include "foo.h"

struct foo {
	int a;
	float b;
	double c;
	void *ptr;
};

const size_t foo_sz = sizeof(struct foo);
const size_t foo_align = alignof(struct foo);

inline static void assign (struct foo *f);

struct foo* foo_init (void) {
	Foo *f = malloc(sizeof *f);
	assign(f);
	
	return f;
};

struct foo* foo_init_local (foo_store *store) {
	struct foo *f;
	if (!store)
		return NULL;
		
	f = (struct foo*)store;
	assign(f);
	
	return f;
};

inline static void assign (struct foo *f) {
	f->a = 1;
	f->b = 2.0;
	f->c = 3.0;
	f->ptr = (void*)0xB16B00B5;
}

/* main.c */

#include <stdalign.h>
#include "foo.h"

int main (void) {
	foo_local(store);
	Foo *f = foo_init_local(store);
	
	return 0;
}

Всё вроде как работает нормально, но используется выравнивание по границе 16, а не 8. Условие: нельзя тупо задефайнить FOO_ALIGN 8 в foo.h (ну типа вдруг я захочу изменить состав struct foo). Я почему спрашиваю-то вообще. Вот говорят, что плохо выделять маленькие структуры в куче из-за её фрагментации (вопрос производительности не рассматриваем). Не возникнет ли некоего подобия фрагментации на стеке из-за несоответствующего выравнивания? Ведь адресов, кратных 16 в два раза меньше, чем кратных 8 (да ведь?). Ну и заодно: как malloc() выравнивет память? Надеюсь, понятно объяснил. Мне это ни для чего не надо, спрашиваю из интереса.

 ,

PamidoR
()

Реализация функций, делающих одно действие с разными полями структуры

Добрый день.
Есть такая структура:

struct tmatrix_entry {
	double price;
	double amt;
};

struct tmatrix {
	struct tmatrix_entry **entries;
	double *stocks;
	double *needs;
	int rows;
	int cols;
};
И есть функции, обеспечивающие доступ к некоторым её членам:
void tmatrix_set_prices (struct tmatrix *tm, double *prices[]) {
	for (int i = 0; i < tm->rows; ++i)
		for (int j = 0; j < tm->cols; ++j)
			tm->entries[i][j].price = (prices) ? prices[i][j] : 0;
}

void tmatrix_set_amts (struct tmatrix *tm, double *amts[]) {
	for (int i = 0; i < tm->rows; ++i)
		for (int j = 0; j < tm->cols; ++j)
			tm->entries[i][j].amt = (amts) ? amts[i][j] : 0;

Вопрос: как избежать дублирования повторяющегося кода? Единственное, что я придумал, это делать одну статическую функцию, которая имеет параметр, по которому мы определяем, какое из полей обрабатывать. Потом к ней делаем функции-обёртки и прототипы этих обёрток выносим в хэдер. Типа такого:

enum field {
	PRICE, AMT
};

static void set_entries_values (struct tmatrix *tm, enum field field, double *values[]) {
	for (int i = 0; i < tm->rows; ++i)
		for (int j = 0; j < tm->cols; ++j) {
			if (field == PRICE)
				tm->entries[i][j].price = (values) ? values[i][j] : 0;
			else if (field == AMT)
				tm->entries[i][j].amt = (values) ? values[i][j] : 0;
		}
}

void tmatrix_set_prices (struct tmatrix *tm, double *prices[]) {
	set_entries_values(tm, PRICE, prices);
}

void tmatrix_set_amts (struct tmatrix *tm, double *amts[]) {
	set_entries_values(tm, AMT, amts);
}
Или не париться и выносить в хэдер «универсальную» функцию? Как вообще это делают белые люди?

 ,

PamidoR
()

Ошибки в работе функции, в которой вызывается malloc()

Добрый день. Пишу такую вещь: рекурсивно обходит заданный каталог, находя mp3-файлы, и вытаскивает из них тэги. Часть, отвечающая за вытаскивание, расположена в отдельной функции. Вот она:

static struct track_info* medialib_get_track_info (const char *filename) {
	TagLib_File *file = taglib_file_new_type(filename, TagLib_File_MPEG);
	TagLib_Tag *tag = taglib_file_tag(file);

	struct track_info *info = malloc(sizeof(*info));
	info->title = taglib_tag_title(tag);
	info->artist = taglib_tag_artist(tag);
	info->album = taglib_tag_album(tag);
	info->genre = taglib_tag_genre(tag);
	info->year = taglib_tag_year(tag);
	info->trackno = taglib_tag_track(tag);
	/*
	unsigned char *title = taglib_tag_title(tag);
	unsigned char *artist = taglib_tag_artist(tag);
	unsigned char *album = taglib_tag_album(tag);
	unsigned char *genre = taglib_tag_genre(tag);
	unsigned int year = taglib_tag_year(tag);
	unsigned int trackno = taglib_tag_track(tag);
	*/

	/*info->title = malloc(sizeof(*info->title) * strlen(title));
	info->artist = malloc(sizeof(*info->artist) * strlen(artist));
	info->album = malloc(sizeof(*info->album) * strlen(album));
	info->genre = malloc(sizeof(*info->genre) * strlen(genre));*/

	/*strcpy(info->title, title);
	strcpy(info->artist, artist);
	strcpy(info->album, album);
	strcpy(info->genre, genre);
	info->year = year;
	info->trackno = trackno;*/

	//taglib_tag_free_strings();
	taglib_file_free(file);

	return info;
}

Так — работает. А если членам структуры не присваивать непосредственно значения, возвращаемые функциями чтения тегов, а выделять память через malloc() и потом копировать туда эти значения (закомментированная часть кода), то прога начинает рандомно крашиться, вылетать ошибки сегментирования, шины, invalid fastbin entry (free) и т.д. Почему так?

 , ,

PamidoR
()

Помогите вспомнить название программы

Прога помогает составлять определения переменных в Си, например, пишешь ей: «pointer to pointer to pointer to function to pointer to int», а она тебе выдаёт готовый код.

 ,

PamidoR
()

TuxOnIce: при восстановлении из гибернации /sys/power/tuxonice/do_resume недоступен

Доброго дня. Комп в гибернацию уходит, но не восстанавливается. Использую initramfs, делал по этому мануалу http://special.habrahabr.ru/kyocera/p/60401/. Но при восстановлении выводится ругань, дескать, file or resource busy и дальше система загружается как обычно. Я так понял недоступно именно do_resume или /sys/ целиком. Своп-раздела нет, но есть своп-файл. Смещение для свопа указал, параметры ядру в grub.cfg прописал, думаю, проблема именно в initramfs. Как победить? Дистрибутив Debian Wheezy, ядро 3.9.5-pf

 , ,

PamidoR
()

Перезапуск аудиоприложения по событию udev

Здравствуйте. Есть у меня USB-звуковуха (Lexicon Alpha, если интересно) и с ней одна проблема: не дружит с суспендом. После выхода из сна приходится передёргивать кабель, чтобы она заработала. Но тут ещё одна проблема: из-за этих манипуляций отваливается регулировка громкости в трее (перестаёт регулировать). Написал я скрипт и правило udev, чтобы это дело починить:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1210", ATTR{idProduct}=="000a", RUN+="/home/pcuser/restart_volumeicon.sh"
#!/bin/sh
set -x
xhost local:pcuser
export DISPLAY=:0
export XAUTHORITY=/home/pcuser/.Xauthority
killall volumeicon
sleep 3
/bin/su pcuser -c '/usr/bin/volumeicon'

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

 , , ,

PamidoR
()

После релогина в иксы systemctl reboot/poweroff начинает просить пароль

Добрый день. Дистрибутив Debian Testing, WM: Openbox, логин-менеджер slim. Стоит автологин. После этого автологина система нормально перезагружается/выключается от пользователя, но если завершить сессию Openbox и вновь зайти, то это перестаёт работать. Почему так происходит? Вроде как можно подправить политики в polkit, но ведь после автологина и без этого всё работает.

 , ,

PamidoR
()

Переодпределение цвета адресной строки для Chromium

Доброго дня. Балуюсь сейчас с темами, возникла такая небольшая неприятность: цвет адресной строки хромиум берёт из свойства base[NORMAL] стиля default в gtkrc, как его можно переопределить? В теме есть стиль для хромиума с таким содержанием:

style "chrome-gtk-frame" {
    ChromeGtkFrame::frame-gradient-size                 = 120
    ChromeGtkFrame::frame-gradient-color                    = shade (1.06, @theme_bg_dark_color)
    ChromeGtkFrame::inactive-frame-gradient-color       = shade (1.06, @theme_bg_dark_color)
    ChromeGtkFrame::frame-color                                 = shade (0.64, @theme_bg_dark_color)
    ChromeGtkFrame::inactive-frame-color                        = shade (0.64, @theme_bg_dark_color)

    ChromeGtkFrame::scrollbar-trough-color                      = shade (0.99, @bg_color)
    ChromeGtkFrame::scrollbar-slider-prelight-color     = shade (0.87, @bg_color)
    ChromeGtkFrame::scrollbar-slider-normal-color       = shade (0.80, @bg_color)
}
class "ChromeGtkFrame"  style "chrome-gtk-frame"

Пробовал прописать туда свой base[NORMAL], не помогло.

 , ,

PamidoR
()

Неполные типы в Си: typedef struct t* T или typedef struct t T?

Как вы задаёте синонимы для неполных типов? Считаете ли вы, что это вкусовщина? Сам для себя ещё не решил, поэтому спрашиваю советов мудрых. С одной стороны кто-то, использующий некую нашу библиотеку с неполным типом, должен иметь дело именно с абстрактным объектом, а не указателем на этот объект. К тому же в недрах самой библиотеки мы можем не пользоваться синонимом, потому что там скрывать нечего и не от кого, всё напротив должно быть чётко и понятно. Но с другой стороны не сразу понятно, что наш абстрактный тип — указатель, и юзер может накосячить с присваиванием. Какой точки зрения придерживаетесь?

 ,

PamidoR
()

Восстановление данных с корневого раздела

Доброго времени суток. Давеча прошил телефон на кастом и уже после этого вспомнил, что в истории im-клиента осталась важная переписка, которую я, конечно же, забыл предварительно экспортировать. Можно ли получить доступ к корневой системе так, чтобы сделать undelete (я так понял, что на / стоит ext4)? Или другими методами? Прошивка рутованная. Тут, как я понял, вытаскивают данные с пользовательской внутренней памяти, не совсем то. В общем, прошу помощи. Версия Android: 4.1.2 Телефон: Huawei Vision U8850

 , , ,

PamidoR
()

Сохранение раскладки для каждого окна в dwm

Добрый день. Собственно, как сделать сабж? xxkb не работает (даже с прописанными XXkb.controls.add_when_change: yes и XXkb.controls.focusout: yes) ровно как и патч pwkl с сайта dwm. ibus, правда, не пробовал ещё, хотелось бы разобраться с патчем. Скопировал патч в /etc/portage/patches/<category>/<package>/ (у меня gentoo), прописал epatch_user в src_prepare () в ебилде в локальном оверлее, пересобрал, ошибок не было, запустил — ничего, раскладка меняется глобально. Вывод setxkbmap -print:

xkb_keymap {
xkb_keycodes  { include "evdev+aliases(qwerty)"	};
xkb_types     { include "complete"	};
xkb_compat    { include "complete"	};
xkb_symbols   { nclude"pc+us+ru(winkeys):2+inet(evdev)+capslock(grouplock)"	};
xkb_geometry  { include "pc(pc104)"	};
};

xorg.conf:

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/lib64/xorg/modules"
	FontPath     "/usr/share/fonts/misc/"
	FontPath     "/usr/share/fonts/TTF/"
	FontPath     "/usr/share/fonts/OTF/"
	FontPath     "/usr/share/fonts/Type1/"
	FontPath     "/usr/share/fonts/100dpi/"
	FontPath     "/usr/share/fonts/75dpi/"
	FontPath     "/usr/share/fonts/terminus/"
EndSection

Section "Module"
	Load  "glx"
	Load  "extmod"
	Load  "record"
	Load  "dri2"
	Load  "dbe"
	Load  "dri"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option     "DRI"                	# [<bool>]
        #Option     "ColorKey"           	# <i>
        #Option     "VideoKey"           	# <i>
        #Option     "FallbackDebug"      	# [<bool>]
        #Option     "Tiling"             	# [<bool>]
        #Option     "LinearFramebuffer"  	# [<bool>]
        #Option     "Shadow"             	# [<bool>]
        #Option     "SwapbuffersWait"    	# [<bool>]
        #Option     "TripleBuffer"       	# [<bool>]
        #Option     "XvPreferOverlay"    	# [<bool>]
        #Option     "DebugFlushBatches"  	# [<bool>]
        #Option     "DebugFlushCaches"   	# [<bool>]
        #Option     "DebugWait"          	# [<bool>]
        #Option     "HotPlug"            	# [<bool>]
        #Option     "RelaxedFencing"     	# [<bool>]
	Identifier  "Card0"
	Driver      "intel"
	BusID       "PCI:0:2:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

xorg.conf.d/10-evdev.conf:

Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
	Option "XkbLayout" "us,ru(winkeys)"
	Option "XkbOptions" "grp:caps_toggle"
EndSection

Section "InputClass"
        Identifier "evdev touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Кто как боролся с этим?

PamidoR
()

Проблемы с USB-звуковухой

Добрый вечер. В наличии имеется:

  • Gentoo ~amd64
  • gentoo-sources-3.0.7
  • alsa-lib-1.0.24.1; alsa-plugins-1.0.24 (сама альса вкомпилена в ядро)
  • Звуковая карта Lexicon Alpha, подключаемая по USB.

Звук в системе есть, dmix работает, но:

  • При загрузке системы и запуске приложений, использующих ALSA, в dmesg вываливаются сообщения вида
    …
    [16466.921452] 5:2:2: cannot get freq at ep 0x82
    [16466.925450] 5:2:2: cannot get freq at ep 0x82
    [16466.929326] 5:2:1: cannot get freq at ep 0x82
    [16466.931951] 5:2:1: cannot get freq at ep 0x82
    [16984.309377] 5:2:2: cannot get freq at ep 0x82
    [16984.309689] ehci_hcd 0000:00:1d.0: iso resched full ffff88013038b400 (now 1940 max 10132)
    [16984.309692] cannot submit datapipe for urb 0, error -28: not enough bandwidth
    
  • Запись через встроенный инструментальный вход не работает: Audacity просто виснет после нажания кнопки записи, а в лог jackd вываливается
    …
    control device hw:0
    configuring for 44100Hz, period = 1024 frames (23.2 ms), buffer = 2 periods
    ALSA: final selected sample format for capture: 24bit little-endian
    ALSA: use 2 periods for capture
    ALSA: could not start capture (Broken pipe)
    Cannot start driver
    JackServer::Start() failed with -1
    Failed to start server
    

Как я понял, тут проблема в подсистеме USB, а не ALSA (вроде). Пробовал подключать карту и к USB 2.0, и к 3.0 портам — ничего не меняется. В гугле не даётся внятного ответа на вопрос, одни мучаются, у других работает из коробки. Что посоветуете?

PamidoR
()

Можно ли использовать Guitar rig без JACK?

Я поставил PulseAudio, всё работает нормально, стабильно, но хотелось бы использовать Guitar rig. Однако, насколько я знаю, wineasio работает только с JACK'ом. Есть ли какие-нибудь обходные пути? По сути ведь и пульс и джек — для одной цели. Просто джек у меня работать ни в какую не хочет.

PamidoR
()

JACK не хочет работать

При использовании джека 0.118.0 через несколько секунд после включения вылезает бешеное кол-во xrun'ов (раз 10 в секунду) и звук тупо стопорится. Гуглил, у многих проблема похожая, но решили увеличением буфера, включением Soft mode и т.д. но мне это не помогает. Поставил alsa-plugins для вывода ALSA через JACK (у меня Gentoo). Вот настройки в qjackctl: http://s46.radikal.ru/i111/1101/4c/b9682bba4542.png Пробовал также джек 1.9.6, но он тупо не запускается с алсой — unknown driver «alsa» и регистр букв тут не причём. Звуковуха внешняя — Lexicon alpha.

PamidoR
()

Guitar rig 4.1.1 под вайном требует от проца поддержки SSE

Пишет: «You need a CPU that supports SSE or AltiVec» и не запускается. Проц, естественно, SSE держит (AMD Turion 64 X2 TL-60). Как это понимать?

PamidoR
()

[wine] При запуске игры из папки просит диск

Установил Silent Hill 2 под виндой, всё работает, а под линуксом при запуске экзешника просит диск. При этом в винде я не использовал никаких алкоголей-демонтулзов, просто запускал. В чём может быть проблема?

 

PamidoR
()

[непонятки] Ноут отказывается грузить загрузочные CD/DVD

Собссно, сабж. Диски рабочие, и, что самое интересное, под линуксом и виндой на этом ноуте читаются и пишутся, даже образы без ошибок делаются. При загрузке с диска — чёрный экран и мигающий курсор, диск при этом раскручивается, но лампочка привода не горит. Ума не приложу, что может быть. Биос не виноват. Может, лазер барагозит? Помогите, в общем.
ЗЫ: в толксы написал ибо к линуксу отношения не имеет

 

PamidoR
()

Проблемы с ATAPI-сидюком на ядре 2.6.34-r11

В общем, обновил ядро, выключил ATA/ATAPI/MFM/RLL support (DEPRECATED), вместо этого врубил SCSI и libata. И теперь система не видит сидюка. Делаю dmesg | grep matshita — результата ноль. lscpi тоже ничего не выдаёт, /dev/cdrom отсутсвует. ЧЯДНТ?

PamidoR
()

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