우분투 스크립트 에러

빅픽챠   
   조회 2373   추천 0    

쪽팔리면 질문하지 맙시다. 소중한 답변 댓글을 삭제하는건 부끄러운 일 입니다 

안녕하세요.

우분투에서 intel sgx기능을 써야할 일이 있는데 보드와 cpu는 기능이 지원이 됩니다.

그런데 /dev/sgx_enclave 장치 파일이 생성이 않되어서 수없이 많은 시도를하는데 한달을 해결을 못하고 있네요. ㅠㅠ

참고한 사이트는 https://docs.scrt.network/secret-network-documentation/infrastructure/setting-up-a-node-validator/node-setup/install-sgx 인데

첨부 사진을 보면 소스 파일 /opt/intel/sgxdriver/package/sgx_main.c에 문제가 있는데 정작 /opt/intel/ 하위 디렉토리 아예 생성되질 않아 수정해 볼래야 

수정할 수가 없는 상황입니다. 빨간표시부분 = 을 수정 할 수가 없으니 ㅠㅠ

이런 경우에는 어떻게 해야 할까요 우분투 고수님 도와주세요 ^^

짧은글 일수록 신중하게.
엠브리오 2024-03
관리자 계정으로(root) 인스톨 하고 있는 건가요?
     
빅픽챠 2024-03
네, 관리자(root), 일반계정 모두 마찬가집니다.
epowergate 2024-03
kernel source, kernel dev 설치되어 있나요?
     
빅픽챠 2024-03
제가 리눅스 명령어 조금 아는정도라 무슨 말씀인지 정확히 모르겠네요 ^^
엠브리오 2024-03
일단 커널을 컴파일한 gcc 버전과 현재 컴파일하고 있는 gcc 버전이 틀리다고 나오네요.

x86_64-linux-gnu-gcc-12 하고 그냥 gcc-12 하고 뭐가 틀린지는 잘 모르겠지만, 암튼..

소스코드 컴파일 에러는 컴파일러 호환성 문제가 해결되면 없어질수도 있을듯.
     
빅픽챠 2024-03
리눅스 넘 어렵네요 ㅠㅠ
원본소스파일의 = 도 오타인거죠?
     
epowergate 2024-03
이건 그냥 warning입니다.
무시해도 됩니다
김강호 2024-03
https://github.com/intel/linux-sgx-driver/issues/152
버전을 잘못 고르신게 아닐까 싶네요
     
빅픽챠 2024-03
현재 커널버전에 맞지 않는다는거죠? 음 커널버전 5.19에서도 시도해보기는 했었는데 어렵네요 답글 감사합니다.
화란 2024-03
sgx_main.c 파일, 112번째 줄, vma 구조체 멤버인 vm_flags는 read only인데, OR 연산으로 그 값을 변경하려고 해서 error를 띄우고 컴파일이 중단된겁니다.

설마, 소스코드가 잘 못된건 아니겠죠 ?^^
     
빅픽챠 2024-03
예전에도 비슷한 경우가 있어서 저렇게 빨간표시 있는 부분 수정해서 해결한 적이 있었는데 이번에는 아예 원본 소스 파일에 접근할 수가 없어 수정 해볼수가 없네요.
          
화란 2024-03
elif (( $UBUNTUVERSION == 22 )); then
  # Ubuntu 22 is not supported in sgx-linux/v2.17
  wget "https://download.01.org/intel-sgx/latest/linux-latest/distro/${OS}/sgx_linux_x64_driver_2.11.54c9c4c.bin"
else
  wget "https://download.01.org/intel-sgx/sgx-linux/2.17/distro/${OS}/sgx_linux_x64_driver_1.41.bin"
fi


요기서 뭘 가져오는지 확인사살하시고,


# Install the driver
sudo ./sgx_linux_x64_driver_*.bin

요걸 수동으로 함더 해보시길요...


즉,

https://raw.githubusercontent.com/SecretFoundation/docs/main/docs/node-guides/sgx 요 스크립트를 한줄한줄 따라가시는 수 밖에...^^
               
빅픽챠 2024-03
실력은 안되지만 한땀한땀 해보겠습니다. 도움 감사드립니다. 편안한 밤 되십시요.
               
빅픽챠 2024-03
음, 이부분에서 위와 같은 에러가 나는군요
# Install the driver
sudo ./sgx_linux_x64_driver_2.11.054c9c4c.bin
화정큐삼 2024-03
제가 컴파일해 본 결과로는 한번에 잘 되긴하네요.
우분투 16.04 를 사용해 봤습니다.

