.png)
OS: Oracle Solaris 11.3.1.5.2, CPU 아키텍처: X86
최근에 다음을 수행하여 Squid를 설치했습니다.
$ pkg install squid
이것은 잘 진행되었습니다:
root@darwin1:~# pkg info squid
Name: web/proxy/squid
Summary: Squid Web Proxy Cache
Description: Squid is a caching proxy for the Web supporting HTTP, HTTPS,
FTP, and more.
Category: Web Services/Application and Web Servers
State: Installed
Publisher: solaris
Version: 3.5.5
Build Release: 5.11
Branch: 0.175.3.0.0.30.0
Packaging Date: Fri Aug 21 17:30:06 2015
Size: 51.84 MB
FMRI: pkg://solaris/web/proxy/[email protected],5.11-0.175.3.0.0.30.0:20150821T173006Z
하지만 Squid를 실행할 수는 없습니다.
root@darwin1:~# /usr/squid/sbin/squid -h
Illegal Instruction (core dumped)
이 file
명령은 다음을 제공합니다.
root@darwin1:~# file /usr/squid/sbin/squid
/usr/squid/sbin/squid: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, not stripped
로컬(비커널) 영역 안에 있습니다. 그것은 중요하지 않습니다, 그렇죠?
왜 코어 덤프인가?
답변1
죄송합니다. 제가 직접 답을 찾은 것 같습니다.http://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError.
(인용 시작)
Squid 3.4의 잘못된 명령어 오류
개요 Squid 3.4 이상, 특정 환경에서 실행반가상화 시스템전체 가상화(최소한 KVM, Xen 및 Xen 파생 제품은 지금까지 확인됨)를 주장하는 일부 주장도 시작 직후 불법 명령 오류로 인해 충돌이 발생합니다.
증상
Intel 호환 프로세서의 가상 머신을 시작한 직후 Squid가 잘못된 명령 오류와 충돌함
설명
Squid 빌드 시스템은 기본적으로
-march=native
gcc 옵션을 사용하여 결과 바이너리를 최적화합니다. 불행하게도 특정 (반)가상화 시스템은 그들이 광고하는 전체 명령어 세트를 지원하지 않습니다. 컴파일러는 이 오류를 트리거하는 명령을 모르고 생성합니다.해결 방법
이러한 최적화는 도움이 되지만 특히 ia64/amd64 플랫폼에서 완전한 기능을 갖춘 오징어를 갖추는 데 반드시 필요한 것은 아닙니다. 감지된 기본값은
--disable-arch-native
구성 스크립트에 옵션을 제공하여 무시할 수 있습니다 .
(인용 끝)
우리는 솔라리스를 실행하고 있습니다VMware ESXi 6.0 내부. 그래서 그런 이유인 것 같아요.
다른 사람도 이 문제에 직면할 가능성이 높다고 해서 내 질문을 삭제하지는 않겠습니다.
답변2
-march=native
Oracle 지원 계약을 체결한 고객은 저장소 에서 Solaris 11.3 SRU 17(11.3.17.5.0)에서 비활성화된 플래그 로 컴파일된 Squid 버전을 얻을 수 있습니다 /support
. 여기에는 다음 사항에 대한 수정 사항이 포함됩니다.
- 버그 22051233 - AMD 프로세서에서 오징어가 즉시 넘어짐
- 버그 22380085 - VM 내부에서 실행할 때 Squid 잘못된 명령이 발생함
답변3
나는 솔라리스 11.3에서도 같은 문제를 겪었다. Squid 서비스를 시작할 때마다 maintenance
모드로 전환됩니다. (를 사용하여 확인할 수 있습니다 svcs -a | grep squid
):
maintenance 21:17:13 svc:/network/http:squid
로그( /var/svc/log/network-http:squid.log
)에 코어 덤프 오류 줄이 표시됩니다.
/lib/svc/method/http-squid: line 23: 1833: Illegal instruction(coredump)
/lib/svc/method/http-squid
라인 23은 Squid를 시작하려고 시도하는 시작 스크립트의 라인입니다 . 두 번째 숫자(이 예에서는 1833)는 실패할 때마다 증가하는 것처럼 보였지만 의미가 없습니다.
결국 /usr/squid/sbin/squid
이전 Solaris 11.0 설치(46MB가 아닌 17MB)에서 Squid 바이너리를 복사했는데 제대로 작동하는 것 같았습니다. "적절한" 솔루션은 아니지만 이전 설치에 액세스할 수 있다면 확실히 쉬운 솔루션입니다!