Xpenology DSM7 만능 부트로더 만들기(Tinycore) Native
해당 가이드는 오래되어 아래글들중 하나를 참고해서 진행하시기바랍니다.
https://svrforum.com/nas/391013
https://svrforum.com/nas/459370
https://svrforum.com/nas/250098
안녕하세요. 달소입니다.
Xpenology DSM7 만능 부트로더 만들기(Tinycore)
기존 tinycore로 부트로더 만드는 글을 쓴지 어언 2달이 지났는데요. 해당글이 ESXi 기준으로 진행했던거라 개발서버에 Proxmox 재설치 전에 Native로 한번 설치하면서 과정을 찍어서 업데이트해봅니다.(ESXi라면 위글을 참고해서 진행해주세요.
아무쪼록 도움이 되시면 좋겠습니다.
최근에 redpill loader의 업데이트가 없어도 꾸준하게 헤놀포럼의 경우 눈팅을하고있었는데요.
인기있는 pocopico님의 tinycore를 소개해드리고자 합니다.
tinycore 는 초경량 리눅스로 구동되는 OS인데 이 OS에 부트로더를 생성할때 필요한 모든것을 넣어두고 이미지화 시킨게 pocopico/tinycore 입니다.
가장좋은기능은 아마 Native 유저들이 사용하시는 SataPortMap / SasIdxMap등을 자동으로 인식해서 로더에 포함시켜주는 기능이 아닐까 싶습니다.
간단하게 말씀드리자면 기존 Redpill 부트로더를 만들기위해서는 Linux 환경을 설치하고 docker를 설치하고 jq 등 패키지를 추가로 설치하고 툴체인을 받아서 이미지를 만들고 받고 vmdk 및 usb에 썼다면 pocopico의 tinycore의 경우 동작이 신기합니다.
동작을 제대로 이해하지않을경우 기존 redpill 보다 어렵게 느껴지실수도 있을거라고 생각은 하지만.. 이해하신다면 크게 어렵지는 않을 수 있습니다.
tinycore linux의 역할
-tinycore에서 부트로더 빌드시 tinycore의 파티션 자체를 별도로 빼고 tinycore 내에 부트로더를 생성합니다.(ex. 최초 grub 에 tinycore1개만 있던게 bootloader가 신규로 추가)
-tinycore는 5가지 모델을지원합니다.(DS918+/DS3615xs/DS3617xs/DS3622xs/DS1621+/)
-tinycore는 부트로더에 필요한 기본셋팅이 되어있는 상태이고 여기서 부트로더의 pid/vid/sn/mac/sataportmap 등을 변경합니다.
-tinycore에서는 추가하고싶은 확장드라이브를 기존처럼 추가할 수 있습니다.
-tinycore에서는 각 모델별 sn/mac을 몇 가지 제공해줍니다.(vmdk일경우 유용/Native일경우 상관x)
-위 과정을 통해 이미지를 다시만들지않고도 지속적으로 부트로더를 자체 변경가능합니다.(모델/sn/mac등)
-tinycore는 img와 vmdk 두가지를 모두 지원합니다.
img의 경우 usb에 windiskimager 프로그램을 통해 이미지를 USB에 쓰고 기존부트로더처럼 접속해주시면 됩니다.
vmdk의 경우 바로 virtualbox,esxi나 vmworkstation에 붙여서 로드해주시면됩니다.
이 글은 가이드를 위해 esxi+vmdk를 기본으로 가이드를 진행하겠습니다.
준비물 및 설치환경
tinycore 한방팩 - 자료실 링크
- Native용 img 파일
- 가상화용 vmdk 파일
- USB이미지 쓰기용 win32diskimager
- ssh 접근용 putty
- 파일전송용 winscp
- ip찾기용 IPScanner
설치환경
CPU : i9-9900t es
M/B : Asrock H370M-HDV (Sata4 보드)
Loader : Tinycore v0.46-uefi
Sata 0 번에 hdd하나 물리고 진행했습니다.
USB에 이미지 씌우기(Write)
이 과정은 부팅 USB를 만드는 과정입니다.
한방팩에 있는 Win32 Disk Imager를 설치하신뒤에 포함된 img 파일을 usb에 씌워주세요.
uefi를 지원하지않는 구형보드라면 uefi가 안붙은 img파일로진행해주시면되고 4세대 이상 보드라면 uefi가 붙은파일로진행해주시면됩니다.
이제 만들어진 USB를 가지고 헤놀로지를 설치할 PC에 꽂고 USB를 우선부팅하여 부팅시켜주세요.
첫 GRUB 창에는 Tiny core Image Build만 보입니다
부팅이 되면 바탕화면에 우클릭 -> 터미널 혹은 아래 터미널창을 누르신뒤에 ifconfig 명령어로 ip를 확인해주세요.
이렇게 ip를 확인했으면 putty 클라이언트 툴을 사용해서 tinycore로 접속해줍니다.
putty는 ssh 접근 툴 입니다.
계정명 : tc // 비밀번호 : P@ssw0rd
접속 후 sudo su 명령어로 root 권한으로 진행하겠습니다
sudo 명령어가 이슈가있다고하니 기본 tc 유저로 진행해주시면 되겠습니다.
부트로더 설정값 변경하기
이제로더 업데이트 명령어를 통해 최신버전으로 진행하겠습니다.
./rploader.sh update now
저는 DS918+를 기준으로 진행할 예정이며 차근차근 하나씩 해주시면됩니다.
./rploader.sh serialgen DS918+
y를 눌러서 적용해주신다음 mac은 실제사용하는것으로 변경해주셔야합니다.(맨마지막)
이제 USB의 VID/PID를 인식시켜서 자동으로 user_config.json이 넣어주겠습니다.
./rploader.sh identifyusb now
이제 SataPortMap 설정입니다.
./rploader.sh satamap now
최종적으로 vi 편집기로 변경된 내용을 최종확인해주고 mac 주소를 업데이트해주겠습니다.
mac 주소는 ipscanner를 통해 확인해주시거나 bios에서 mac주소를 확인해주시면됩니다.
vi user_config.json
편집하려면 i를 눌러서 편집모드로 들어가신뒤에 내용을 수정해주시면됩니다.
부트로더에 확장드라이버 추가하기.
헤놀로지의 경우 사용하고 계신 환경이 모두 다릅니다. Disk 조합부터 Lan 어댑터나 심지어 Realtek에서 어떤 모델인지 Raid카드나 sata 확장카드에 대한 모든 경우의 수가 많습니다.
이때문에 헤놀리지의 사용이 어려운 경우도 있구요.
Tinycore에서는 기본적으로 부팅된 하드웨어에 따라서 자동으로 드라이버를 인식해서 추가해줍니다.
혹 build시 자동으로 드라이버 추가가 안될경우 수동으로 확장드라이버를 추가하는 방법을 제공해주고있습니다.
혹 다른시스템에 사용할 부트로더를 만들고 있으시다면 아래 확장드라이버 목록을 참고해서 설치하시면됩니다.
https://github.com/pocopico/rp-ext
지원해주는 플랫폼은 아래와 같습니다. DS918은 apollolake DS3615xs는 bromolow 입니다. DS3622XS는 broadwellnk 이며 계속 추가되고있네요.
확장드라이버 추가는 아래 명령어로 진행하시면 됩니다.
ex)
./rploader.sh ext apollolake-7.0.1-42218 add https://raw.githubusercontent.com/pocopico/rp-ext/master/vmw_pvscsi/rpext-index.json
./rploader.sh ext apollolake-7.0.1-42218 add https://raw.githubusercontent.com/pocopico/rp-ext/master/vmxnet3/rpext-index.json
빌드 과정은 redpill 로더와 거의 똑같습니다.
./rploader.sh build apollolake-7.0.1-42218
빌드가 종료되면 /home/tc/redpill-load/cache/ 경로에 해당 pat설치파일이 남는데. 공홈에서 받은 설치파일도 잘되서.. 굳이 안받으셔도 되고 혹 공홈에서 받으신게 안되신다면 winscp와같은 툴로 받아주시면됩니다.
filetool.sh -b &&/usr/bin/exitcheck.sh 를 통해 tinycore의 내용을 저장해주고 tinycore를 종료해주겠습니다.
그리고 재부팅을 진행해주세요.
DSM7설치하기
재부팅을 할떄 화면을 보시면 이전 6버전처럼 부트로더를 선택하는 창이 나옵니다.
Native 이기때문에 USB를 눌러서 부팅을해주시면됩니다.
위창이뜨고 기존 tinycore로 접속했던 ip로 접속하면 설치를 진행할 수 있습니다.
기존 디스크는 초기화됩니다
10분 지나면 설치를 진행할 수있습니다.
SMART도 잘나오고~
CPU 정보도 일부러 돌려봤는데 es시피유도 잘뜨네요
maxlanport를 3으로 변경했더니 이전에 구매했는 듀얼포트랜도 잘 적용되네요
기타 가이드는 포럼의 다른게시글들을 참고부탁드립니다
도움이되시면 좋겠네요 감사합니다~
https://svrforum.com/nas/221981
자문자답 합니다. bios에서 부팅 우선순위가 usb의 ueif가 아닌 다른 걸로 되어있었습니다. ueif로 변경하니 제대로 작동했습니다!
잘 되셨다니 다행입니다 ㅎㅎ
혹시.. DSM 6.2.3에서 DSM7로 마이그레이션도 될까요?
네 검색해보시면 진행결과도있고 다른분들도 많이성공하셨습니다
백업후에 진행하시면될듯하네요
설치는 잘됐는데요.. 중간중간 에러 상황이 많이 발생하네요 다른분들도 이런가요?
시놀로지 포토 사용하기 위해, 다수 파일 이동 시키는데도 그렇고 중간중간 자꾸 안되는 상황이 나오는거같아요
음.. 저는 아직 눈에띄는 에러는 없었던거같습니다
안녕하세요 ! 덕분에 tinycore의 내용을 저장해주고 tinycore 종료까지는 원활히 진행되었지만,
재부팅 후에 에러가 뜹니다 ㅜㅜ
error: symbol 'grub_disk_native_sectors' not found.
Entering rescue mode...
grub rescue>
라고 뜨는데 어디를 고쳐야 할까요 ㅜㅜ
efi/uefi 에 맞춘 이미지는 맞으실까요?? 부팅 드라이브를 제대로 못잡는듯한데요 ㅠ
달소님께서 말씀하신대로만 쭉 따라 왔습니다.. ㅜㅜ 이미지도 tinycore-redpill-uefi 로 했구요
혹시 글 내용 중 ' winscp와같은 툴로 받아주시면됩니다.' 이 문장 다음에 있는 사진에서 마운팅 관련 명령어가 안보이는데... 혹시 이걸 안해서 그런걸까요 ㅜㅜ
그건 따로 안하셔도 될텐데요.. 흠.. 이미지 빌드가 제대로안된건지.. 애매하네요..
덕분에 드디어 부팅까지 성공을 했습니다 ^^ 그런데 랜카드를 제대로 못잡는지 어시스턴트나 설정된 IP로 들어가도 인식을 못합니다. 확장드라이버를 받아야 할 것 같아서 명령어를 입력했는데 아래처럼 뜹니다.
1.명령어
root@box:/home/tc# ./rploader.sh ext bromolow-6.2.4-25556 add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8169/rpext-index.json
2.출력
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
Loader source : https://github.com/RedPill-TTG/redpill-load.git Loader Branch : master
Redpill module source : https://github.com/RedPill-TTG/redpill-lkm.git : Redpill module branch : master
Extensions :
Extensions URL :
TOOLKIT_URL : https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/ds.bromolow-6.2.dev.txz/download
TOOLKIT_SHA : 7a0f0ec5919cd67b9972a21f234603c0e608d647baff067029bd46d8a5d660de
SYNOKERNEL_URL : https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/25426branch/bromolow-source/linux-3.10.x.txz/download
SYNOKERNEL_SHA : 18aecead760526d652a731121d5b8eae5d6e45087efede0da057413af0b489ed
COMPILE_METHOD : kernel
TARGET_PLATFORM : bromolow
TARGET_VERSION : 6.2.4
TARGET_REVISION : 25556
REDPILL_LKM_MAKE_TARGET : dev-v6
KERNEL_MAJOR : 3
MODULE_ALIAS_FILE= modules.alias.3.json
Checking Internet Access -> OK
Cloning into 'redpill-lkm'...
fatal: unable to access 'https://github.com/RedPill-TTG/redpill-lkm.git/': SSL certificate problem: certificate is not yet valid
Cloning into 'redpill-load'...
fatal: unable to access 'https://github.com/RedPill-TTG/redpill-load.git/': SSL certificate problem: certificate is not yet valid
./rploader.sh: line 1130: /home/tc/redpill-load/ext-manager.sh: No such file or directory
root@box:/home/tc#
이처럼 에러를 뿜는데 뭐가 잘못된 걸까요...
흠.. 처음보는에러인데요..혹시 7버전대로 하셔도 동일학 ㅔ에러가나오실까요??
네 한번 다시 해보겠습니다! 감사합니다 ^^
ㅠㅠ 해결이 되야할텐데요..
저도 말씀하신 grub rescue 증상이 있는데 어떻게 해결하셨는지 알려주실수 있을까요?
자문자답 합니다. bios에서 부팅 우선순위가 usb의 ueif가 아닌 다른 걸로 되어있었습니다. ueif로 변경하니 제대로 작동했습니다!
시도 한번//./
달소님..!
이게..부트장이 찾는 _에서 깜빡이면서 계속 안넘어가네요..ㅠㅠ
왜그럴까요..ㅠㅠ
UEFI 맞고.. USB부트순위 1도 맞는데요..ㅠㅠ
원래 부트로더에서는 더 안뜨는게 정상입니다.
다른 PC를 이용해서 ipscanner나 공유기에서 dhcp 할당된 ip를 확인하셔야합니다
부트로더 화면 자체가 안뜨고 부팅장치만 주구장창 찾네요...ㅠㅠ
cmt alert