root@XPE-MODULE-COMPILE:~/sgx# bash sgx
...
Installing Intel SGX Driver ...
/tmp/sgx-driver-3N1czN ~/sgx
install -d /opt/intel/sgxdriver/package
install -d /opt/intel/sgxdriver/scripts
install package/* /opt/intel/sgxdriver/package
install scripts/* /opt/intel/sgxdriver/scripts
~/sgx
/opt/intel/sgxdriver/package ~/sgx
make -C /lib/modules/4.15.0-142-generic/build M=/opt/intel/sgxdriver/package modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-142-generic'
  CC [M]  /opt/intel/sgxdriver/package/sgx_main.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_page_cache.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_ioctl.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_vma.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_util.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_encl.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_encl2.o
  LD [M]  /opt/intel/sgxdriver/package/isgx.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /opt/intel/sgxdriver/package/isgx.mod.o
  LD [M]  /opt/intel/sgxdriver/package/isgx.ko
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-142-generic'

uninstall.sh script generated in "/opt/intel/sgxdriver".

Installation is successful!
Created symlink from /etc/systemd/system/multi-user.target.wants/remount-dev-exec.service to /etc/systemd/system/remount-dev-exec.service.
\n\n###############################################
#####      Installing Intel SGX PSW          #####
###############################################\n\n
...
Created symlink from /etc/systemd/system/multi-user.target.wants/aesmd.service to /lib/systemd/system/aesmd.service.
Setting up libsgx-enclave-common (2.13.103.1-xenial1) ...
Setting up libsgx-urts (2.13.103.1-xenial1) ...
Setting up libsgx-qe3-logic (1.10.103.1-xenial1) ...
Setting up libsgx-pce-logic (1.10.103.1-xenial1) ...
Setting up libsgx-aesm-pce-plugin (2.13.103.1-xenial1) ...
Setting up libsgx-aesm-ecdsa-plugin (2.13.103.1-xenial1) ...
Setting up libsgx-aesm-epid-plugin (2.13.103.1-xenial1) ...
Setting up libsgx-aesm-launch-plugin (2.13.103.1-xenial1) ...
Setting up libsgx-aesm-quote-ex-plugin (2.13.103.1-xenial1) ...
Setting up libsgx-epid (2.13.103.1-xenial1) ...
Setting up libsgx-launch (2.13.103.1-xenial1) ...
Setting up libsgx-quote-ex (2.13.103.1-xenial1) ...
Setting up libsgx-uae-service (2.13.103.1-xenial1) ...
Setting up libtool (2.4.6-0.1) ...
Processing triggers for libc-bin (2.23-0ubuntu11.3) ...
root@XPE-MODULE-COMPILE:~/sgx# ll
total 44
drwxr-xr-x  2 root root  4096  3월  5 00:12 ./
drwx------ 15 root root  4096  3월  5 00:12 ../
-rw-r--r--  1 root root  3114  3월  5 00:12 sgx
-rwxr-xr-x  1 root root 29546 11월 29  2022 sgx_linux_x64_driver_2.11.0_0373e2e.bin*
화정큐삼 2024-03
님의 컴파일로그 와 제 로그를 대조해 보니 제 경우는 기존 설치되어 있는 드라이버를 언인스톨을 하는 과정이 있는것 같은데,
위 이미지에 올라온 메시지로는 이미 설치되어 있는 드라이버 언인스톨이 필요없다고 나오는것 같네요.

/opt/intel/
디렉토리 하위에는 위에서 보시는것처럼
/opt/intel/sgxdriver 가 생성되며 그안에
uninstall.sh 파일이 전부입니다.
이 파일은 새 드라이버를 설치하기 전에 사전수행이 되는것 같습니다.
아직 그 단계까지 진입을 못하고 컴파일 오류가 나서 진행이 안되신것 같습니다.

제가 오늘 시간이 되는대로 우분투 22.04 에 gcc 올려서 컴파일을 다시한번 해드리겠습니다.
구차니 2024-03
소스를 봐야겠지만
커널쪽이 달라지면서 함수가 다르게 쓰이는게 아닐까 합니다.
일단 위에 빌드시 커널이 6.5 대인데
아래 메일아키이브를 보면 6.3 부터 해당 변수에 대한 접근 방법이 달라진것으로 보입니다.
커널을 6.3 이하로 낮추시거나 6.5에 맞는 버전을 찾아보셔야 할 것 같습니다.

https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1911326.html
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0)
+              vma->vm_flags |= VM_LOCKED;
++#else
++              vm_flags_set(vma, VM_LOCKED);
++#endif

일단은 uname -a 로 나오는 커널 버전과
현재 소스에서 필요로 하는 커널 버전 요구사항이 있어야 할 것 같습니다.
     
화란 2024-03
캬... 이게 정답인듯.

커널버전 6.3 언더에서는 OR 연산+저장이고, 그 이상 버전에서는 vm_flags_set() 세팅하는 함수로 개선되었네요^^
     
빅픽챠 2024-03
조언 감사합니다. 시간 날때 다시 한번 해보겠습니다.
     
빅픽챠 2024-03
넵 도움 감사드립니다.
화정큐삼 2024-03
22.04 설치후 컴파일 해봤습니다.
저도 동일한 오류가 발생하네요.
의심되는것이 사용된 커널 버전이 너무 높아서 SGX 와 호환이 안되는것 같아 보입니다.


우분투 22.04 설치시 기본 커널버전이 6.5.0-18, 업데이트 이후 6.5.0-21 까지 올라갑니다.
이 버전이 너무 높은것이 아닌가 싶습니다.
위 캡쳐에 보시면 제가
apt-get install linux-generic
으로 추가 설치해서 깔린 버전은 5.15.0-97 인데요.

높은버전은 걷어내고 5.15.0-97 버전만 가지고 다시 컴파일 해보겠습니다.
     
화정큐삼 2024-03
커널 언인스톨도 시도해 봤는데, 문제가 좀 있습니다.
우분투가 이미 최종 커널버전을 OS 에서 사용하고 있는지 언인스톨을 허용하지 않습니다.
우분투 부팅이 안될 수 있다고 경고창이 뜨면서 진행하지 말라고 나오네요.
나머지 관계 없는 버전들은 언인스톨 할 수 있습니다.
아래 커맨드로 진행을 하면 되는데요.

[Kernel Package Uninstall]
dpkg --list | grep linux-image

root@petersuh-virtual-machine:/usr/src# dpkg --list | grep linux-image
ii  linux-image-5.15.0-97-generic              5.15.0-97.107                          amd64        Signed kernel image generic
ii  linux-image-6.5.0-18-generic              6.5.0-18.18~22.04.1                    amd64        Signed kernel image generic
ii  linux-image-6.5.0-21-generic              6.5.0-21.21~22.04.1                    amd64        Signed kernel image generic
ii  linux-image-generic                        5.15.0.97.92                            amd64        Generic Linux kernel image
ii  linux-image-generic-hwe-22.04              6.5.0.21.21~22.04.11                    amd64        Generic Linux kernel image

sudo apt remove linux-image-generic-hwe-22.04
sudo apt remove linux-image-6.5.0-21-generic
sudo apt remove linux-image-6.5.0-18-generic

6.5 를 걷어내고 낮출수 없다면,
차라리 우분투 기본설치 커널이 구차니님 말씀대로 6.3 이하로 기본 탑재되어 있는 버전인 20.04 이하 버전을 설치해 보시는게 어떨까 싶습니다.
우분투 설치과정에서 최신버전 자동업데이트 설치는 못하게 진행하십시요.
또 6.5로 올라가 버릴 수 있습니다.
          
화정큐삼 2024-03
무리하게 걷어낼 필요가 없었네요. ㅎㅎ
grub.cfg 의 부트엔트리에 커널버전별로 메뉴가 작성되어 있었네요.
22.04 안에서
apt-get install linux-generic 로 5.15 버전 하나더 설치하시고 재부팅해서 5.15 커널버전 선택해서 부팅해 보십시요.
               
화정큐삼 2024-03
타임아웃 부트엔트리가 히든으로 되어 있어서 선택이 힘드실겁니다.
vi /etc/default/grub
하시고 아래 타임아웃스타일은 주석으로 막으시고, 타임아웃은 적당히 0보다 크게 키우시고 저장하고 나오셔서
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=20

update-grub
처리 해주시면 이제 재부팅후 부트엔트리가 보이실겁니다. 두번째 Advaned 로 가셔서 두가지 커널버전중에 선택해 주세요.
                    
화정큐삼 2024-03
5.15 로 커널버전 내려도 잘 컴파일 되는것 확인 했습니다.

Installing Intel SGX Driver ...
/tmp/sgx-driver-1lEXr7 ~/sgx
install -d /opt/intel/sgxdriver/package
install -d /opt/intel/sgxdriver/scripts
install package/* /opt/intel/sgxdriver/package
install scripts/* /opt/intel/sgxdriver/scripts
~/sgx
Warning: There is no need to install additional SGX driver with in-kernel SGX support.
/opt/intel/sgxdriver/package ~/sgx
make -C /lib/modules/5.15.0-97-generic/build M=/opt/intel/sgxdriver/package modules
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-97-generic'
  CC [M]  /opt/intel/sgxdriver/package/sgx_main.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_page_cache.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_ioctl.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_vma.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_util.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_encl.o
  CC [M]  /opt/intel/sgxdriver/package/sgx_encl2.o
  LD [M]  /opt/intel/sgxdriver/package/isgx.o
  MODPOST /opt/intel/sgxdriver/package/Module.symvers
  CC [M]  /opt/intel/sgxdriver/package/isgx.mod.o
  LD [M]  /opt/intel/sgxdriver/package/isgx.ko
  BTF [M] /opt/intel/sgxdriver/package/isgx.ko
Skipping BTF generation for /opt/intel/sgxdriver/package/isgx.ko due to unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-97-generic'

uninstall.sh script generated in "/opt/intel/sgxdriver".

Installation is successful!
Created symlink /etc/systemd/system/multi-user.target.wants/remount-dev-exec.service → /etc/systemd/system/remount-dev-exec.service.
\n\n###############################################
#####      Installing Intel SGX PSW          #####
###############################################\n\n
                         
빅픽챠 2024-03
바쁘실텐데 이렇게 까지 신경써주시어 너무너무 감사드립니다. 5.15 커널로 도전 해보겠습니다. ^^
엠브리오 2024-03
"화정큐삼"님이 친절하게도 컴파일이 잘 된다는 사실까지 확인해주셨으니..

현재 우분투 버전이 얼마인지?
컴파일하고 있는 환경의 커널버전은?
설치하려고 하는 SGX의 버전은?

대충 위의 조건들을 확인해보면 답이 나올듯 하군요.
     
빅픽챠 2024-03
조언 감사드립니다.
민호양 2024-03
모든분들이 아주 자세히 설명해주셨네요. 해당 프로덕/바이너리가 지원하는 환경을 한번 더 확인 후 진행하시면 될 것 같습니다.
이미 최신을 사용하고 있다면, 지원하는 다음 LTS로 넘어가시거나 다음 바이너리 릴리즈를 기다리시는걸 추천합니다.
구차니 2024-03
약간 딴지(?)를 걸면

우분투 문제 -> 아님
스크립트 -> 아님

홍철없는 홍철팀에 답은 나오는 희한한 현상이 ㅎㅎㅎ
     
빅픽챠 2024-03
넵, 제가 잘 몰라서 ㅎㅎ
빅픽챠 2024-03
============================================================================================================================
스크립트 에러나는건 화정큐삼님 말씀대로 커널 5.15로 해서 하니 에러없이 잘 해결되었습니다. 다시한번 감사드립니다.
이런 프로세스를 하는이유가 인텔 i7 8700, asrock z370m pro4 메인보드 조합이 intel sxg기능을 지원하는데
/dev/sgx_enclave 장치가 생성되지 않아서 sgx관련 프로그램들이 설치되지 않아서인지 해서입니다.
보통은 우분투 5.14이후 버전이면 자동으로 생성되어야 하는데 생성되지 않고 /sgx_provision, /sgx_vepc 장치만 생성되서입니다.
좀더 검색을 해봐서 나머지 숙제를 해결해봐야겠습니다.
다시한번 답글 달아주신분들 감사드리고 오늘 하루도 행복한 하루 되십시요 ^^


QnA
제목Page 180/5730
2015-12   1791876   백메가
2014-05   5266958   정은준1
2022-06   1684   osthek83
2023-02   1684   미담
2022-11   1684   cho609495
2021-10   1685   ZaseJK
2024-09   1685   inquisitive
2022-11   1685   흥마
2023-01   1685   모어쿨
2022-10   1685   SLALqHD
2023-06   1685   김동혁1
2022-09   1686   이창준
2023-11   1686   전설속의미…
2024-11   1686   audacity
2022-09   1686   사랑하라
2023-11   1687   hdsniper
2022-12   1687   옆왕
2024-08   1687   hapoom
2022-12   1687   tantan11
2024-06   1687   맨션에살자
2024-08   1687   회원
2024-06   1688   Sakura24