부팅시 루프 장치를 설정하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법이 무엇인지 궁금합니다.
Google에서 검색했습니다. 일부는 udev 규칙을 추가하고 일부는 스크립트를에 넣고 일부는 /etc/init.d
initramfs를 수정 한다고 말합니다 .
그렇다면 가장 좋은 방법은 무엇입니까? 자세한 방법을 알려 주시겠습니까?
감사합니다.
답변
우분투에서 시작 작업을 수행하는 세 가지 “적절한”방법이 있습니다 (단지 마운트하고 싶지 않다고 가정).
/etc/init/*.conf
(건방진 녀석)/etc/init.d/*
(sysvinit)/etc/rc.local
(런레벨 변경 스크립트)
udev 규칙을 사용할 가능성도 있지만 복잡합니다. 나는 그것을 반대하는 것이 좋습니다. sysvinit 스크립트는 그런 작은 일에 너무 과잉이므로 다른 두 가지 옵션에 중점을 둘 것입니다. 런레벨 변경 스크립트는 가장 단순하지만 (최소한 선호), 여기서 시작하겠습니다.
/etc/rc.local
파일은 단순히 의해 실행됩니다 /etc/init.d/rc.local
(기본적으로)입니다 Sysvinit의 스크립트는 실행 레벨 “의”모든 정상으로의 전환에 마지막으로 실행 (당신이 정상적으로 부팅 예를 들어 때,하지만 당신은 종료 또는 복구 모드로 전환하지 않을 경우). 부팅 장치 설정을 구현하려면 /etc/rc.local
파일이 호출 /srv/diskimage
되고 /dev/loop0
루프 장치 로 사용 한다고 가정하고을 끝에 추가하십시오 .
losetup /dev/loop0 /srv/diskimage
그게 전부입니다. 물론 파일 이름을 설정에 가장 적합한 것으로 바꾸십시오.
그것에 대해 좀 더 구체적으로하고 싶다면 파일 시스템을 마운트 한 후에 설정하는 Upstart 작업을 만들 수 있습니다. 파일이 들어 /srv
있는 마운트 지점 이라고 가정하면 다음과 같습니다 diskimage
.
description "Setup loop devices after filesystems are mounted"
start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage
이것은 개념적으로 따라야 할 정도로 간단해야합니다. 첫 번째 줄은 인간 독자를위한 주석 일뿐입니다. /srv
파일 시스템이 마운트 될 때까지 기다렸다가 losetup 프로세스를 실행하고 프로세스가 성공적으로 종료되면 자신을 끝낸 것으로 간주 하는 Upstart 지침입니다 ( ” 영구적 인 서비스와 달리 태스크 “). 해당 내용을 파일 일치에 넣으십시오 /etc/init/*.conf
. 나는 /etc/init/losetup.conf
나 자신 을 선택할 것이다 .
이러한 /etc/rc.local
간단한 작업에 비해 Upstart 작업의 장점 은 작지만 중요합니다. 첫째, /etc/rc.local
더 이상 사용되지 않으며, 요즘에는 거의 모든 사람들이 “일을 끝내기 위해 지저분한 모래 상자”로 사용하는 것이 어리둥절합니다. 파일 사용에 싫증이 나는 다른 이유들 중에서, 해당 파일을 사용하는 일부 프로그램은 단순히 내용을 덮어 쓰므로 동일한 파일에 들어가야하는 다른 스크립트를 조정하기가 어렵습니다. 둘째, Upstart는 실제로 의존성 검사를 처리하여 (파일 시스템이 먼저 마운트되었는지 확인) 파일 시스템 마운트에 문제가 있으면 파일 시스템을 마운트 하지 않습니다.루프 장치를 설정하십시오 …. 일단 해결하고 마운트하면. 셋째, Upstart는 훨씬 더 융통성이 있습니다. 예를 들어, 사용하지 않는 루프 장치를 찾아서 “MOUNTPOINT”변수를 사용한 방법과 유사하게 다른 업 스타트 작업에 사용할 루프 장치를 “배출”할 수있을 정도로 똑똑 할 수 있습니다. 위의 예에서
답변
@psusi가 지적했듯이 가장 쉬운 방법은 /etc/fstab
파일에 다음 줄을 추가하는 것입니다.
/path/to/loop/device /path/to/mount/point auto loop 0 0
이제 재부팅하거나 mount -a
루트로 실행하십시오 . 그런 다음 장치를 장착해야합니다. 로 확인할 수 있습니다 lsblk
.