저는 최신 Arch Linux 5.12.5를 사용하고 있습니다.
SD 카드는 때때로 손상될 수 있으며, 벽돌이 아닌 경우 재설정/재포맷해야 합니다.
나는 다음과 같이 이것을한다
# 1. unmount the card / make sure it's unmounted
umount /dev/mmcblk0
umount /dev/mmcblk0p1
# 2. wipe the card. After this the card cannot be mounted becasue
# there is no partition. There's nothing on it at all.
echo password | sudo -S dd bs=4M if=/dev/zero of=/dev/mmcblk0 oflag=sync
# 3. create a GPT partition table
# the "-s" defaults the go ahead answer to "yes" so that
# no user input is necessary rather confusingly the
# command is 'mklabel' for creating a partition table!
sudo parted -s /dev/mmcblk0 mklabel gpt
# 4. create a GPT file system
# HAVING THE "-E root_owner=$UID:$GID" IS ESSENTIAL,
# OTHERWISE THE PARTITION CAN ONLY BE WRITTEN TO AS ROOT
sudo mkfs.ext4 -F -O ^64bit -E root_owner=$UID:$GID -L 'SD_CARD' '/dev/mmcblk0'
아래 줄을 사용하면, 즉 위에서 언급한 대로 UID:GID를 설정하지 않으면 파일 시스템의 소유권은 루트 사용자에게만 속하며 루트 외에는 누구도 SD 카드에 쓸 수 없습니다.
sudo mkfs.ext4 -F -O ^64bit -L 'SD_CARD' '/dev/mmcblk0
다음 줄을 사용하여 UID:GID를 내 UID:GID로 설정하면 파일 시스템의 소유권은 나에게만 속하며 나 외에는 누구도 SD 카드에 쓸 수 없습니다.
sudo mkfs.ext4 -F -O ^64bit -E root_owner=$UID:$GID -L 'SD_CARD' '/dev/mmcblk0'
누구나 SD 카드 파일 시스템에 쓸 수 있도록 UID:GID를 어떻게 설정합니까?
답변1
해야 할 일은 카드를 지우고 GPT 파티션 테이블을 만든 다음 즉시 GPT 파티션 테이블을 파일 시스템으로 덮어쓰는 것뿐입니다. 파티션 테이블을 전혀 생성하지 않거나, 파티션 테이블 내에 파일 시스템용 파티션을 생성하십시오. 두 번째는 일반적으로 권장되는 방법입니다.
# Create partition table with a single full-sized partition
parted -s /dev/mmcblk0 mklabel gpt
parted /dev/mmcblk0 unit MiB mkpart primary 1 100%
# Print it out (optional)
parted /dev/mmcblk0 unit MiB print
# Create filesystem on the partition we have just made
mkfs.ext4 -L SD_CARD /dev/mmcblk0p1
# Mount it
mkdir -p /mnt/dsk
mount /dev/mmcblk0p1 /mnt/dsk
# Allow anyone to write to it
chmod 777 /mnt/dsk
이렇게 하면 누구나 쓸 수 있는 파일 시스템이 제공됩니다. (UNIX/Linux 파일 시스템에는 소유자가 없습니다. 파일과 디렉터리에는 소유자가 있습니다.) 그러나 파일이나 디렉터리를 만들면 이는 귀하의 것이며 다른 사람에게 쓰기를 허용하지 않으면 쓸 수 없습니다. 이는 ACL을 사용하여 수정되지 않는 한 표준 UNIX/Linux 동작입니다(예:관련 답변
답변2
앞으로 SD 카드를 재생할 때 사용할 스크립트입니다.
전적으로 이 답변을 기반으로 합니다. https://unix.stackexchange.com/a/422687/46470
# creates GPT partition table
# creates ext4 file system
# creates file system writable by anyone
# variables
disk_z="mmcblk0"
part_z="p1"
user_z="$USER"
password_z="password"
# issue sudo password so that password is not needed again
echo password_z | sudo -S clear
# make sure the device is not mounted
sudo umount /dev/$disk_z
sudo umount /dev/$disk_z$part_z
# Create partition table with a single full-sized partition
sudo parted -s /dev/$disk_z mklabel gpt
sudo parted /dev/$disk_z unit MiB mkpart primary 1 100%
# Create (1) "ext4" file system partition with (2) "64bit" filesystem
# and (3) name "p1" and (4) disk label "SD_CARD"
sudo mkfs.ext4 -F -O ^64bit -L 'SD_CARD' "/dev/$disk_z$part_z"
# tune2fs adjusts tunable filesystem parameters
# -o calls mount options
# acl enables Posix Access Control Lists to be stored
# in the filesystems metadata
# -o acl will enable the ACL to be set by "setfacl" once
# the partition is mounted and this will be
# stored in the filesystems metadata
sudo tune2fs -o acl "/dev/$disk_z$part_z"
# mount the file system
sudo mount "/dev/$disk_z$part_z" /mnt
# change ownership of the mounted file system
sudo chown "$user_z": /mnt
# chmod it to have rwx permissions for everyone
sudo chmod 777 /mnt
# SET File ACL (access list) permissions for users, groups and owner to rwx in each case
# and store this in the files systems metadata
sudo setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
# unmount the disk
sudo umount /mnt