추가적인 자료 | 부록 |
11.5. LFS 완료한 후
11.5.1. 다음에 수행할 작업 결정하기
이제 LFS가 완료되고 부팅 가능한 시스템이 생겼으니 이제 무엇을 해야 할까요? 다음 단계는 이 시스템을 어떻게 사용할지 결정하는 것입니다. 일반적으로 워크스테이션 또는 서버라는 두 가지 범주를 고려할 수 있습니다. 실제로 이러한 범주는 상호 배타적이지 않습니다. 각 카테고리에 필요한 애플리케이션을 하나의 시스템에 결합할 수 있지만 지금은 따로따로 살펴보기로 하겠습니다.
서버는 상대적으로 간단한 카테고리입니다. 일반적으로 Apache HTTP 서버와 같은 웹 서버와 MariaDB와 같은 데이터베이스 서버로 구성됩니다. 하지만 다른 서비스도 가능합니다. USB 드라이브 내장된 운영체제가 이 범주에 속합니다.
반면에 워크스테이션은 훨씬 더 복잡합니다. 일반적으로 기본 그래픽 환경을 기반으로 하는 LXDE, XFCE, KDE 또는 Gnome과 같은 그래픽 사용자 환경과 Firefox 웹 브라우저, Thunderbird 이메일 클라이언트 또는 LibreOffice 오피스 제품군과 같은 여러 그래픽 기반 애플리케이션이 필요합니다. 이러한 애플리케이션에는 원하는 기능에 따라 수백 개 이상의 지원 애플리케이션 및 라이브러리 패키지가 필요합니다.
위의 애플리케이션 외에도 모든 종류의 시스템에 대한 시스템 관리를 위한 애플리케이션 세트가 있습니다. 이러한 애플리케이션은 모두 BLFS 책에 포함되어 있습니다. 모든 환경에 모든 패키지가 필요한 것은 아닙니다. 예를 들어 dhcpcd는 일반적으로 서버에는 적합하지 않으며 wireless_tools는 일반적으로 노트북 시스템에만 유용합니다.
11.5.2. 기본 LFS 환경에서 작업하기
처음 LFS로 부팅하면 추가 패키지를 빌드할 수 있는 모든 내부 도구가 제공됩니다. 안타깝게도 사용자 환경은 매우 빈약합니다. 이를 개선할 수 있는 몇 가지 방법이 있습니다.
11.5.2.1. 호스트에서 LFS 가상 루트 방식으로 작업하기
이 방법은 모든 기능을 갖춘 브라우저와 복사/붙여넣기 기능을 사용할 수 있는 완전한 그래픽 환경을 제공합니다. 이 방법을 사용하면 호스트의 wget 버전과 같은 애플리케이션을 사용하여 루트 환경에서 작업할 때 사용할 수 있는 위치로 패키지 소스를 다운로드할 수 있습니다.
루트에서 패키지를 제대로 빌드하려면 가상 파일 시스템이 아직 마운트되지 않은 경우 마운트하는 것도 기억해야 합니다. 이를 위한 한 가지 방법은 호스트 시스템에서 스크립트를 만드는 것입니다.
cat > ~/mount-virt.sh << "EOF"
#!/bin/bash
function mountbind
{
if ! mountpoint $LFS/$1 >/dev/null; then
$SUDO mount --bind /$1 $LFS/$1
echo $LFS/$1 mounted
else
echo $LFS/$1 already mounted
fi
}
function mounttype
{
if ! mountpoint $LFS/$1 >/dev/null; then
$SUDO mount -t $2 $3 $4 $5 $LFS/$1
echo $LFS/$1 mounted
else
echo $LFS/$1 already mounted
fi
}
if [ $EUID -ne 0 ]; then
SUDO=sudo
else
SUDO=""
fi
if [ x$LFS == x ]; then
echo "LFS not set"
exit 1
fi
mountbind dev
mounttype dev/pts devpts devpts -o gid=5,mode=620
mounttype proc proc proc
mounttype sys sysfs sysfs
mounttype run tmpfs run
if [ -h $LFS/dev/shm ]; then
install -v -d -m 1777 $LFS$(realpath /dev/shm)
else
mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
fi
#mountbind usr/src
#mountbind boot
#mountbind home
EOF
스크립트의 마지막 세 명령은 주석 처리되어 있습니다. 이 명령은 해당 디렉터리가 호스트 시스템에 별도의 파티션으로 마운트되어 있고 완료된 LFS/BLFS 시스템을 부팅할 때 마운트되는 경우에 유용합니다.
이 스크립트는 일반 사용자(권장) 또는 루트로 bash ~/mount-virt.sh
를 사용하여 실행할 수 있습니다. 일반 사용자로 실행하는 경우 호스트 시스템에 sudo가 있어야 합니다.
스크립트에서 봐야할 또 다른 것은 다운로드한 패키지 파일을 저장할 위치입니다. 이 위치는 임의의 위치입니다. 일반 사용자의 홈 디렉터리(예: ~/sources)나 전역 위치(예: /usr/src)에 저장할 수 있습니다. (루트 환경의) /sources에 BLFS 소스와 LFS 소스를 혼합하지 않는 것이 좋습니다1). 어떤 경우든 패키지는 루트 환경 내에서 액세스할 수 있어야 합니다.
마지막으로 소개하는 편의 기능은 루트 환경으로 들어가는 프로세스를 간소화하는 것입니다. 이는 호스트 시스템의 사용자 ~/.bashrc 파일에 별칭을 지정하여 수행할 수 있습니다.
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ " PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash -login'
이 alias는 인용부와 백슬래시 문자 때문에 약간 까다로운 편입니다. 한 줄에 모두 입력해야 합니다.
11.5.2.2. ssh를 통해 원격으로 작업하기
이 방법도 전체 그래픽 환경을 제공하지만 먼저 LFS 시스템(일반적으로 루트)에 openssh-9.6p1를 설치해야 합니다. 또한 두 번째 컴퓨터가 필요합니다. 이 방법은 복잡한 루트 환경이 필요하지 않아 간편하다는 장점이 있습니다. 또한 모든 추가 패키지에 LFS 빌드 커널을 사용하며 패키지를 설치하기 위한 완전한 시스템을 제공합니다.
scp 명령을 사용하여 LFS 시스템에 빌드할 패키지 소스를 업로드할 수 있습니다. 대신 소스를 LFS 시스템에 직접 다운로드하려면 루트에서 libtasn1-4.19.0, p11-kit-0.25.3, make-ca-1.13, wget-1.21.4을 설치하거나 LFS 시스템을 부팅한 후 scp를 사용하여 해당 소스를 업로드합니다.
11.5.2.3. LFS 명령줄에서 작업하기
이 방법을 사용하려면 chroot 상태에서 libtasn1-4.19.0, p11-kit-0.25.3, make-ca-1.13, wget-1.21.4, gpm 및 link(또는 lynx)를 설치한 다음 새 LFS 시스템으로 재부팅해야 합니다. 이 시점에서 기본 시스템에는 6개의 가상 콘솔이 있습니다. 콘솔을 전환하는 방법은 간편하게 Alt+Fx 키 조합을 사용합니다(여기서 Fx는 F1과 F6 사이). Alt+← 및 Alt+→ 조합도 콘솔을 변경합니다.
이 시점에서 두 개의 다른 가상 콘솔에 로그인하여 한 콘솔에서는 링크 또는 lynx 브라우저를 실행하고 다른 콘솔에서는 bash를 실행할 수 있습니다. 그러면 마우스 왼쪽 버튼으로 브라우저에서 명령을 복사하고 콘솔을 전환한 후 다른 콘솔에 붙여넣을 수 있습니다.
참고
참고로 가상 콘솔 전환은 X Window 인스턴스에서도 Ctrl+Alt+Fx 키 조합으로 수행할 수 있지만, 그래픽 인터페이스와 가상 콘솔 간에는 마우스 복사 작업이 작동하지 않습니다. Ctrl+Alt+Fx 조합을 사용하여 X 창 디스플레이로 돌아갈 수 있으며, 여기서 Fx는 일반적으로 F1이지만 F7일 수도 있습니다.