본문 바로가기

IT 리뷰/안드로이드

구형 갤럭시탭 10.1(루트) 리눅스 설치 SD카드 데비안 부팅 + 커스텀 리커버리 만들기

반응형

구형 갤럭시탭 10.1(노트 10.1 계열) 리눅스 설치: SD카드로 데비안 부팅까지(루트 필수)

집에 굴러다니는 구형 갤럭시탭 10.1이 안드로이드 4.x에 멈춰 있다면, SD카드에 리눅스(Debian armhf)를 올려서 “진짜 OS”처럼 쓰는 방법이 있습니다.

다만 이건 장난 수준이 아니라, 커널 빌드 + 리커버리 파티션 덮어쓰기(dd)까지 들어가서 실수하면 부팅이 안 될 수 있어요. 준비만 깔끔하게 해두면 의외로 쓸만합니다.

주의
이 글은 루트가 이미 된 기기 기준입니다. 또한 복구(원복)를 위해 리커버리 백업을 반드시 만들어두는 걸 전제로 작성했습니다. 배터리는 70% 이상, 케이블은 상태 좋은 걸로, 중간에 강제 재부팅은 피하세요.

 

대상 기기 확인

원문 기준으로는 GT-N8000 / GT-N8010 / GT-N8013 계열을 기준으로 합니다.

이 모델명은 “갤럭시탭 10.1”로 불리기도 하지만, 부팅 화면에서 Samsung Galaxy Note 10.1로 표시되는 제품군이 많습니다. 모델명이 다르면 그대로 따라하면 위험합니다.

  • 설정 → 디바이스 정보에서 모델명 확인
  • 가능하면 CPU/칩셋도 함께 확인(동일 모델이어도 지역/통신사 변형이 있는 경우가 있습니다)

준비물

  • 루트된 갤럭시탭(위 모델군)
  • microSD 카드 (가급적 좋은 것, 여기로 리눅스를 올립니다)
  • 리눅스 PC 1대 (SD카드 작업/디부트스트랩/ADB)
  • (권장) VirtualBox + Ubuntu 14.04.x ISO (커널 빌드용)
  • 시간과 여유…(처음 한 번은 꽤 잡아먹습니다)

다운로드 링크

설치 전에 태블릿에서 켜둘 설정

개발자 옵션

  • 설정 → 디바이스 정보 → 빌드 번호를 여러 번 탭해서 개발자 옵션 활성화
  • 설정 → 개발자 옵션에서 USB 디버깅 켜기

화면/절전

  • 작업 중 화면이 꺼지면 멈춘 것처럼 보일 수 있어 화면 자동 꺼짐 시간을 길게 잡아두는 게 편합니다

루트 권한 확인

  • ADB로 들어가서 su가 정상 동작하는지 미리 확인합니다

1) 커널 빌드(구형 GCC가 필요한 이유)

이 기기 커널이 매우 오래돼서 최신 GCC로 빌드하면 삐걱거릴 수 있습니다.

그래서 Ubuntu 14.04(32bit) VM 같은 “옛날 환경”을 하나 만들어두면 편합니다.

VirtualBox에 Ubuntu 14.04 VM 만들기

  • 가능하면 CPU 코어/메모리는 넉넉히
  • VM 설정에서 PAE/NX 활성화
  • 디스크 용량도 여유 있게(커널 컴파일/툴체인 포함)
  • 공유 폴더를 하나 잡아두고 자동 마운트 켜기(결과물 빼낼 때 편합니다)
  • Guest Additions 설치(공유 폴더 동작 확인)
  • 공유 폴더 권한이 안 보이면 아래처럼 그룹 추가 후 재부팅
sudo usermod -aG vboxsf USERNAME

의존 패키지 설치

sudo apt-get update
sudo apt-get install -y git build-essential libncurses5-dev

소스/툴체인 내려받기

mkdir opensgn
cd opensgn

git clone https://github.com/opensgn/N8000.git -b arch-r4p0
mv N8000 kernel

git clone https://github.com/opensgn/N8000.git -b toolchain
mv N8000 toolchain
sudo mv toolchain /var/local/

git clone https://github.com/thermatk/opensgn-easy.git -b commonfiles
mv opensgn-easy firmware

커널 설정/빌드

cd kernel
make mrproper

export CROSS_COMPILE=/var/local/toolchain/bin/arm-linux-gnueabihf-
export ARCH=arm
export SUBARCH=armv7h

