컴퓨터 지식 네트워크 - 컴퓨터 구성 - Linux 파일 시스템을 초기화하는 방법은 무엇입니까?

Linux 파일 시스템을 초기화하는 방법은 무엇입니까?

System V init 시작 프로세스

요약하자면 Linux/Unix 시스템에는 일반적으로 두 가지 초기화 시작 방법이 있습니다.

1) BSD 시스템 초기화

2) System V init

대부분의 Linux 배포판은 System V init와 유사한 init, 즉 Sys V init를 사용합니다. 이는 기존 BSD 시스템 init보다 더 쉽고 효율적입니다.

System V init의 주요 아이디어는 다양한 "런레벨"을 정의하는 것입니다. 구성 파일 /etc/inittab은 시스템 부팅 시 실행 수준과 실행 수준에 들어가거나 전환할 때 수행할 작업을 정의합니다. 각 런레벨은 하위 디렉토리 /etc/rc.d/rcX.d에 해당합니다.

각 rcX.d 디렉토리에는 S 또는 K로 시작하는 일부 파일 링크가 포함되어 있습니다. 이러한 링크가 가리키는 스크립트는 시작 및 중지 매개변수를 받을 수 있습니다. S로 시작하는 링크는 일반적으로 서비스를 시작하기 위해 시작 매개변수를 전달하고, 일반적으로 서비스를 중지하기 위해 K는 중지 매개변수를 전달합니다.

다음은 대략적인 System V init 프로세스입니다:

(1) init 프로세스에 의해 실행되는 첫 번째 스크립트는 /etc/rc.d/rc.sysinit이며, 주로 다음 작업을 수행합니다. 스왑 파티션 시작, 호스트 이름 설정, 파일 시스템 확인 및 마운트, 하드웨어 모듈 로드 및 초기화를 포함한 초기화 작업이 수행됩니다.

(2) 기본 작동 수준 모드. 이 단계의 내용은 주로 /etc/inittab에 반영됩니다. inittab 파일은 init 프로세스에 입력할 실행 레벨과 해당 실행 레벨에 대한 구성 파일을 찾을 위치를 알려줍니다.

(3) 실행 /etc /rc.d/rc.local 스크립트 파일. 이는 또한 init 프로세스 중에 실행되는 마지막 스크립트 파일이므로 사용자는 로그인하기 전에 실행해야 하는 일부 명령을 이 파일에 추가할 수 있습니다.

(4) /bin/login 프로그램 실행

p>

참고:

System V init는 단지 모드일 뿐입니다. 각 시스템 초기화는 다르지만 일반적으로 크게 다르지 않습니다. 예를 들어 busybox가 실행하는 첫 번째 시작 스크립트는 /etc/init.d/rcS이며 변경할 수 없다는 점에서 위에서 언급한 것과 다릅니다.

LFS 파일 시스템 초기화 예시

inittab 파일

다음 내용에서 볼 수 있듯이 첫 번째 실행은 /etc/rc.d/init이다. d /rc 파일에서 이 파일에 전달된 매개변수는 숫자이며, rc는 전달된 숫자에서 rcX.d 디렉터리의 경로를 합성한 다음 그 안의 모든 스크립트 링크를 실행합니다. 물론 이것은 기능의 일부일 뿐입니다.

# 시작 /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d /init.d/rc sysinit #초기화 스크립트를 설정할 수 있습니다

l0:0:wait:/etc/rc.d/init.d/rc 0

l1:S1:wait:/etc/rc.d/init.d/rc 1

l2:2:wait:/etc/rc.d/init.d/rc 2

...

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r 지금

su:S016:once:/sbin/ sulogin

1:2345:respawn:/sbin/agetty tty1 9600

2:2345:respawn:/sbin/agetty tty2 9600

...< / p>

# /etc/inittab 끝

etc 디렉토리 구조

일부일 뿐이며 삭제되었습니다.

.

