시작 시 파일 시스템 유형을 BASH 변수로 읽어옵니다.

시작 시 파일 시스템 유형을 BASH 변수로 읽어옵니다.

blkid 항목에 지정된 파일 시스템 유형의 bash 변수를 설정하려고 시도하는 /etc/init.d 파일에 대한 /etc/rc.d/S11 링크가 있습니다.

root@OpenWrt:/# blkid /dev/mmcblk1p3
/dev/mmcblk1p3: UUID="77111d8a-feb7-470c-a489-ffa0e5415c4c" TYPE="f2fs"
root@OpenWrt:/#

awk명령에 a를 추가하려고 시도했습니다.

root@OpenWrt:/# blkid /dev/mmcblk1p3 | awk '{print $3}'
TYPE="f2fs"
root@OpenWrt:/#

이상적으로는 이것만 필요 f2fs하고 다른 것은 필요하지 않습니다. awk -F = '{print $3}'반품 사용

root@OpenWrt:/# blkid /dev/mmcblk1p3 | awk -F = '{print $3}' 
"f2fs"
root@OpenWrt:/# 

스크립트에서는 나중에 스크립트에서 사용할 수 있도록 bash 변수로 설정해 보았습니다.

CUR_FS=$(blkid /dev/mmcblk1p3 | awk '{print $3}');

그러나 커널 로그로 보낸 디버그 메시지에는 비어 있습니다.

echo "[DEBUG] Shield is in ${SHIELD_MODE} Mode - Using /dev/${MNT_POINT} as ${CUR_FS}" > /dev/kmsg

상품을 반품하다

[   34.836024] [DEBUG] Shield is in Gateway Mode - Using /dev/mmcblk1p3 as 

비어 있습니다.

누군가 OpenWrt에 이 기능이 없다는 점을 지적하기 전에 bash(기본적으로 Ash 사용) 맞춤 빌드 및 베이킹을 수행하고 있습니다 bash.

f2fs누군가 큰따옴표 없이 최종 결과를 얻는 방향을 알려줄 수 있나요?

출력을 blkid파일에 쓰면 빈 파일이 제공됩니다.

blkid /dev/mmcblk1p3 2>&1 > /tmp/output
lsblk --noheadings -o FSTYPE /dev/mmcblk1p3 2>&1 > /tmp/output2

편집자 주: 내 시스템에서는 lsblk와 blkid가 분리되어 있으므로 두 가지 접근 방식을 모두 시도했습니다. 여전히 공백으로 표시됩니다. 내가 너무 일찍 소리쳤나? 또한 $PATH아직 설정되지 않은 경우를 대비해 명령에 전체 하드 경로를 입력해 보았습니다. 여전히 비어 있습니다.

편집 2: 누군가 init 스크립트가 너무 일찍 호출되었다고 제안했습니다. S99거의 마지막에 호출되고 파일 시스템 호출이 여전히 비어 있도록 테스트 용 스크립트를 설정했습니다 .

S99extroot가 문제의 스크립트입니다. 처음에 나는 S11.

K10gpio_switch   K99umount        S19dropbear      S94gpio_switch                                                          
K10snort         S00sysfixtime    S19firewall      S95done                                                                 
K50dropbear      S10boot          S20network       S96led                                                                  
K85odhcpd        S10system        S35odhcpd        S98sysntpd                                                              
K89log           S11sysctl        S50cron          S99extroot                                                              
K90network       S12log           S50uhttpd        S99urandom_seed                                                         
K90sysfixtime    S12rpcd          S80ucitrack                                                                              
K98boot          S19dnsmasq       S90snort                                                                                 
root@OpenWrt:/# 

답변1

initblk 장치를 사용할 수 있을 때까지 지연해야 했습니다 . 계속 확인하도록 루프 에 넣어서 while true그렇게 할 수 있도록 하세요 mknod.

관련 정보