make n8000_linux_mali_defconfig
make menuconfig

메뉴에서 Boot options 쪽 커맨드라인을 아래처럼 바꿉니다.

root=/dev/mmcblk1p1 rw rootfstype=ext4 rootwait vmalloc=144M

저장 후 빌드합니다. (아래의 -j2는 코어 수에 맞춰 조절)

export INSTALL_MOD_PATH=$(pwd)/compiledmodules

make -j2
make modules_install

rm compiledmodules/lib/modules/3.0.31+/source
rm compiledmodules/lib/modules/3.0.31+/build

결과물 모으기

cd ..
mkdir -p results/{boot,opt}

cp kernel/arch/arm/boot/zImage results/boot/
cp kernel/System.map results/boot/
cp kernel/.config results/boot/config-$(ls kernel/compiledmodules/lib/modules/)
cp -r kernel/compiledmodules/lib/ results/
cp -r firmware/firmware/* results/opt

여기까지 완료되면 VM 공유 폴더로 results 폴더를 복사해두고, VM은 꺼도 됩니다.

2) SD카드에 루트 파일시스템 만들기(Debian armhf)

SD카드 파티션

  • SD카드를 PC에 꽂고 ext4 단일 파티션으로 준비합니다
  • 예시는 /dev/sdX1로 표기합니다(본인 환경에 맞게 확인)
sudo mount /dev/sdX1 /mnt

필요 패키지 설치

sudo apt update
sudo apt install -y debootstrap qemu-system-arm qemu-user-static

Debootstrap 실행

원문은 Debian Jessie(armhf)를 예로 들지만, 2026년 기준으로는 “최신 배포판”이 구형 커널에서 잘 안 돌아갈 수 있습니다. 성공률을 우선하면 구형 Debian 루트파일시스템을 쓰는 쪽이 편합니다.

sudo debootstrap --foreign --arch=armhf jessie /mnt http://ftp.debian.org/debian/

이후 ARM 2차 설치를 위해 qemu를 넣고 chroot로 들어갑니다.

sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin

sudo mount -t proc /proc /mnt/proc
sudo mount -t devpts /dev/pts /mnt/dev/pts
sudo mount -t sysfs /sys /mnt/sys

sudo chroot /mnt /bin/bash

chroot 안에서 2차 설치를 마칩니다.

/debootstrap/debootstrap --second-stage

APT 저장소(구형 배포판이면 꼭 확인)

구형 Debian은 미러가 바뀌면서 업데이트가 막히는 경우가 있습니다.

이 경우엔 Debian 아카이브를 써야 합니다. 아래는 “되는 쪽”으로만 남겨두면 됩니다.

echo "deb http://ftp.debian.org/debian/ jessie main contrib non-free" > /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian/ jessie-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ jessie/updates main contrib non-free" >> /etc/apt/sources.list

apt-get update
apt-get dist-upgrade -y

이어서 initramfs와 abootimg를 설치합니다.

apt-get install -y abootimg initramfs-tools

chroot를 빠져나옵니다.

exit

커널 결과물 SD카드에 복사

sudo cp -r results/boot /mnt/
sudo cp -r results/lib/modules /mnt/lib/
sudo cp -r results/opt /mnt/

initramfs + recovery.img 생성

sudo chroot /mnt /bin/bash

cd /boot
mkinitramfs -o initrd.img $(ls /lib/modules/)
abootimg --create recovery.img -k zImage -r initrd.img -c "cmdline = root=/dev/mmcblk1p1"

exit

이제 SD카드 쪽 /boot/recovery.img가 만들어졌습니다.

3) (선택) 처음부터 데스크톱까지 같이 올려두기

키보드가 없으면 첫 부팅이 답답할 수 있어 GUI를 미리 올려두면 편합니다. 가벼운 조합으로 XFCE + lightdm + 네트워크매니저를 많이 씁니다.

sudo chroot /mnt /bin/bash

apt-get install -y locales
dpkg-reconfigure locales

apt-get install -y xorg xinput xvkbd xfce4 network-manager network-manager-gnome pulseaudio lightdm lightdm-gtk-greeter sudo

와이파이 모듈 옵션(원문 그대로)도 추가합니다.

echo "options dhd op_mode=0 nvram_path=/opt/wifi/nvram_net.txt_murata firmware_path=/opt/wifi/bcmdhd_sta.bin" >> /etc/modprobe.d/dhd.conf
echo "dhd" >> /etc/modules-load.d/dhd.conf

유저도 하나 만듭니다.

useradd -m -s /bin/bash -G sudo USERNAME
passwd USERNAME

로그인 화면에서 온스크린 키보드를 쓰려면 LightDM 설정을 만집니다.

nano /etc/lightdm/lightdm-gtk-greeter.conf
  • #keyboard= 라인이 있으면 #를 지우고 keyboard=xvkbd로 변경
  • show-indicators=~language;~session;~powershow-indicators=~language;~a11y;~session;~power로 변경
exit

 

4) 태블릿에 리커버리 올리고 SD카드로 리눅스 부팅

PC에 ADB 설치

리눅스 PC에서 ADB가 필요합니다.

sudo apt install -y adb

recovery.img를 태블릿 내부 저장소로 복사

  • 태블릿을 USB로 연결
  • MTP로 내부 저장소가 보이면 recovery.img를 내부 저장소 루트(또는 찾기 쉬운 폴더)로 복사

ADB 연결 확인

adb devices

리커버리 파티션 확인(강력 추천)

원문은 /dev/block/mmcblk0p6를 리커버리로 가정합니다. 기기마다 다를 수 있으니, 루트 쉘에서 by-name을 먼저 확인하는 게 안전합니다.

adb shell
su

ls -l /dev/block/platform/*/by-name

