Linux
gdb 어셈블리 출력 방식 변경
윈도우에서 wsl 설치시 기본문법이 intel로 되어있더라. 뭔가 리눅스에서 어셈을 볼땐 atat이 편해서 방식을 바꾸고 싶었다. 당연히 그 반대도 가능함. set disassembly-flavor at set disassembly-flavor intel
리눅스 동적 라이브러리 ( 공유 라이브러리) 생성하기
라이브러리 예제 코드 #include int add(int a,int b){ int result = 0; result = a+b; printf ("add : %d + %d = %d",a,b,result); return result; } 소스코드 -> 오브젝트파일 (.o) gcc -c file1.c 오브젝트파일 -> 공유 라이브러리 (.so) gcc -shared -o libfile1.so file1.o 이때 반드시 lib[파일명].so 와 같은 형식으로 만들어줘야 한다. 이후 라이브러리를 불러올 때 앞의 lib 와 뒤의 .so는 자동으로 빼고 로드된다. 라이브러리 경로 추가하기 총 두가지 방법이 존재한다. LD_LIBRARY_PATH 직접추가 export LD_LIBRARY_PATH=$LD_LIBRARY..
VM에 설치한 도커로 인한 네트워크 장애 발생
상황은 이렇다. 동아리 연구실내의 컴퓨터들이 도서관 네트워크에 더미허브를 이용해 연결되어 있는데, 컴퓨터 중 서버 역학을 하는 컴퓨터에는 VM위에 리눅스 서버들이 올라가있다. 또, 예전에 그 서버중 하나에서 가상서버 관리를 위해 도커를 올린적이 있었는데, 작업 중간에 멈추고 그대로 냅둔 상태였다. 어느날 연구실 컴퓨터들에 네트워크 장애가 발생해서 점검해보는데, 학교측에서 도서관 네트워크 장비구성을 변경한 이후에 이런 문제가 생겼다고 했다. 명확한 원인이 잡히지가 않아 대체 뭘까.. 하고 있던 와중에, 각 컴퓨터에 설정된 dns가 여타 장비들이랑 다르게 잡혀있어서, dns를 재설정하니 이제 네트워크가 정상작동했다. 근데 여기서부터 진짜 문제가 발생한다. 연구실 컴퓨터들이 도서관 네트워크에 연결되자마자 도서..
데비안 리눅스 myriaDB 설치 후 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 에러
데비안 리눅스 myriaDB 설치 후에 그누보드 5 설치를 위해 sql 연결 작업을 진행해야 하는데, Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 에러가 발생하는 경우가 발생했다. 해결하고 보니 꽤나 복합적인 문제였는데, 1. 일단 위 에러는 myriaDB 혹은 mysql 서비스가 시작되어있지 않거나, 해당 디렉토리 경로에 mysqld.sock 파일이 없는 경우에 발생한다. 1-1 따라서, mysql 서비스를 시작해주거나, 1-2 mysqld.sock 파일의 경로를 찾아 /etc/mysql/my.conf 설정파일에서 socket = /var/lib/mysql/mysql.sock 부분을 수정해줘야 한다. 나..
다른 아키텍쳐 패키지 설치 불가시
현재 64비트 우분투 사용중인데, 32비트 패키지(i386) 를 설치할 일이 생겨 apt-get으로 설치를 시도하니 해당 패키지 정보를 가져오지 못해 설치가 불가능한 상황이 발생했다 . dpkg --add-architecture i386 apt-get update 위와 같이 i386 아키텍쳐 정보를 패키지 리스트에 추가하고 update를 진행하면 해당 아키텍쳐 패키지 정보도 같이 받아오게 된다. 이후 설치 진행하면 잘 됨.
VM 웨어 우분투에서 LVM 디스크 용량 증설하기
시작 하기 전.. VM웨어의 우분투 서버 용량이 꽉차서 더이상 작업이 불가능한 상황이 왔다. 디스크 용량 확장하려면 스냅샷을 지워야하므로, 원본을 백업하고 복사한다음 스냅샷 삭제 이후 디스크 크기 확장 진행한다. vm머신 우클릭 - 설정 - harddisk - expand 선택, 기존 50 -> 64로 키웠다. VM웨어에서 LVM 파티션 크기를 키워주려면 물리 파티션에 크기를 바로 추가해주는 방식이 아니라, 다른 물리 파티션 생성 -> 파티션 종류 LVM으로 전환 -> 물리 볼륨 생성 -> 기존 VLM과 새로 만든 LVM 병합 순으로 진행해야한다. 이후 설정 진행하기 전에 스냅샷 떠두고 부팅한다. 디스크 구조 확인 df -h로 전체 볼륨 용량 확인 -> 볼륨 추가 안된것 확인됨 └────╼ df -h F..
페도라 12 고정IP 설정
동아리 서버 VM의 드라이브 경로를 옮긴 뒤에 재시작을 해봤더니 네트워크 서버가 제대로 동작을 안하더라. ip주소를 확인해보니 기존에 쓰던 ip에서 바뀌어있다. 분명 고정ip 설정을 해놨을텐데. 네트워크 장치를 재시작하기 위해 service network restart 명령어 실행시 Bringing up interface eth0 : device eth4 does not seem to be present ~ 로 시작하는 에러가 발생한다. 이는 해당 네트워크 장치의 IP/MAC 등등 상세 설정이 뭔가 제대로 세팅되어있지 않다는 뜻. 따라서 해당 장치의 설정을 확인해봐야 한다. 페도라 12의 경우는 네트워크 장치 설정 파일이 /etc/sysconfig/network-secripts/ 에 저장되어있다. ifc..
docker 로 생성한 django 컨테이너에 bash 터미널 붙기
이전까지의 작업 내역을 정리해보면 1. docker-compose를 통해 django 컨테이너와 nginx 컨테이너를 각각 생성해서 연결, 서버 구동 2. docker-compose 파일에서 django 컨테이너에 volumes 연결해서 로컬 서버내의 디렉토리와 연결 이렇게 하면 2번에서 만들어진 디렉토리는 로컬서버와 컨테이너 서버에서 동시에 사용할 수 있으므로, 굳이 컨테이너 내에서 작업하지 않아도 로컬에서 작업한 내역이 그대로 반영되게 만들 수 있다. 그러나 종종 장고 컨테이너 내에서 배쉬쉘을 통해 명령어를 실행시킬 필요가 있을 수 있다. docker exec -it 컨테이너이름 /bin/bash 위와같은 명령어를 통해 컨테이너에 접속해 터미널을 이용한 작업이 가능하다. 이번에는 장고 튜토리얼 앱인 ..
잘되던 도커 컨테이너가 갑자기 연결이 안될때
서버 세팅이 다되고, 통신이 잘 되는지도 테스트가 완벽히 끝나서 그상태 그대로 suspend해놓고 며칠뒤에 다시 docker-compose up 을 실행하고 서버에 연결되는지를 테스트해보는데 연결이 안된다. 서버는 잘 켜지고, docker ps -a 에서 포트 매핑된거도 보이고, netstat -tnlp 로 포트 열린것도 확인이 되지만 연결이 안된다. 포트 매핑도 잘되고 열리기도 했지만 컨테이너에 접근이 안된다? 그럼 방화벽 문제다. sudo iptables -t filter -F sudo iptables -t filter -X systemctl restart docker iptables 를 초기화시켜주고 도커 서비스를 재실행하자. 참조 링크 : https://velog.io/@adam2/어느날-도커-컨..
네트워크를 Bridge로 설정한 VMware 내부에 Docker 서버 사용시 주의점
정확한 원인은 모르겠는데, 네트워크를 브릿지로 설정해준 vmware 우분투 내부에서 docker를 사용할시에 dns나 ip 설정이 제대로 되지 않아 apt-get를 비롯해 docker 서버 내부에서 외부와의 통신이 일체 안되는 문제가 발생한다. 아마 도커 엔진은 내부아이피를 사용하는걸 상정하고 네트워크 설정을 진행하는데, 도커가 돌아가고 있는 우분투는 브릿지 모드에 맞춰 개별적인 ip를 할당받아 사용되기 때문인걸로 추정된다. 따라서 , 해당 네트워크 환경 내에서 도커를 사용하려면 이미지와 컨테이너 빌드시부터 옵션을 좀 달리 해줘야한다. docker build --no-cache --network=host -t durumi . docker run -it --net host --name durumi duru..