학교 수업으로 시스템프로그래밍을 듣게 됬는데, FEMU를 이용해 SSD 상에서 어떻게 작동하는지 배우게 됐다.
QEMU
우선 QEMU(Quick EMUlator)라는 에뮬레이터를 주로 사용했다 합니다. 하드웨어 구조를 소프트웨어로 구현하여 실제 OS를 가상의 하드웨어 상에서 구동이 가능하게 해준다고. 하지만, 가상의 SSD를 설계해 사용하더라도 데이터를 물리적인 SSD에 저장하면 작동방식만 재현 할뿐, 정상적인 SSD의 처리속도를 따라오지 못한다고 합니다.
FEMU
QEMU의 코드를 수정해 storage에 저장될 실제 데이터를 Host의 DRAM에 저장했습니다. DRAM의 처리 속도는 SSD에 비해 빠르기에 실제 SSD 처리 속도를 재현하게 됐습니다.
FEMU 설치
1) 터미널 설정
Windows 경우 비쥬얼 머신을 설치할 수도 있지만, WSL을 이용해도 됩니다.
1. 컴퓨터에서 'windows 기능 켜기/끄기' 열기
2. 'Linux용 Windows 하위 시스템', '가상 머신 플랫폼' 체크 표시 후 재부팅
3. Windows PowerShell 실행. 실행 후 'wsl --install' 입력.
3-1. 만약 wsl --install이 안된다면,
관리자 모드로
- dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
를 입력.
4. 다시 'wsl --set-default-version 2'와 'wsl --install -d Ubuntu-22.04'를 입력
4-1. 만약 새로운 창에서 "Enter new UNIX username: '라는 입력 칸이 나오지 않는다면,
'wsl_update_x64.msi'라는 파일을 깔아야 합니다. (근데 이 파일은 학교에서 제공해준 파일이라 따로 찾으셔야 할 듯합니다...)
4-2. 정상적으로 창이 나온다면 username과 password를 만들어 주세요.
5. 다시 PowerShell에서 'wsl -l -v'를 입력해 VERSION이 2인지 확인하고, Ubuntu에서는 'sudo apt update && sudo apt upgrade -y'를 입력해 업데이트 해주세요.
2) FEMU 설치
6. 이제 Ubuntu 창에서 'mkdir -p ~/images'를 입력해 home 디렉토리에 images 폴더를 만들어주세요.
여기서 우분투 이미지라는 것이 필요합니다. 그런데 직접 만드는 것보단 FEMU VM 이미지를 직접 요청받는 게 좋다 합니다. 해당 사이트에서 요청해 femu.tar.xz 파일을 받으세요.
7. 받은 femu.tar.xz 파일을 ~/images/에 넣어주세요.
8. cd ~/images를 입력해 폴더 안에 들어가서 'tar xJvf femu.tar.xz'를 입력해 압축을 풀어주세요. 그럼 u20s.qcow2, u20s.md5sum 파일 2개가 나옵니다.
9. 해당 파일이 깨진 것은 없는지 'md5sum u20s.qcow2 > tmp.md5sum', 'diff tmp.md5sum u20s.md5sum'로 검사해 주세요.
11. cd femu로 들어가서 mkdir build-femu를 입력하고 해당 폴더 안에 들어갑니다.
12. 'cp ../femu-scripts/femu-copy-scripts.sh . '를 입력합니다. 그리고 './femu-copy-scripts.sh . '를 입력합니다. 마지막으로 'sudo ./pkgdep.sh'를 입력합니다.
13. './femu-compile.sh'를 입력합니다.
13-1. 만약 make 관련 오류가 난다면, 'sudo apt-get install make'를 입력 후 재부팅 해주세요.
14. ~/femu/build-femu/ 위치에서 'sudo vim run-blackbox.sh'로 SSD 용량을 변경할 수 있습니다.
14-1. 해당 파일로 들어가면 17번 줄과 18번 줄을 변경하면 됩니다. 만약 4GB로 줄이자면 nchs=2, ssd_size=4096 으로 해주세요. 그래도 돌아가지 않는다면 nchs=1, ssd_size=2048 로도 해보세요.
15. 다시 ~/femu/build-femu 위치에서 './run-blackbox.sh'를 입력해 femu를 실행시키세요. 실행이 되지 않는다면 14-1번에서 처럼 숫자를 줄여보세요.
16. 아이디 femu, 비밀번호 femu를 치고 들어가세요.
주의) femu가 실행되는 터미널 창은 Ctrl + c 로 femu 전원이 종료됩니다.
그래서 새로운 터미널 창을 띄워 ssh로 연결해주세요.
'ssh -p 8080 femu@127.0.0.1'을 입력 후 femu 비밀번호를 입력하면 연결이 됩니다.