├── fstab

├── inittab

├── inputrc

p>

├── 프로필

├── rc.d

│ ├── init.d

│ │ ├── checkfs

│ │ ├── cleanfs

...

│ │ ├── 모듈

│ │ ├── mountfs

│ │ ├── mountkernfs

│ │ ├── 네트워크

│ │ ├── rc #부팅할 때 실행합니다.

│ │ ├── 재부팅

...

│ ├── rc0.d

│ │ ├── K80network -> ../init. d/네트워크

│ │ ├── K90sysklogd -> ../init.d/sysklogd

│ │ ├── S60sendsignals -> ../init.d/sendsignals

│ │ ├── S70mountfs -> ../init.d/mountfs

│ │ ├── S80swap -> ../init.d/swap

│ │ ├── S90localnet -> ../init.d/localnet

│ │ └── S99halt -> ../init.d/halt

│ ├ ── rc1.d

│ │ ├── K80network -> ../init.d/network

│ │ └── K90sysklogd -> ../init.d/ sysklogd

│ ├── rc2.d

│ │ ├── K80network -> ../init.d/network

│ │ └── K90sysklogd -> ../init.d/sysklogd

│ ├── rc3.d

│ │ ├── S10sysklogd -> ../init.d/sysklogd

│ │ └── S20network -> ../init.d/network

│ ├── rc4.d

│ │ ├── S10sysklogd -> ../init.d/sysklogd

│ │ └── S20network -> ../init.d/network

│ ├── rc5.d

│ │ ├── S10sysklogd -> ../init.d/sysklogd

│ │ └── S20network -> ../init.d/network

│ ├ ── rc6.d

│ │ ├── K80network -> ../init.d/network

│ │ ├── K90sysklogd -> ../init.d/ sysklogd

│ │ ├── S60sendsignals -> ../init.d/sendsignals

│ │ ├── S70mountfs -> ../init.d/mountfs

│ │ ├── S80swap -> ../init.d/swap

│ │ ├── S90localnet -> ../init.d/localnet

│ │ └── S99reboot -> ../init.d/reboot

│ └── rcsysinit.d

│ ├── S00mountkernfs -> ../init.d /mountkernfs

│ ├── S02consolelog -> ../init.d/consolelog

│ ├── S05modules -> ../init.d/modules

...

├── udev

│ ├── rule.d

│ │ └── 55-lfs.rules

│ └── udev.conf

└── vimrc

네트워크 스크립트

#!/bin/sh

. /etc/sysconfig/rc

.${rc_functions}

./etc/sysconfig/network

"${1}"

start)

# 모든 네트워크 인터페이스를 시작합니다

for file in ${network_devices}/ifconfig.*

do

인터페이스=${file##*/ifconfig.}

# $file이 *인 경우 건너뜁니다(아무 것도 발견되지 않았기 때문에)

if [ "${interface} " = "*" ]

다음

계속

fi

IN_BOOT=1 ${network_devices}/ifup ${interface}

완료

;;

중지)

# 목록 반전

FILES=""

${network_devices}/ifconfig의 파일에 대해.*

수행

FILES="${file} ${FILES}"

완료

# 모든 네트워크 인터페이스를 중지합니다

for file in ${FILES}

do

interface=${file##*/ ifconfig.}

# $file이 *인 경우 건너뛰기(아무 것도 발견되지 않았기 때문에)

if [ "${interface}" = "*" ]

그런 다음

계속

fi

IN_BOOT=1 ${network_devices}/ifdown ${interface}

완료

;;

다시 시작)

${0} 중지

수면 1

${0} 시작

;;

*)

echo "사용법: ${0} {start|stop|restart}"

종료 1

;;

esac

# 끝 /etc/rc.d/init.d/network

上篇: qq 마스터는 오전 1시에 자동으로 업데이트됩니다. 下篇: Oppo 휴대폰 키보드 설정 방법
관련 내용