Shell 스 크 립 트 로 자신 만 의 미니 리 눅 스 를 자동화 합 니 다!(2)
6348 단어 linux직장ShellLinux_소프트웨어 / 구조
실현 과정 분석:
1. 파 티 션, 사용자 가 선택 한 디스크 에 따라 포맷, 파 티 션
2. 마 운 트, 사용자 가 설정 한 파 티 션 에 따라 각각 호스트 의 디 렉 터 리 에 마 운 트 합 니 다.마이크로 Liux 를 편집 하 는 데 편리 하 다.
3. 마이크로 리 눅 스에 대해 각종 설정 정 보 를 기록 합 니 다.
4. 미니 리 눅 스에 서 우리 가 필요 로 하 는 Bash 등의 명령 을 넣 습 니 다.
5. 커 널 을 넣 고 불 러 와 야 할 프로필 을 시작 합 니 다.
6. 사용자 의 하 드 디스크 에 안내 프로그램 을 설치 합 니 다.
----------------------------------------------------------------------------------------------------------
알 겠 습 니 다. 아까 는 여러분 의 생각 을 정리 하 는 데 도움 을 준 셈 입 니 다. '지난 회 회고' 라 고 할 수 있 습 니 다. 이어서 계속 하 겠 습 니 다!Shell 스 크 립 트 를 끝까지 진행 하 세 요!
STEP 4: 여러 가지 우리 가 필요 로 하 는 명령 을 이식 하여 들어간다.
스 크 립 트 분석:
이식 명령 을 위해 서 는 숙주 시스템 의 명령 을 복사 해 야 합 니 다.그러나 명령 만 복사 하 는 것 으로 는 부족 합 니 다. 명령 에 대응 하 는 라 이브 러 리 파일 을 복사 해 야 합 니 다.그러면 명령 에 따라 스타일 도 다 르 고 라 이브 러 리 파일 도 다 릅 니 다.어떤 라 이브 러 리 파일 을 복사 하고 어디 에 복사 하 는 지, 중복 되 는 지 알 아야 합 니 다. 마지막 으로 명령 만 복사 하 는 것 이 아니 라 어떤 명령 이 필요 한 지 순환 적 으로 선택 하도록 해 야 합 니 다.다 복사 가 끝 날 때 까지 ~
좋아, 분석 OK, 우리 계획 대로 하 자!
function COPYLIB { # , 。
#copy command
if which $1 &> /dev/null ;then # , 1, 1 ~=。=
AA=`which $1 | tail -1 | awk '{print $1}'`
cp "$AA" $2"$AA" # , ~
else
echo "$1 is not exist"
fi
#copy lib # lib
for LIB in `ldd "$AA" | grep "/lib/" | sed '1,$s@^[[:space:]]/lib@aaa=> /lib@g' | awk -F"=> " '{print $2}' | cut -d" " -f1`;do
LIBPATH=`echo $LIB | sed 's@\(.*\)/[^[:space:]]\{1,\}@\1@g'` # for , lib, ,
[ -d ${2}$LIBPATH ] || mkdir ${2}$LIBPATH # ,
[ ! -e $2/$LIB ] && cp -f $LIB ${2}$LIBPATH && echo "$LIB done" # ~ ~~
done
}
# , , 。 , , bash , init , 。
echo "=========================================================="
echo -e "Please input COMMAND with \033[31mbash\033[0m and \033[31minit\033[0m !!!!!"
read -p "COMMAND you want?(Quit for 'q') :" CMD1 # , , 。
# , 。
until [ $CMD1 == 'q' ]; do # , , ‘q’
COPYLIB $CMD1 /mnt/sysroot # 。
echo -e "Please input COMMAND with \033[31mbash\033[0m and \033[31minit\033[0m !!!!!"
read -p "Which COMMAND you want use ?(Quit for 'q') :" CMD1
done
OK ~ 이렇게 되면 우리 의 작은 Liux 에 도 우리 가 입력 한 명령 이 다양 해 집 니 다 ~ 이제 커 널 을 추가 해 야 합 니 다!우리 의 Liux 를 실행 시 킵 니 다!!!!
--------------------------------------------------------------------------------------------
STEP 5: 커 널 만 들 기!우리 리 눅 스 가 심장 을 가 질 수 있 도록!
수 동 으로 자신 만 의 Liux 를 만 들 때, 우 리 는 우리 의 커 널 이 Redhat 의 커 널 파일 을 직접 사용 한 다 는 것 을 이미 알 고 있 었 다.그리고 initrd 를 수정 하면 메모리 에 작은 Liux 를 가상 하여 루트 디 렉 터 리 시스템 의 파일 을 불 러 올 수 있 습 니 다.그 후에 우 리 는 그것 을 이식 하면 된다.
이제 시작 합 시다 ~!
function YDFQ { # -。-
TMPDIR=`mktemp -d /tmp/little.XX` # , initrd.*.img ~
cd $TMPDIR
zcat /boot/initrd-`uname -r`.img | cpio -id &> /dev/null ## initrd , 。
sed -i 's@^echo Scanning and configuring dmraid supported devices@#&@g' init
sed -i 's@^echo Scanning logical volumes@#&@g' init
sed -i 's@^lvm vgscan --ignorelockingfailure@#&@g' init
sed -i 's@^echo Activating logical volumes@#&@g' init
sed -i 's@^lvm vgchange -ay --ignorelockingfailure vol0@#&@g' init
sed -i 's@^resume LABEL=SWAP-sda3@#&@g' init # init ~
sed -i "s@\(mkrootdev.*\) /.*@\1 sda2@" init # init , 。
find . | cpio -H newc -o --quiet | gzip -9 > /mnt/boot/initrd.gz # initrd.gz ~
cp /boot/vmlinuz-`uname -r` /mnt/boot/vmlinuz # !
}
YDFQ /mnt/sysroot # -。- ,
ok ~ 우리 작은 Liux 의 심장 도 생 겼 습 니 다 ~ 이제 마지막 입 니 다!!!하 드 디스크 에 자신 이 어떻게 운행 해 야 하 는 지 알려 주세요!!!
---------------------------------------------------------------------------------------------------------
STEP 6: 안내 파일!
그렇다면 가이드 가 필요 하 다 면 우리 의 위대 한 그루 브 를 언급 해 야 합 니 다. 바로 하 드 디스크 에 MBR 을 설치 할 수 있 습 니 다 ~ boot loader 를 가지 게 합 니 다 ~ 이렇게 되면 하 드 디스크 는 켜 고 시작 하면 자신 이 무엇 을 해 야 하 는 지 알 게 됩 니 다 ~!물론 우리 시스템 은 우리 가 결정 하기 때문에 그 안에 당신 의 물건 을 더 해 야 합 니 다!!
시작 합 시다!
##
## $1= bootloader
## $2= ,
## $3=
## $4=initrd ~
##
function GRUB { ## , -。-
if [ `basename $2` == boot ];then ## , , -。-
grub-install --root-directory=/mnt $1 &> /dev/null # grub, , bootloader !
cat >>$2/grub/grub.conf<< EOF # ~~
default=0
timeout=10
title Little Linux
root (hd0,0)
kernel /${3} ro root=/dev/sda2 quiet
initrd /${4}
EOF
else
echo "It's not boot !Exit & Please set it again !"
fi
}
GRUB $DSK /mnt/boot vmlinuz initrd.gz # , -。-
echo "Congratulation ! Your Mini Linux is install OK !" # ! !
OK~~!!!! 다 됐어 ~
이제 저희 가 테스트 를 해 보도 록 하 겠 습 니 다.
이렇게 쓰 면 우 리 는 기본적으로 원 키 로 Liux 를 설치 하고 당신 이 직접 만 든 것 이 라 고 할 수 있 습 니 다!!!!
~
음 ~
알 아 봤 어?그 럴 까요 -그럼 직접 만들어 보 세 요 ~ ~
물론 그 렇 죠. 뭔 가 다른 점 이 있 거나 여러 가지 의견 이 있다 면 저 와 소통 해 주세요 ~
함께 토론 해야만 함께 발전 할 수 있 잖 아!!!
weiyan
2011.8.4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.