여기서 recovery가 어디를 가리키는지 확인한 뒤, 아래 dd 대상에 반영합니다.

리커버리 백업 + 덮어쓰기

아래는 원문 그대로의 예시입니다. 본인 기기에서 확인한 리커버리 블록으로 바꿔서 사용하세요.

cd /storage

dd if=/dev/block/mmcblk0p6 of=recovery.old
dd if=recovery.img of=/dev/block/mmcblk0p6

exit
exit

SD카드 장착

  • PC에서 SD카드를 분리해서 태블릿에 삽입

특수 리커버리로 부팅

  • 전원 + 볼륨 업(전원 버튼에서 더 먼 쪽 볼륨키) 누른 상태로 재부팅
  • 스플래시 화면이 뜨면 버튼에서 손을 뗍니다
  • 정상이라면 SD카드의 데비안 루트파일시스템으로 부팅이 시작됩니다

첫 부팅은 오래 걸릴 수 있습니다
멈춘 것처럼 보여도 실제로는 디스크 작업/초기 설정 중인 경우가 많습니다. 괜히 껐다 켜면 파일시스템이 꼬일 수 있어요.

 

원복(리커버리 되돌리기)

혹시 문제가 생기면, 백업해둔 recovery.old로 원래 리커버리를 되돌릴 수 있습니다. (마찬가지로 리커버리 블록은 기기에서 확인한 값 기준)

adb shell
su
cd /storage

dd if=recovery.old of=/dev/block/mmcblk0p6

exit
exit

FAQ

Q. “Tab 10.1 2014”라고 들었는데 모델명이 N8000 계열이면 맞나요?

A. N8000/N8010/N8013은 부팅 화면에 Note 10.1로 뜨는 경우가 많습니다. 이 작업은 모델/파티션 구조가 맞아야 해서, “비슷해 보여서” 진행하면 위험합니다.

Q. 왜 굳이 Ubuntu 14.04 VM을 쓰나요?

A. 커널 소스가 오래돼서 최신 GCC에서 에러가 나거나 경고가 폭발할 수 있습니다. 옛날 환경이 오히려 덜 삐걱거립니다.

Q. SD카드는 꼭 ext4인가요?

A. 원문 커맨드라인이 ext4를 전제로 잡혀 있습니다. 다른 파일시스템으로 바꾸려면 커맨드라인/설정도 같이 맞춰야 합니다.

Q. dd가 무서운데, 확인 방법이 있나요?

A. /dev/block/platform/*/by-name에서 recovery가 가리키는 블록을 먼저 확인하고, 그 값으로 dd를 실행하는 게 가장 안전합니다.

Q. 최신 데비안/우분투로 올리면 더 좋은가요?

A. 이 기기 커널이 너무 오래돼서 “최신 유저랜드”가 오히려 트러블을 만드는 경우가 있습니다. 잘 올라가는 조합부터 잡고, 그 다음에 욕심내는 게 속이 편합니다.



728x90
반응형
그리드형