2011-08-23 6 views
6

Udeunt를 사용하여 Ubuntu 10.04 LTS x64 서버에서 USB 드라이브 연결 및 연결 끊김을 감지합니다. 컴퓨터가 실행 중일 때 USB 장치가 연결되어 있으면 부팅 할 때 모든 것이 제대로 작동하지만 mkdir /tmp/blah이 작동하지 않기 때문에 스크립트가 완료되지 않은 것 같습니다.udev : 부팅시 장치 연결

터미널에 sudo udevadm trigger을 입력하면 모든 사항이 정상입니다.

나는 udev가 처음으로 연결된 장치를 규칙에 대해 평가할 때 루트 파일 시스템이 마운트되지 않았다고 가정합니다.

내 질문에 따라서 다음과 같습니다

  1. 내가 문제를 정확하게 확인 된 적이 있습니까?
  2. 해결 방법이 있습니까? /tmp/ 대신 과 /을 장착 할 수 있습니다.
+0

http://unix.stackexchange.com/ –

+0

에 대한 탁월한 질문 ​​당신은 맞을 수도 있습니다 ... 또는 serverfault. 나는 bash 스크립트를 작성하고있다 : 내 머리가 프로그래밍 모드에 있기 때문에 여기에 온 것이다. 아마 철저히 생각하지 않아도된다. –

답변

5

루트 파일 시스템이 마운트되었지만 읽기 전용입니다. /dev/shm (메모리 내 파일 시스템)을 사용할 수 있어야합니다. 새로운 리눅스 배포본에는 /run 램 디스크가있을 수도 있습니다. 또한 어딘가에 영구 디렉토리를 선택하고 스크립트에서 tmpfs를 마운트 한 다음 작업을 수행 할 수 있습니다.

+0

'/ tmp /'에서 '/ dev/shm /'로 처리를 이동하면 문제가 해결됩니다. 도움을 많이 주셔서 감사합니다. 아마도이 파일 시스템은 시스템이 가동되는 동안 계속 유지됩니까? –

+0

예,하지만 메모리 내장 파일 시스템이므로 너무 많은 공간을 사용하지 마십시오. – bdonlan

1

1- initramfs에서도 루트 파일 시스템이 마운트되기 전에 쓰기 가능한/tmp 디렉토리가 있습니다.

사실, 실제 루트가 마운트 될 때/tmp는 삭제되고 최종/tmp는 비어있게됩니다. mkdir /tmp/blah 명령이 실패 했습니까? 아니면 당신이 그것을 찾을 때 거기 있지 않기 때문에 그것을 가정합니까?

2 - 우분투에서 (나는 다른 배포판에 대해 잘 모른다.) 이러한 종류의 요구에 대해서는 /dev/.initramfs에 숨겨진 디렉토리가있다. /dev은 최종 루트 파일 시스템에 보존 된 tmpfs (또는 devtmpfs) 마운트 지점이기 때문에 여전히 그곳에 있습니다.

+0

루트 파일 시스템의 udev 규칙은 루트 파일 시스템의'/ tmp'로 실행됩니다. 이것은 루트 파일 시스템을 읽기/쓰기로 다시 마운트하기 이전 일 수 있습니다. – bdonlan

+0

당신이 맞습니다 -'mkdir' 명령이 실패했다는 것을 보지 못했습니다 (현재 출력이 로그되지 않습니다), 다음 명령 ('mount')이 실패하여'mkdir' 디렉토리가 생성되었다고보고합니다 존재하지 않는다 –

+0

@bdonlan 그것은 읽기 전용 일 수 있습니다. 이 경우/tmp를 tmpfs로 구성하면 트릭을 수행해야합니다. /dev/.initramfs 트릭도 유효해야합니다. – rodrigo

2

이 문제에 대한 한 가지 해결책은 즉시 분리되는 udev 규칙에 의해 호출되는 스크립트를 작성하고 시스템이 충분히 "부팅되어"마운트 지점을 만들 수 있도록 몇 가지 이벤트가 발생하기를 기다리는 것입니다. 장치. 다음 게시물 (http://superuser.com/questions/53978/ubuntu-automatically-mount-external-drives-to-media-label-on-boot-withoutau)에 응답 한 사람은 다음을 확인하는 스크립트를 작성했습니다. 계속하기 전에 "httpd"가 실행 중입니다. 아마도이 작업을 수행하는 다른 "더 좋은"방법이있을 것이라고 확신합니다.

관련 문제