차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
| linuxfromscratch [2024/06/07 19:41] – [Binutils 설치하기 전에 ISL 설치하기 (실패)] baecy | linuxfromscratch [2025/12/21 18:46] (현재) – [PS1 설정] baecy | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| - | ====== Linux From Scratch ====== | + | ===== 토막 상식 |
| + | ==== 설치된 Perl Module 목록 확인 ==== | ||
| + | === Perl과 기본 시스템 도구만 이용 === | ||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Begin ~/ | ||
| + | |||
| + | # List of installed Perl Modules | ||
| + | |||
| + | # grep " | ||
| + | # /" | ||
| + | # !seen[$NF]++ - awk 내부 배열을 사용해서 중복 제거 | ||
| + | # print $NF - 마지만 단어(모듈명) | ||
| + | # sort --ignore-case (-f) | 대소문자 구분없이 정렬 | ||
| + | |||
| + | pattern=" | ||
| + | |||
| + | perldoc perllocal | awk '/" | ||
| + | |||
| + | # End ~/ | ||
| + | </ | ||
| + | < | ||
| + | pml.sh " | ||
| + | Capture:: | ||
| + | Class::Tiny | ||
| + | Test::Deep | ||
| + | Test:: | ||
| + | Test::Fatal | ||
| + | Test::Needs | ||
| + | Test:: | ||
| + | Try:: | ||
| + | |||
| + | 이런 방식으로 다중 검색도 가능함. | ||
| + | |||
| + | === ExtUtils:: | ||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Begin ~/ | ||
| + | |||
| + | # List of installed Perl Modules | ||
| + | |||
| + | # 검색어가 없으면 사용법 출력 | ||
| + | if [ -z " | ||
| + | echo " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | QUERY=$1 | ||
| + | |||
| + | echo "---- Searching installed Perl modules for: $QUERY ----" | ||
| + | |||
| + | # ExtUtils:: | ||
| + | # grep -i를 사용하여 대소문자 구분 없이 검색 | ||
| + | |||
| + | perl -MExtUtils:: | ||
| + | my $inst = ExtUtils:: | ||
| + | foreach my $mod ($inst-> | ||
| + | my $ver = $inst-> | ||
| + | print "$mod | Version: $ver\n"; | ||
| + | } | ||
| + | ' | grep --color=auto -E -i " | ||
| + | |||
| + | # 일치하는 결과가 없으면 | ||
| + | |||
| + | if [ ${PIPESTATUS[1]} -ne 0 ]; then | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | # End ~/ | ||
| + | < | ||
| + | pml.sh text | ||
| + | ---- Searching installed Perl modules for: text ---- | ||
| + | Text:: | ||
| + | Text::Diff | Version: 1.45 | ||
| + | Text::Glob | Version: 0.11</ | ||
| + | |||
| + | 버전을 출력해주는 장점이 있음. \\ | ||
| + | 특정 모듈 설치전에는 사용하기 힘들다는 단점이 있음. | ||
| + | ==== 설치된 Python3 Module 목록 확인 ==== | ||
| + | |||
| + | < | ||
| + | pip3 list | ||
| + | </ | ||
| + | |||
| + | ==== Qemu Screen Dump ==== | ||
| + | |||
| + | - < | ||
| + | - screendump __filename.ppm__ \\ 다음과 같이 **-f** 옵션으로 저장 포맷 지정 가능 \\ screendump screenshot.png -f png \\ 포맷 지정 저장 방식에서 세그폴트 발생하면 ppm으로 저장후 변환 | ||
| + | - < | ||
| + | |||
| + | |||
| + | ==== xwindow screen saver & dpms 시간 설정 ==== | ||
| + | |||
| + | < | ||
| + | xset s 600 600 | ||
| + | xset dpms 600 600 600 | ||
| + | </ | ||
| + | 순서대로 \\ | ||
| + | 화면보호기 작동시간, | ||
| + | DPMS 대기, | ||
| + | |||
| + | ==== for, echo and sed ===== | ||
| + | |||
| + | <code bash> | ||
| + | for i in $(echo " | ||
| + | </ | ||
| ==== Grep && Tar ==== | ==== Grep && Tar ==== | ||
| 줄 84: | 줄 192: | ||
| <code bash> | <code bash> | ||
| - | function | + | function |
| - | local FindWord=*${1}* | + | local FindWord=*${1}* |
| - | local FindDir=$2 | + | local FindDir=$2 |
| - | + | if [ -z $FindDir ] ; then | |
| - | if [ -z $FindDir ] ; then | + | FindDir=/ |
| - | FindDir=/ | + | fi |
| - | fi | + | find $FindDir -name $FindWord 2> /dev/null | sort | grep -E --color=always |
| - | + | echo "Found file $(ansi --green ${1}) in directory | |
| - | find $FindDir -name $FindWord 2> /dev/null | sort | grep $1 | + | } |
| - | + | export -f file-finder | |
| - | echo "I searched for $(ansi --green ${1}) you wanted | + | |
| - | } | + | |
| - | + | ||
| - | export -f double-check | + | |
| </ | </ | ||
| 줄 129: | 줄 233: | ||
| ---- | ---- | ||
| ==== PS1 설정 ==== | ==== PS1 설정 ==== | ||
| + | 일반사용자 | ||
| + | < | ||
| + | 루트사용자 | ||
| + | < | ||
| - | === 최초 === | ||
| - | ++++ 많이 지저분하고 번거로움 | + | === 2차 개선 === |
| - | < | + | ++++ 별거아닌데 쓸데없이 길어짐| |
| - | touch $LFS/ | + | <code bash> |
| - | ~/.bashrc\\ | + | PS1_ROOT=' |
| - | <code lang=bash> | + | PS1_USER=' |
| - | if [ -f / | + | PS1_HEAD=' |
| - | PS1=' | + | if [ "$(awk ' |
| + | if [ $(id -u) -eq 0 ] ; then | ||
| + | PS1="< | ||
| + | else | ||
| + | PS1="< | ||
| + | fi | ||
| else | else | ||
| - | PS1='\[$(tput setaf 75)\]\[$(tput setaf 229)\]\u\[$(tput setaf 199)\]@\[$(tput setaf 215)\]\h \[$(tput setaf 75)\]\w \[$(tput sgr0)\]\$\n' | + | if [ $(id -u) -eq 0 ] ; then |
| - | fi</ | + | PS1="${PS1_HEAD}${PS1_ROOT}" |
| + | else | ||
| + | PS1="${PS1_HEAD}${PS1_USER}" | ||
| + | fi | ||
| + | fi | ||
| + | </ | ||
| ++++ | ++++ | ||
| - | |||
| === 1차 개선 === | === 1차 개선 === | ||
| 줄 161: | 줄 277: | ||
| </ | </ | ||
| ++++ | ++++ | ||
| + | === 최초 === | ||
| - | === 2차 개선 === | + | ++++ 많이 지저분하고 번거로움 | |
| - | + | <code lang=bash cmd=true user=root> | |
| - | < | + | touch $LFS/ |
| - | PS1_ROOT=' | + | ~/.bashrc\\ |
| - | PS1_USER=' | + | <code lang=bash> |
| - | PS1_HEAD=' | + | if [ -f / |
| - | if [ "$(awk ' | + | PS1=' |
| - | en | + | |
| - | if [ $(id -u) -eq 0 ] ; then | + | |
| - | PS1="< | + | |
| - | else | + | |
| - | PS1="< | + | |
| - | fi | + | |
| else | else | ||
| - | if [ $(id -u) -eq 0 ] ; then | + | PS1='\[$(tput setaf 75)\]\[$(tput setaf 229)\]\u\[$(tput setaf 199)\]@\[$(tput setaf 215)\]\h \[$(tput setaf 75)\]\w \[$(tput sgr0)\]\$\n' |
| - | PS1="${PS1_HEAD}${PS1_ROOT}" | + | fi</ |
| - | else | + | ++++ |
| - | PS1="${PS1_HEAD}${PS1_USER}" | + | |
| - | fi | + | |
| - | fi | + | |
| - | </ | + | |
| ---- | ---- | ||
| ==== Debian 설치 후 추가적인 사항 ==== | ==== Debian 설치 후 추가적인 사항 ==== | ||
| 줄 189: | 줄 295: | ||
| LFS 진행에 필요한 패키지 설치 | LFS 진행에 필요한 패키지 설치 | ||
| - | <codelang=bash > | + | <code bash > |
| sudo apt install build-essentials bison gawk m4 texinfo texinfo | sudo apt install build-essentials bison gawk m4 texinfo texinfo | ||
| sudo apt install gettext libisl-dev | sudo apt install gettext libisl-dev | ||
| 줄 344: | 줄 450: | ||
| ---- | ---- | ||
| ==== Swap file ==== | ==== Swap file ==== | ||
| + | |||
| <code cmd=true cmdout=6, | <code cmd=true cmdout=6, | ||
| export LFS=/ | export LFS=/ | ||
| 줄 353: | 줄 460: | ||
| no label, UUID=890ba9a5-da48-4374-84ce-b71b91863e00 | no label, UUID=890ba9a5-da48-4374-84ce-b71b91863e00 | ||
| sudo swapon $LFS_SWAP | sudo swapon $LFS_SWAP | ||
| - | sudo echo " | + | sudo echo " |
| + | </ | ||
| + | ---- | ||
| ==== Binutils 설치하기 전에 ISL 설치하기 ==== | ==== Binutils 설치하기 전에 ISL 설치하기 ==== | ||
| 줄 378: | 줄 487: | ||
| ---- | ---- | ||
| - | ==== BLFS 시작하기 전에 필요한 패키지 ==== | ||
| - | sudo, nfs-utils(또는 sshfs), openssh, wget | ||
| ==== $LFS/ | ==== $LFS/ | ||
| + | 가장 간단한 방법 | ||
| + | <code lang=bash> | ||
| + | ls -d */ | ||
| + | </ | ||
| + | |||
| <code lang=bash> | <code lang=bash> | ||
| alias dirfind=" | alias dirfind=" | ||
| 줄 387: | 줄 499: | ||
| rm -rf $(dirfind) | rm -rf $(dirfind) | ||
| ## 설치 완료된 패키지 디렉토리만 삭제할거면 다음과 같이 | ## 설치 완료된 패키지 디렉토리만 삭제할거면 다음과 같이 | ||
| - | alias SearchAndDestroy=' | + | alias SearchAndDestroy=' |
| + | </ | ||
| + | ---- | ||
| ==== SBU 측정 ==== | ==== SBU 측정 ==== | ||
| <code lang=bash> | <code lang=bash> | ||