OverlayRootfs: 더 나은 보안을 위해 루트 파일 시스템을 보호하세요

댓글 0개

OverlayRootfs 소개

OverlayRootfs는 OverlayFS 기술을 사용하여 생성된 루트 파일 시스템을 의미합니다. OverlayFS는 여러 파일 시스템 계층을 단일 뷰로 병합할 수 있는 유니온 파일 시스템(UnionFS)으로, Linux 시스템에서 널리 사용됩니다. OverlayRootfs를 사용하는 기기는 루트 파일 시스템에 대한 쓰기 보호 및 공장 초기화 기능을 쉽게 구현할 수 있습니다.

루트 파일 시스템 쓰기 보호

OverlayRootfs를 지원하는 Firefly 장치에서 rootfs 파티션은 /root-ro(하위 계층)에 읽기 전용으로 마운트됩니다. 모든 사용자 수정 사항은 rootfs 파티션이 아닌 userdata 파티션의 /userdata/rootfs_overlay(상위 계층)에 기록됩니다. 이렇게 하면 rootfs 파티션 데이터가 읽기 전용으로 유지되고 손상되지 않습니다. OverlayRootfs는 /root-ro와 /userdata/rootfs_overlay를 단일 뷰로 병합하여 사용자에게 보이지 않게 합니다.

예시 설명

Linux 장치에서 잦은 정전과 재부팅은 읽기/쓰기 파티션을 손상시켜 제대로 부팅되지 못하게 할 수 있습니다. OverlayRootfs가 활성화된 Firefly 장치는 사용자 데이터 파티션을 실제 읽기/쓰기 파티션으로 사용합니다. 정전으로 사용자 데이터 파티션이 손상되더라도 장치는 여전히 루트 파일 시스템을 읽기 전용 모드로 부팅할 수 있습니다. 사용자는 장치를 제어하여 파티션 복구 및 데이터 보존 작업을 수행할 수 있습니다. 다음은 사용자 데이터 파티션을 수동으로 삭제한 후 읽기 전용 모드로 부팅되는 시스템의 예입니다.

OverlayRootfs를 테스트하기 위해 파일을 생성하거나 삭제할 수 있습니다. 실제 데이터는 /userdata/rootfs_overlay에 기록됩니다.

  1. # Create a file that can be found in the same directory under /userdata/rootfs_overlay/
  2. root@firefly:~# touch /usr/local/bin/firefly-test
  3. root@firefly:~# ls /userdata/rootfs_overlay/usr/local/bin/firefly-test
  4. /userdata/rootfs_overlay/usr/local/bin/firefly-test
  5.  
  6. # Delete the corresponding files under /userdata/rootfs_overlay/. The corresponding files in the real file system will also be modified.
  7. root@firefly:~# rm -rf /userdata/rootfs_overlay/usr/local/bin/firefly-test
  8. root@firefly:~# ls /usr/local/bin/
  9. disable_ModemManager.sh docker-compose ec200.sh quectel-CM restart_plank.sh

rootfs 파티션은 읽기 전용이고 수정할 수 없으므로 df -h를 사용하여 rootfs 파티션의 사용 가능한 공간이 작은지 확인할 수 있습니다. 사용자가 실제로 userdata 파티션에 쓰기 작업을 하기 때문에 이는 정상적인 현상입니다.

공장 설정 복원

"복구 재설정"을 실행하면 사용자 데이터 파티션이 자동으로 지워지고, 플래싱 직후 장치의 파일 시스템이 초기 상태로 복원됩니다.

  1. # Create a file verification function and execute recovery reset to restore factory settings.
  2. root@firefly:~# touch /home/firefly/test
  3. root@firefly:~# ls /home/firefly/test
  4. /home/firefly/test
  5. root@firefly:~# recovery reset
  6. command: --wipe_all
  7. update: write command to command file: done
  8. update: write command to misc file: done
  9. update: reboot!
  10.  
  11. # After reboot
  12. root@firefly:~# ls /home/firefly/test
  13. ls: cannot access '/home/firefly/test': No such file or directory
  14.  

OverlayRootfs 비활성화

빠른 시작, A&B 시스템 등 일부 상황에서는 OverlayRootfs를 비활성화해야 할 수 있습니다. 커널 시작 매개변수를 수정하여 OverlayRootfs 기능을 활성화/비활성화할 수 있습니다. 예: RK3576:

  1. # Modify the kernel's dts chosen node.
  2. kernel/arch/arm64/boot/dts/rockchip/rk3576-linux.dtsi
  3.  
  4. chosen: chosen {
  5. // Disable OverlayRootfs functionality
  6. //bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all";
  7. // Enable OverlayRootfs functionality
  8. bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTLABEL=rootfs rootfstype=ext4 ro rootwait overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 rcupdate.rcu_expedited=1 rcu_nocbs=all net.ifnames=0";

Firefly의 FFMedia: 초고속 비디오 처리 프레임워크

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.