* Root File system은
부팅시 fstab파일을 실행하고 파일의 코드가 동작하면서 root file system을 mount합니다.
pi@pi08:/etc $ vi fstab
ubuntu@ubuntu8:~/pi_bsp/rootfs$ wget https://downloads.raspberrypi.org/NOOBS_latest
ubuntu@ubuntu8:~/pi_bsp/rootfs$ unzip -d noobs NOOBS_latest
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs$ du -h -d 1 noobs/
1.3M noobs/overlays
48K noobs/defaults
2.8G noobs/os
2.8G noobs/
ubuntu@ubuntu8:~/pi_bsp/rootfs$ cd noobs/os/RaspiOS_Full_armhf/
ubuntu@ubuntu8:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf$ mkdir rootfs
ubuntu@ubuntu08:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf$ sudo tar xvfp root.tar.xz -C ./rootfs
경로 바꿔주고 계정이랑 암호를 하나 넣어줍시다.
ubuntu@ubuntu08:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf/rootfs/etc$ sudo vi passwd
아래 글 보고 확인 됬으면 이제 해석이 되죠?
putty 세션하나 복제해서 새로운 유저를 추가해서 어떤 형식으로 생성되는지 확인해보자
확인만 하고 바로 삭제하자~
ubuntu08@ubuntu08-VirtualBox:~$ sudo adduser pi
[sudo] password for ubuntu08:
Adding user `pi' ...
Adding new group `pi' (1002) ...
Adding new user `pi' (1002) with group `pi' ...
Creating home directory `/home/pi' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for pi
Enter the new value, or press ENTER for the default
Full Name []: wcm
Room Number []: 01
Work Phone []: 01
Home Phone []: 01
Other []: 01
Is the information correct? [Y/n] y
ubuntu08@ubuntu08-VirtualBox:/etc$ sudo vi passwd
이제 어떻게 만들어지는지 느낌오죠?
전체를 보면 이정도
ubuntu08@ubuntu08-VirtualBox:/etc$ sudo vi shadow
최하단으로 내려가면
ubuntu:!:19772:0:99999:7:::
pi:$6$nY1LZWiHgKQzP9zV$YBaUClvB/ulejaIdMExBtsqClg5kwbNhStpsDRmym1yfHDT.x9YLJNHsxCOX2b./9SQhgNuSTnd8I65EJIMDI.:19772:0:99999:7:::
shadow안에 있는 내용은 계정마다 다 다름. 계정 만료일자(99999, 만료없음),
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf/rootfs/etc$ sudo vi shadow
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf/rootfs/etc$ sudo vi passwd
그래서 ~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf/rootfs/etc 안에 있는 pi 계정 내용을 shadow랑 passwd에서 삭제하고, 위에서 만든 /etc에 있는 내용을 복사해서 붙여넣어주면 된다.
라즈베리파이 sd카드 빼서 sd 리더기에 꽂아주고
우분투 가상환경에서 장치-> USB -> sd리더기를 선택해준다.
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf$ sudo rm -rf /media/ubuntu08/rootfs/*
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf$ sudo cp -ra rootfs/* /media/ubuntu08/rootfs/.
옵션설명
r: recursive 안에 내용도 복사
a: 원본의 permission을 유지하면서 복사 하는 옵션(이걸 안주면 root가 자기 파일인데 실행할 권한이 없어짐)
ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/noobs/os/RaspiOS_Full_armhf$ sudo blkid
[sudo] password for ubuntu08:
/dev/sda5: UUID="7f7bccec-ff5d-4c76-abb5-158bf9f43a4c" TYPE="ext4" PARTUUID="f1c79b29-05"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop5: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
/dev/loop7: TYPE="squashfs"
/dev/sda1: UUID="D112-077D" TYPE="vfat" PARTUUID="f1c79b29-01"
/dev/loop8: TYPE="squashfs"
/dev/loop9: TYPE="squashfs"
/dev/loop10: TYPE="squashfs"
/dev/loop11: TYPE="squashfs"
/dev/sdb1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="D735-E67D" TYPE="vfat" PARTUUID="921b283c-01"
/dev/sdb2: LABEL="rootfs" UUID="b69628b0-b5d6-474c-9bed-477305ae01ad" TYPE="ext4" PARTUUID="921b283c-02"
sdb1의 PARTUUID를 넣어줘야함. 921b283c-01
sd카드의 uuid값과 다
ubuntu08@ubuntu08-VirtualBox:/media/ubuntu08/bootfs$ sudo vi cmdline.txt
console=serial0,115200 console=ttyS0 root=PARTUUID=921b283c-02 rootfstype=ext4 fsck.repair=yes rootwait
#console=serial0,115200 console=tty1 root=PARTUUID=921b283c-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=GB
ubuntu08@ubuntu08-VirtualBox:/media/ubuntu08/rootfs$ vi etc/fstab
1 proc /proc proc defaults 0 0
2 PARTUUID=33497a23-01 /boot vfat defaults,flush 0 2
3 PARTUUID=33497a23-02 / ext4 defaults,noatime 0 1
이 값을 아까 봤던 uuid값으로 변경
proc /proc proc defaults 0 0
PARTUUID=921b283c-01 /boot vfat defaults,flush 0 2
PARTUUID=921b283c-02 / ext4 defaults,noatime 0 1
변경하면 요렇게 됨
ubuntu08@ubuntu08-VirtualBox:/media/ubuntu08/bootfs$ sudo touch ssh
이 명령어를 쳐주면 라즈베리파이가 부팅할 때 ssh 원격접속이 가능해짐. 이건 라즈비안 os에서 제공하는 기능임.
자 다 했으니, 이제 sd카드 빼자
df쳐서 filesystem 명 확인하고
ubuntu08@ubuntu08-VirtualBox:/media/ubuntu08$ sudo umount /dev/sdb*
라즈베리파이에 sd카드 꽂아서 부팅해보면 초기 상태로 os 처음 깔 때 install 하는 화면이 나옴.
이번 실습의 목적은 기존에 있는 파일을 가져와서 업그레이드 해보는 거였음.
끝났으니 다시 user 삭제해주자
ubuntu08@ubuntu08-VirtualBox:~$ sudo deluser pi
ubuntu08@ubuntu08-VirtualBox:~$ cd ..
ubuntu08@ubuntu08-VirtualBox:/home$ ls
pi ubuntu08
ubuntu08@ubuntu08-VirtualBox:/home$ sudo rm -rf pi
ubuntu08@ubuntu08-VirtualBox:/home$ ls
ubuntu08
'Linux BSP' 카테고리의 다른 글
[Linux File System] Yocto Project 2 (0) | 2024.02.20 |
---|---|
[Linux] fork()와 exec()를 이용한 프로세스 생성 과정 (1) | 2024.02.19 |
[Linux File System] Yocto Project (0) | 2024.02.19 |
[Linux] Foreground, Background 개념 명령어로 이해하기 (1) | 2024.02.16 |
[Linux] Linux 압축 관련 명령어 정리 (1) | 2024.02.15 |