일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Jetson
- vpi
- nvarguscamerasrc
- 봉화 숲속캠핑장
- RDEPENDS
- server error
- udpsink
- libargus
- gcc7
- linux
- bash
- libargus api
- orin nx
- bitbake
- /dev/kmsg
- camera
- 티스토리챌린지
- gstsample
- lineedit
- nvidia
- LAYERS
- boot process
- mkfs.ext4
- l4t
- ssd 포맷
- vpiimage
- yocto
- 오블완
- cpu frequency
- meta-tegra
- Today
- Total
DREAMER
[patch] patch 파일 생성 및 적용 본문
patch 파일을 만드는 방법은 크게 2가지가 있다.
1. git
2. diff
1, git diff로 patch파일 생성
kernel 소스의 패치를 생성하려면 다음 명령어를 사용하여 새로운 shell을 열어준다. {linux-tegra}에 원하는 패키지 명을 넣어주면 해당 패키지의 경로에서 shell이 열린다.
$ bitbake linux-tegra -c devshell
git diff로 patch파일을 생성하기 위해서 해당 shell에서 git 레파지토리 설정을 한다. 아래 내용은 사용자에 따라 편한 방식대로 변경되어도 좋다. 단, patch를 만들 commit을 생성해야 한다.
$ git init
$ git add .
$ git commit -m "First Commit"
commit을 생성한 후에, 원하는대로 kernel 소스를 수정한다. patch가 너무 커지면 가독성 및 관리가 힘들기 때문에, 모듈 별, 기능 별 등으로 commit을 쪼개서 생성한다.
수정 후 commit.
$ git add .
$ git commit -m "Add functions for wireless"
patch 파일의 수정 전 (First Commit)과 수정 후 (Second Commit)을 맞게 commit 하였다면 diff로 해당 사항을 출력하여 확인할 수 있다.
$ git diff
현재 레파지토리에서 수정 내역을 확인 할 수 있다. 해당 사항이 내가 업데이트한 내역이 맞는 지 확인 후 패치파일을 생성한다.
$ git diff > 0001-Add-functions-for-wireless.patch
현재 디렉터리에 패치파일이 생성된 것을 확인 할 수 있다.
만약 여러개의 commit을 1개의 patch파일로 생성하고 싶으면 original commit id & update commit id를 사용하면 된다.
$ git log
<출력>
commit ae676f2ec15c6355d26142addas86e1401646fa9 (HEAD -> master)
Author: user <user@github.com>
Date: Wed Mar 15 18:53:16 2023 +0900
Fourth Commit
commit a8d482cdf03da576de3d5fbb33eb350f6dd231d6
Author: user <user@github.com>
Date: Wed Mar 15 15:15:14 2023 +0900
Third Commit
commit 42563fc5631a7410b91142fa77e26ed0c6f0607b
Author: user <user@github.com>
Date: Wed Mar 15 11:24:09 2023 +0900
Second Commit
commit 848b4f58fa46988c42a8a3c79716ae468abdea5e
Author: user <user@github.com>
Date: Thu Mar 9 09:55:25 2023 +0900
First Commit
commit id로 patch파일 생성
$ git diff [original-commit-id] [update-commit-id] > [patch-file]
=== 예시 ===
$ git diff 42563fc5631a7410b91142fa77e26ed0c6f0607b ae676f2ec15c6355d26142addas86e1401646fa9 > 0002-Delete-old-modules.patch
2. diff로 patch 파일 생성
$ diff -uNr <file1> <file2> > test.patch
[patch파일 적용]
옵션 -pNumber는 skip할 디렉터리의 수를 의미한다.
예를들어, 패치파일에서 p3 옵션을 주면 다음과 같이 경로가 생략된다.
--- a/etc/xdg/weston/weston.ini +++ b/etc/xdg/weston/weston.ini -> --- a/weston.ini +++ b/weston.ini
$ patch -p1 < [패치파일명]
'프로그래밍 > Linux' 카테고리의 다른 글
[service] Auto-restart a failed service in systemd (1) | 2023.05.17 |
---|---|
[signal] Signal numbers (0) | 2023.05.17 |
[systemd] service 생성 및 추가 (0) | 2023.04.18 |
[wget] 모든 파일 얻어오기 (0) | 2023.03.22 |
[nmcli] connect wifi Ubuntu terminal (0) | 2022.08.05 |