저는 udev 사용법을 배우고 있는데, 실행하면 udevadm test --action="add" /sys/block/sdc
다음과 같은 내용이 표시되는 것을 발견했습니다.
GROUP 6 /usr/lib/udev/rules.d/50-udev-default.rules:59
IMPORT 'scsi_id --export --whitelisted -d /dev/sdc' /usr/lib/udev/rules.d/60-persistent-storage.rules:50
starting 'scsi_id --export --whitelisted -d /dev/sdc'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SCSI=1'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_VENDOR=NVMe'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_VENDOR_ENC=NVMe\x20\x20\x20\x20'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_MODEL=Dell_Ent_NVMe_v2'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_MODEL_ENC=Dell\x20Ent\x20NVMe\x20v2'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_REVISION=.2.0'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_TYPE=disk'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SERIAL=236435330529024120025384100000002'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SERIAL_SHORT=36435330529024120025384100000002'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SCSI_SERIAL=S6CSNA0R902412 '
Process 'scsi_id --export --whitelisted -d /dev/sdc' succeeded.
이 예에서 sdc는 PERC H755에 있는 가상 디스크입니다. 아직 udev에서 아무것도 변경하지 않았습니다.
위의 내용은 RAID0(패스스루/JBOD 모드)을 사용할 때 표시되는 내용입니다. RAID 5를 생성하면 다음과 같이 표시됩니다.
probe /dev/sda raid offset=0
LINK 'disk/by-id/wwn-0x6f4ee080160bd5002ab7652100a1691a' /usr/lib/udev/rules.d/60-persistent-storage.rules:97
IMPORT '/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw' /usr/lib/udev/rules.d/61-scsi-sg3_id.rules:17
starting '/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_TPGS=0'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_TYPE=disk'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_VENDOR=DELL'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_VENDOR_ENC=DELL\x20\x20\x20\x20'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_MODEL=PERC_H755N_Front'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_MODEL_ENC=PERC\x20H755N\x20Front'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_REVISION=5.16'
내 질문은 udev가 PERC 화이트리스트를 어떻게 "결정"하고 화이트리스트의 목적이 무엇인지입니다.
연구 완료
- 끝까지 읽어라이 게시물USB 드라이브의 화이트리스트 작성과 관련하여 누군가가 모든 USB 장치를 수동으로 금지하기로 결정할 때 사용되는 것 같습니다(여기에는 적용되지 않는 특정 대상 제외).
- 이 튜토리얼에서는 udev 스크립트를 작성하는 방법을 설명합니다.그러나 화이트리스트에 관한 내 질문에는 대답하지 않습니다.
- udev 위키피디아이를 통해 아키텍처를 더 잘 이해할 수 있게 되었지만 화이트리스트에 등록하는 데는 도움이 되지 않았습니다.
- udev 매뉴얼 페이지- 도움이 되지만 화이트리스트에 대해서는 언급하지 않습니다.
일반적으로 udev 화이트리스트와 관련된 결과를 Google에서 검색해 보았지만 내가 찾을 수 있는 유일한 결과는 화이트리스트가 일반적으로 작동하는 방식이 아니라 USB 장치 화이트리스트에 관한 것뿐이었습니다.
답변1
--whitelisted 옵션은 "시험 실행"과 반대되는 "습식 실행"을 수행하는 것으로 보입니다. 왜냐하면 이 옵션이 없으면 scsi_id
아무 것도 수행하지 않는 것처럼 보이기 때문입니다.
static int scsi_id(char *maj_min_dev) {
int good_dev;
(...)
per_dev_options(&dev_scsi, &good_dev, &page_code);
if (!good_dev) {
retval = 1;
goto out;
}
(...)
out:
return retval;
static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *page_code) {
(...)
while (retval == 0) {
option = getopt_long(newargc, newargv, "bgp:", options, NULL);
if (option == -1)
break;
switch (option) {
case 'b':
*good_bad = 0;
break;
case 'g':
*good_bad = 1;
break;
static void help(void) {
(...)
" -b --blacklisted Treat device as blacklisted\n"
" -g --whitelisted Treat device as whitelisted\n"
(...)
이것은 우분투 22 시스템에서 가져온 것입니다:
root@trybase:~# /usr/lib/udev/scsi_id /dev/sdc
root@trybase:~# /usr/lib/udev/scsi_id --whitelisted /dev/sdc
35000c500c7869d5b