/dev/dsp , /dev/dsp1 랜덤하게 할당되는문제
글쓴이: chazzy1 / 작성시간: 금, 2006/09/29 - 5:38오후
사운드카드가 두개인데요
/dev/dsp
/dev/dsp1
이렇게 잡히는데 실제로 보니까 어느놈이 dsp 고 어느놈이 dsp1 인지가 부팅할때마다 지멋대로 바뀌더군요.
ALSA 쓰는 프로그램들은 상관없는데 vmware 는 /dev/dsp 를 직접 지정하게 되있거든요.
그래서 vmware 쪽 사운드가 어디에서 나오는지가 부팅시마다 랜덤하게 정해지고 있습니다.
이걸 어떻게 고정시킬 방법이 없을까요?
Forums:
http://alsa.opensrc.org/index
http://alsa.opensrc.org/index.php?page=MultipleCards
모듈 로딩 순서를 지정해주시거나 index를 지정해주시면 되나봅니다.
근대 이런건..
솔직히.. UDEV나 자동화된 모듈 로딩 과정에서 늘상 발생하는 것 같습니다... 이전엔 잘 안 그랬던 거 같은데 말입니다.
UDEV같은게 도입 되면서 Ethernet 카드도 여러 개면 문제가 생기고... 지 멋대로 순서가 자꾸 바뀌고 말이죠... 사운드도 그렇고.. 비디오도 ... 이건 잘 모르겠군요. 이건 아닌 거 같은데.. 하드디스크나 블록 디바이스야 구별 하는 방법이 여럿 있다지만 솔직히 난감하죠 흠.. 특히 네트워크 카드는 여럿 꽂혀 있고 여기 저기 장비 여러 개 연결 되어 잇는데 이걸 고정으로 다 할당 해 줘야 한다면.. 부팅 때 마다 순서 바뀌고 이러는거 상당이 안 좋죠 후훗... 하드웨어 전체적으로 이걸 체계화 해서 순서 정하고 잡을 방법이 없나 궁금하군요 전...
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
답변 감사합니다.
위 링크대로 해볼려고 했는데 글을 봐도 상당히 난감하군요.
ubuntu 쓰는데 링크에 있는 파일 구조가 제꺼하고는 다르군요.
뭘 어디를 건드려야 할지 감도 안잡히고 있습니다.
삽질의 길은 멀고도 험하군요...
사운드 카드에
사운드 카드에 해당되지는 않지만, 모듈을 로딩하는 순서대로 할당이 되는 것인가요?
랜카드로 제가 몇번 테스트를 해보았는데, 이상한 것 같습니다.
제가 테스트한 상황은
eth0 -> rtl8139 , eth1 -> 3c59x 였습니다. (pci 슬롯에 연결되어 있는데, pci 슬롯의 위부터 번호를 매기자면)
pci1(8139) , pci3(3c59x) 의 순서이구요.
eth0 을 rtl8139 로 하지 않고, 3c59x 를 eth0 으로 설정하고자.(pci 는 그대로 하구요.)
module 에서 3c59x 를 먼저 띄우기를 시도했는데도, 여전히 3c59x 는 eth1 으로 잡히더라구요.
pci 순서가 eth0,1 의 순서가 되는 것인가요?
ps. 잠깐 테스트 한것이라 정확하지 않을 수 있습니다.
다시 정확히 시도를 해보고 이 쓰레드에 리포트를 남겨 놓겠습니다.
저는..
NIC를 두 개 ... 더 꽂아서 테스트 했는데... 즉 원래 온보드 NIC가 하나 있었습니다. 거기에 RTL8139를 2 개 더 꽂았습니다. 근대 이게 지 멋대로 순서가 바뀌더군요. 처음엔 이게 슬롯 순서대로 되나 했는데 그것도 아니고... 이전에도 랜카드 때문에 이런 글이 올라 왔어씁니다. 순서 좀 고정 시킬 수 없냐 하는.. 그 때도 뾰족한 수가 없었죠 훗... 이거 하드웨어 매핑을 고정 시킬 방법이 없는 건지...
전 NIC에 MAC 주소가 있는 점에 착안하여 MAC 주소 별로 eth0, eth1등을 할당 하려고 설정 파일을 건드려 봤는데 이것 역시 허사였습니다. 만약 이걸 건드렸는데 처음에 모듈에서 카드들을 잡을 때 지 멋대로 잡아 버리면 ifconfig나 ifup, ifdown시 아예 동작을 안 해 버립니다... 무서운 일이죠 훗... 그래서 좀 무식하지만 PHP로 스크립트를 짜고 이걸 부팅 과정에서 네트워크 설정 이전에 넣어서 설정 파일을 자동으로 생성 하게 해 버렸습니다. 이렇게 하니 대강은 잡히더군요... 그래도 거슬리기는 마찬가집니다. 언제 무슨 일이 생길 지 모르기 때문이죠 윽...
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
랜카드의 경우에는
랜카드의 경우, modules.conf(현재는 modprobe.conf)에 alias를 추가해서 장치명을 지정할 수 있지 않나요?
alias 장치명 모듈명
이런 식으로요.
---------------------------------------
올해에는 꼭 노트북이 생기게 해 주세요.
올해에는 꼭 노트북이 생기게 해 주세요.
그건...
랜 카드 여러 개가 각각 다 다른 모듈을 쓸 경우에 쉽게 가능한 일이지만, 8139too를 모든 하드웨어에 사용 해야 할 때나.. 3c95xxxx 식의 모듈... (3COM 랜카드에 쓰이는.)여러 랜카드에 쓰게 되면 문제는 심각해 집니다. 지 멋대로 자꾸 순서가 바뀌니까요 윽! 사운드 카드도 지멋대로지만 랜카드와 같은 종류의 컨트롤러 같은게 여러 개 있어도 사실상 좀 머리 아파 집니다 윽!
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
udev script
udev 스크립트 (아마 /etc 밑에 있을 것입니다) 를 이용해서 특정한 장치를 특정한 이름으로 지정해 줄 수 있습니다.
네트워크 장치의 경우 MAC address 를 기준으로 정하는 방법 등이 있고, 사운드 카드도 PCI 헤더를 이용해서 특정 하드웨어를 특정 이름으로 맵핑 가능합니다. 한번 구글링 해 보셔요~
그게 또 그런게 되는군요...
udev를 생각 하긴 했지만 udev를 탓하기만 했지 해결 할려고 하지 않고 꽁수만 썼군요 흠흠! 한번 해 봐야 겠습니다.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
잘 안되는군요...
udev 를 쓸려고 구글링을 해봤습니다.
http://www.linuxjournal.com/article/7316
이걸 참고했는데요, 글을 읽을때는 뭔가 이거다 싶었는데 해보니까 또 안되네요
ubuntu 쓰고있는데 일단 /etc/udev/rules.d 안의 내용물이 생긴게 다릅니다.
00-init.rules 60-symlinks.rules 85-kino.rules
20-names.rules 65-persistent-disk.rules 85-pcmcia.rules
20-names.rules~ 80-programs.rules 90-hal.rules
25-iftab.rules 85-alsa.rules 90-modprobe.rules
40-permissions.rules 85-hal.rules 99-udevmonitor.rules
45-libgphoto2.rules 85-hdparm.rules 99-udevmonitor.rules~
45-libsane.rules 85-hwclock.rules
45-logitechmouse.rules 85-ifupdown.rules
위 문서처럼 udev.rules 가 하나 있는게 아니라 이렇게 여러 파일이 들어있는데
여기다가 udev.rules 를 만들어 보기도 하고 있는 파일 여기저기에 추가도 해봤습니다만 결과는 실패네요
BUS="pci", ID="00:11.5", NAME="dsp1"
BUS="pci", ID="00:0a.0", NAME="dsp2"
이걸 넣었는데 제가 넣는거 무시하고 그냥 dsp, dsp1 로 잡히고 사운드카드 순서도 지멋대로 잡아버립니다.
뭘 잘못했는지 잘 모르겠군요...
BUMP
이거 되는분 없으신가요...아 결국 포기해야하나..
어느정도 진전은 있었는데...
/etc/udev/rules.d/10-local.rules 에다가
BUS=="pci", ID=="0000:00:11.5", NAME="dsp1"
BUS=="pci", ID=="0000:00:0a.0", NAME="dsp2"
이렇게 넣어주고 나니 사운드카드를 강제로 할당은 하는거 같은데요
문제는 일케해버리니 소리가 안나버리는군요.
dsp1, dsp2 작동을 안하고 alsa 에서도 사운드카드가 없는걸로 잡히는군요.
아 돌아버리겠습니다...
해결했습니다.
삽질끝에 결국 해결했습니다.
/etc/udev/rules.d/ 밑에 있는 규칙 파일들을 파일 이름순으로 로딩하게 되는데요
처음에 로딩되도록 10-local.rules 라는 파일을 만들고 그 안에다가
BUS=="pci",ID=="0000:00:11.5",DRIVER=="VIA 82xx Audio",KERNEL=="dsp*",SYMLINK+="sound1"
BUS=="pci",ID=="0000:00:0a.0",DRIVER=="Yamaha DS-XG PCI",KERNEL=="dsp*",SYMLINK+="sound2"
와 같이 넣어서 해결했습니다.
이렇게 하면 기존의 dsp, dsp1 등은 건드리지 않고 해당하는 장비에 대한 고정적인 링크 sound1,sound2 만 생깁니다.
그리고 KERNEL=="dsp*" 이게 있어야 사운드 장비가 mixer 등으로 랜덤하게 지정되는걸 막고 항상 dsp 로 지정되도록 할수 있더군요.
여튼 결국 해결입니다. udev 에 대한 정보를 주신분들 감사합니다.
댓글 달기