Linux

    Synology File Station에서 공유 링크를 wget/curl로 다운받는 방법

    Synology File Station에 올라와 있는 파일을 외부에서 다운받기 위해 공유 링크를 생성 후 해당 링크를 wget 혹은 curl로 받으면   원하는 파일이 다운로드 되지 않고, HTML 파일만 생긴다. 아래 링크를 참고하여 직링크를 만들어도 증상은 동일했다.https://jgpark.kr/6 Synology File Station에서 다운로드 직링크(Direct Link) 만들기*본 포스팅은 2020년 4월 7일에 작성되었습니다. *본 포스팅은 Synology DS218+ (Version : DSM 6.2.2-24922 Update 4)을 기준으로 작성되었습니다. *2020년 11월 26일 업데이트 : URL 인코더/디코더 작동 오류 개선 및jgpark.kr 그 때 발견한 것이 CurlWge..

    [Kernel] Device-tree probe Platform Driver

    테스트 환경 Ubuntu 22.04 (Kernel v6.1) SK-AM62A-LP 본 글은 플랫폼 디바이스가 디바이스 트리 메커니즘과 상호 작용하는 방법을 설명한다. 디바이스 트리는 특정 시스템의 하드웨어 구성에 대한 설명서와 같다. 커널은 디바이스 트리를 구문분석하고 이를 통해 실제로 실행중인 시스템에 대해 알 수 있다. - /driver/base/platform.c::platform_match() 함수에 probe()를 호출하는 4가지 조건이 있다. OF(open firmware,즉, devicetree) style 매칭으로 devicetree의 compatible과 of_device_id의 compatible이 매칭될 때 probe()가 호출된다. ACPI를 이용하는 방법인데, 실무에서 잘 쓰이지 ..

    v4l2loopback

    v4l2loopbackV4L2 루프백 장치를 생성하는 커널 모듈 이 모듈을 사용하면 "가상 비디오 장치"를 만들 수 있다. 일반(v4l2) 응용 프로그램은 이러한 장치를 일반 비디오 장치인 것처럼 읽지만 비디오는 캡처 카드 등에서 읽히지 않고 대신 다른 응용 프로그램에 의해 생성된다. 위 프로그램을 사용하면 v4l2를 이용한 예제를 진행 시 웹캠이나 카메라를 연결하지 않고도 다양하게 이용이 가능하다. 패키지 다운로드git clone https://github.com/umlaeute/v4l2loopback.git빌드 진행make && make install-util sudo make installsudo depmod -a필요한 패키지를 설치sudo apt-get install makesudo apt-get..

    Device Tree

    장치 트리 파일은 ARM 기반 Linux 시스템의 BIOS와 유사하다. 장치 트리 파일에는 메모리 주소, 다른 장치와의 링크 및 커널 드라이버가 추가로 참조하는 많은 매개 변수(클럭 속도, CSI 레인 등)에 대한 몇 가지 하드웨어 정의가 들어 있다. ARM Processor는 모든 Device Tree Source files (DTS)이 'arch/arm/boot/dts'에 위치해 있으며, Device Tree Compiler (DTC) 는 'dts, dtsi' source 파일을 compile 하여 binary 파일로 만든다. 일반적인 장치 트리 파일 형식 이미 많이 알려진 디바이스트리는 arch/arm/boot/dts/ 에 위치하고 있으며 3개의 확장자로 존재한다. dtb - dts 파일을 컴파일 ..

    expect 명령어

    현재 회사에서 사용중인 제품이 PC와 연결되어 있는데 제품을 사용자가 수동으로 전원을 끄지 않고 원격으로 끄는 방법에 대해 찾아 보는 중에 ssh로 이용하여 poweroff 명령어를 보내는 것으로 가능했지만 ssh 접속 시 나오는 문구에 대해 자동으로 처리하는 방법에 대해 막히게 되었다. 구글링 하던 중 입력을 자동으로 하게 해주는 exepct 명령어를 확인하게 되었다. expect Linux manual page에 따르면 다음과 같이 설명한다. Expect 는 다른 대화형 프로그램과 "대화"하는 프로그램입니다. 사용자는 원할 때 직접 제어하고 상호 작용할 수 있습니다. 그런 다음 스크립트에 제어권을 반환합니다. SSH 자동화 아래는 exepct를 사용하여 만든 원격종료 쉘 파일이다. #!/usr/bin..

    [Gstreamer] appsink

    appsink는 애플리케이션이 파이프라인의 GStreamer 데이터를 처리할 수 있도록 다양한 방법을 지원하는 싱크 플러그인입니다. 대부분의 GStreamer 요소와 달리 Appsink는 외부 API 기능을 제공합니다. https://gstreamer.freedesktop.org/documentation/applib/gstappsink.html?gi-language=c GstAppSink GstAppSink Appsink is a sink plugin that supports many different methods for making the application get a handle on the GStreamer data in a pipeline. Unlike most GStreamer element..

    ubuntu 네트워크 장치 이름 변경

    네트워크 인터페이스명 가지고 프로젝트를 진행하던 중 우분투를 깔면서 이더넷 인터페이스가 바뀌게 되면서 프로그램을 우분투 버전마다 프로그램을 만들어야 되는 상황이 생겼다. 그래서 네트워크 인터페이스를 고정할 수 있는 방법에 대해서 알아 봤다. 1. 네트워크 인터페이스 MAC 주소 확인 ifconfig 2. 70-persistent-net.rules 생성 sudo gedit /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="MAC 주소", NAME="인터페이스 명" NAME 부분에 다른 명칭도 사용 가능 테스트는 enp0s3으로 진행한다. 3. grub 수정 sudo g..

    PCIe ASPM Error

    PCie 장치를 Host PC 에 장착 후 부팅 하였을 때 아래와 같은 에러 메시지가 출력되는 에러가 발생한다. 해당 에러 메시지는 PC 메인보드에서 PCIe 슬롯에 장착된 디바이스들의 전원을 컨트롤 하는 ASPM 기능에 대한 에러 메시지로 PC 와 장치의 기능 관련으로는 전혀 문제가 없다. ASPM이란? 활성 상태 전원 관리(ASPM, Active-State Power Management)는 PCIe 서브시스템의 전원 소비를 PCIe 연결로 접속된 장치가 사용중이 아닐 때 저전력 상태로 변경해서 절약하는 전원 관리 메커니즘입니다. ASPM은 연결된 디바이스들의 전원 상태를 제어합니다. 해당 에러 메시지가 뜨는 것을 막기 위해서는 ASPM 기능을 끄는 것으로 방법은 아래와 같다. PC 를 실행 후 터미널..

    i2c-tools

    i2c-tools는 코드를 작성하지 않고도 I2C 주변 장치를 쉽게 디버깅할 수 있게 해주는 I2C 프로그램이다. i2cdetect 특정 I2C 버스에 어떤 주변 장치가 연결되어 있는지 확인할 수 있습니다. i2cdetect -l // i2c 연결된 모든 라인 확인 특정 I2C 버스에서 감지된 주변 장치 목록을 가져옵니다 i2cdetect -r -y 2ex) i2cdetect -r -y 2 // i2c 라인 2번에 연결된 모든 장치 주소 확인 i2cset ( 1byte & 2byte Adress ) 원하는 장치에 직접 쓰려면 i2cset를 사용한다. i2cset -f -y 2ex) i2cset -f -y 2 0x10 0x01 0x50 // i2c 라인 2번에 연결된 0x10 주소를 가진 장치의 0x01 ..

    SSD 자동 인식

    리눅스에서 ssd에 파일을 저장하는 프로그램을 만들다가 자동으로 ssd를 인식하고 포맷 후 마운트 하는 작업이 필요하여 만들게 되었다. fdisk 를 이용해서 구성할려고 하였지만 사용중인 SSD가 4TB 이기 때문에 parted 프로그램을 사용하였다. *fdisk는 MBR 방식이기 때문에 디스크의 사이즈가 2TB가 넘어가면 용량을 2TB 까지 밖에 사용을 못합니다. 때문에 2TB 이상의 스토리지를 사용할 때는 MBR 방식 대신 GPT 방식을 사용해주어야 합니다. #!/bin/bash # Installed Parted Checking if which parted >/dev/null; then echo "parted cli already installed!!!" for i in a b do if [ -b /..