ROS를 사용하여 개발을 하다보니, ROS의 버전 파편화 덕분(?)에 Ubuntu의 버전을 달리 사용해야 하는 경우가 발생합니다. 현재 ROS2의 최신 LTS 버전은 Humble로 Ubuntu 22.04에서 사용이 가능합니다. ROS1의 경우 최종 LTS 버전이 Noetic으로 Ubuntu 20.04에서 사용이 가능합니다. 따라서 이 두개의 버전을 사용하기 위해선 두 개의 Ubuntu 버전을 사용해야 합니다.
도커를 사용하는 방법이 있으나, 개발 시에 불편한 점이 있기도 하고 사용자에게 교육 시 일반화 하기엔 무리가 좀 따릅니다. 또 외장 USB 혹은 SSD를 이용하는 방법도 있지만, 주렁주렁 매달고 다니기엔 좀 불편하죠.
하나의 디스크에 루트 파티션만 분리하면, 여러가지 버전의 Ubuntu를 사용할 수 있습니다.
먼저 가장 최신 버전의 Ubuntu 배포판을 설치합니다. 물론 윈도우와 멀티부팅하는 경우도 포함합니다.
설치 과정에서 디스크 파티션을 설정하는 부분이 있는데, 이때 나중에 설치할 배포판의 루트 영역도 확보해둡니다. 예를 들자면 다음과 같이 구성합니다.
/dev/sda1 /boot EFI 2000MB
/dev/sda2 / ext4 200000MB
/dev/sda3 None ext4 200000MB
/dev/sda4 swap swap 32768MB
장치번호는 사용자마 다를 수 있으니 감안하시고, 구성된 것을 보면, 루트 파티션(/)만 분리해 둔 것을 볼 수 있습니다. 이제 설치과정을 진행하여 정상적으로 완료하도록 합니다.
다음으로,
추가로 설치할 배포판 설치를 진행합니다. 이때는 기존의 설치방법이 아닌, Try Ubuntu 등 임시로 사용할 수 있는 모드로 부팅을 완료한 후, 터미널을 실행하여 다음과 같이 입력합니다.
$ ubiquity -b
위 명령은 설치 진행 시 부트로더 설치를 하지 않겠다는 의미입니다. 설치과정은 기존과 동일하고, 다만 파티션 설정 부분에서 기존에 확보해두었던 파티션을 루트 파티션으로 선택합니다. (위와 같은 구성의 경우 /dev/sda3)
이제 전 과정에서 설치한 최신 배포판으로 부팅한 후,
$ sudo update-grub2
을 입력하면, 자동으로 grub에서 모든 파티션의 루트 파티션을 인식해서 부팅목록에 추가해 줍니다.
Grub의 기본 설정이 별다른 입력이 없으면, 휙 그냥 지나가게 되어 있어, /etc/default/grub
파일을 열어 다음과 같이 수정해준다.
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
다시,
$ sudo update-grub2
해주고, 재부팅하면 정상적으로 grub 창이 뜨고, 부팅할 곳을 선택할 수 있음.
Leave a Reply