qemu-system-alpha로 alpha executable 실행해보기 with debian 5.0

qemu-system-alpha는 그냥 apt로 설치, VM내부의 OS에서도 잘 설치되고 실행되는 듯합니다. : Windows -> VirtualBox Ubuntu22.04 -> qemu-system-alpha

apt intall qemu-system-alpha

대략 2008년 전후로 대부분의 OS가 지원을 끊었고, 기사로는 2007년 HP에서 AlphaServer판매 중단이 기점인것 같네요. 2014년도까지 몇몇 오픈소스 Emulator 시도 기록은 남아 있고, AlphaVM이라고 일부 상업목적으로 전환해서 Emulator를 판매하는 사이트도 있는 듯 합니다. Linux계통으로는 Debian 5.0 ‘lenny’가 마지막 공식 지원 버전이므로 이것으로 qemu system 상에서 설치를 시도해 봅니다. 옛날 버전이어도, 그때 그래픽이나 저장 미디어나 네트웍 장비나 요새랑 별반 차이는 없으므로 잘 될 듯 하네요. FreeBSD/OpenBSD도 왠지 잘 될 것 같지만, SimpleScalar에서 어느정도까지 syscall을 가져다 emulation하는지도 불문명하고, BSD쪽이 POSIX쪽 표준은 더 잘 지키겠지만. target port에 linux라고 되어 있어서 왠지 더 귀찮은 일들이 발생할 것 같으므로, 다음 기회로 미룹니다.

Debian 5.0 설치미디어는 아래에서 받고.

https://cdimage.debian.org/cdimage/archive/5.0.10/alpha/iso-dvd/

qemu상에 OS설치는 아래를 참고합니다.

http://systems.firstworks.com/2014/02/debian-5010-alpha.html

위 사이트 대로 절차를 밟아 나갑니다.

$ qemu-img create -f qcow2 debian-alpha.img 16G

  1. iso에서 vmlinux, initrd.gz 꺼내기 (https://www.youtube.com/watch?v=YjObHvNo0_w) 이동영상에서 보여주는 tinucorelinux unpacking 절차따라하기
  2. $ sudo mkdir /mnt/tmp
  3. $ sudo mount debian-5010-alpha-DVD-1.iso /mnt/tmp -o loop,ro
  4. $ cp /mnt/tmp/boot/initrd.gz .
    $ cp /mnt/tmp/boot/vmlinuz .
    $ cp /mnt/tmp/boot/bootlx . (혹시몰라서)
  5. $ sudo umount /mnt/tmp
  6. $ file vmlinuz 압축된 것 확인하고
    vmlinuz: gzip compressed data, last modified: Sun Mar 4 21:08:09 2012, max compression, from Unix, original size modulo 2^32 6799304
  7. $od -t x1 -A d vmlinuz | grep “1f 8b 08 00” 혹시 앞쪽헤더 뭐 더 붙었는지 확인하고.. 근데 옛날 버전이라서 아무것도 안 붙음.
    0000000 1f 8b 08 00 b9 d9 53 4f 02 03 ec 5b 7d 74 54 45
  8. $ dd if=vmlinuz bs=1 | zcat > vmlinux
    1587497+0 레코드 들어옴
    1587497+0 레코드 나감
    1587497 bytes (1.6 MB, 1.5 MiB) copied, 0.703588 s, 2.3 MB/s
  9. $ file vmlinux
    vmlinux: ELF 64-bit LSB executable, Alpha (unofficial), version 1 (SYSV), statically linked, BuildID[sha1]=75e6a1b30bcf50e179326ffee63202ecf8c3a71e, stripped

나름 최신스타일로 시도를 해 봅니다. disk옵션은 그냥 최신 스타일로 넣고, net옵션은 일단 안되서 빼고 하면,

qemu-system-alpha -kernel vmlinux -append ‘console=ttyS0’ -initrd initrd.gz -hda debian_alpha.img -cdrom debian-5010-alpha-DVD-1.iso -nographic

설치 화면은 뜹니다만, 위 블로그 주인처럼 같은 문제를 마주칩니다.

블로그 글과 마찬가지로 설치 cd-rom 못찾는 문제가… 쩝..

설치 미디어쪽 옵션을 참조 블로그처럼 변경하고 다시.
-drive file=debian-5010-alpha-DVD-1.iso,if=ide,media=cdrom

하면 설치미디어 잘 찾고, 뒤로 죽죽 진행됩니다. –;;;

초기 네트웍을 안 잡아주어서 네트웍 설정, 업데이트 등등 skip하고 진행했지만. 어쨌든 설치 완료까지 봅니다.

network 옵션도 network type 설정(-net bridge) 빼고 했으면 되었을지도 모르겠지만, 급한건 그게 아니므로 다음기회로 미룹니다.

다음은 Cdrom은 빼고 실행하는데. Installer가 계속 뜹니다. 엥 –;;?

블로그에 나와 있는 내용이므로 계속 따라서 진행합니다. 설치완료된 boot /dev/hda2 에서 initrd.img하고 vmlinux를 추출하기 위해서 따로 임시 img를 호스트에 만들고 마운트 시킬 준비를 합니다.
호스트에서
$ dd if=/dev/zero of=installedboot.img bs=1024 count=10000
-hdb installedboot.img 옵션 추가해서 다시 qemu실행시킨뒤, installer에서 shell로 나오면, /dev/hda2를 임시로 마운트 시킨뒤에 필요한 파일들을 추출할 수 있습니다.

vmlinuz.img빼오기, 용량은 참조 블로그와 동일하네요
$ mount /dev/hda2 /cdrom
$ dd if=/cdrom/vmlinuz-2.6.26-2-alpha-generic of=/dev/hdb
호스트에서 추출해두고,
$dd if=installedroot.img of=vmlinuz-2.6.26-2-alpha-generic bs=1587497 count=1

initrd.img 빼오기
$ dd if=/cdrom/initrd.img-2.6.26-2-alpha-generic of=/dev/hdb
마찬가지로 호스트에서 추출. 용량이 다르긴 하지만. 참조 블로그 것이 좀 더 커서 그냥 블로그 숫자 그대로 집어넣습니다.
$ dd if=installedroot.img of=initrd.img-2.6.26-2-alpha-generic bs=9271534 count=1

이제 빼온 파일들로 다시 qemu실행합니다. vmlinuz를 추출했기 때문에 vmlinux는 초기 Debian설치처럼 dd와 zcat으로 압축 해제후 사용하고, rootfs도 부팅 옵션에 추가해주면, 설치된 이미지로 부팅을 시작합니다.
qemu-system-alpha -kernel vmlinux-2.6.26-2-alpha-generic -append ‘console=ttyS0 root=/dev/hda3 single’ -initrd initrd.img-2.6.26-2-alpha-generic -drive file=debian_alpha.img,if=ide -drive file=debian-update-5.0.10-alpha-DVD-1.iso,if=ide,media=cdrom  -net nic,macaddr=aa:00:00:00:00:16

이후 주룩주룩 실행되고, shell까지 도달성공!
$ uname -a
Linux alphapc 2.6.26-2-alpha-generic #1 Sun Mar 4 21:08:03 UTC 2012 alpha GNU/Linux

끄려면 shutdown은 안 되고(restart로 진입해서 login으로 떨어집니다), poweroff써야 정상적으로 qemu종료가 되네요, 버전이 오래되서 인지 sudo는 안되고 그냥 su로 root가서 작업해야 되네요.

—– Network설정 Trial – 아직 안됨.

실제 네트웍하고 연결하기 위해서 -net bridge 을 넣으면 아래처럼 나와서, 아래 대답처럼, 설정파일 추가’해야’함.
failed to parse default acl file `/etc/qemu/bridge.conf’
qemu-system-alpha: -net bridge: bridge helper failed

이부부은 아래가 가장 근접한듯함. 마지막에는 virt-manager를 이용하라고 되어 있으니 Host에 sudo apt install virt-manager 설치, https://virt-manager.org/ 참고

실행해보면 libvirtd 실행 안되다고 뜨므로. 아래 참고해서 libvirtd 실행해보면, 연결 못한다고 나오는데.
https://www.funkyspacemonkey.com/how-to-use-kvm-qemu-virt-manager-to-set-up-virtual-machines

libvirt그룹 따로 추가해주고, 현재 사용자를 그룹에 포함

$ sudo newgrp libvirt
$ sudo usermod -a -G libvirt $USER

https://forum.manjaro.org/t/no-bridge-conf-default-installation-libvirt-bridge-exist-but-error-to-start-vm/101063
https://wiki.archlinux.org/title/QEMU#Bridged_networking_using_qemu-bridge-helper
https://wiki.qemu.org/Features/HelperNetworking

———– 여기까지 네트웍이 안되서… 그냥… 가상 디스크로 qemu guest host양쪽에서 마운트해서 공유 폴더식으로 파일 주고 받기로 함.

아까 img 만들어 둔 건 용량이 작으니 적당한 크기로 다시 생성
$ qemu-img create -f qcow2 sharedisk.img 1G <- QMEU용 이미지라서 호스트에서는 마운트가 안됨. 아래로 만듭시다.
$ dd if=/dev/zero of=sharedisk.img bs=1024 count=100000 <- 100M짜리 빈 raw 디스크
가상 드라이브(/dev/hdb)를 파티션 잡고(fdisk /dev/hdb, n-p-1-<enter>-<enter>), ext3로 포맷(mk2fs -t ext2 /dev/hdb1 또는 mke2fs -j /dev/hdb1 <- ext3포맷 ) 하고 마운트지점 생성(mkdir /mnt/share) 후에 mount(mount /dev/hdb1 /mnt/share)
ext3로 포맷하면, 몇가지 후처리등으로 연산좀 걸리고, 디스크 sync까지 시간이 걸리는 듯 하니 잠시 쉬는게 좋겠음.

Linux: How Do I Create a New ext3 File System If a Disk Was Added To The Server / Desktop? – nixCraft (cyberciti.biz)

호스트에서도 마운트하려면 내부 파티션 오프셋을 주어야 됨.

$ fdisk -l sharedisk.img
Disk sharedisk.img: 97.66 MiB, 102400000 bytes, 200000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1be72335

Device Boot Start End Sectors Size Id Type
sharedisk.img1 63 192779 192717 94.1M 83 Linux

Mounting an image file in Linux – RtoDto.netlinux – Ubuntu – mount image file with r/w permission – Super User를 참고해서 시작 sector 63이니 offset = 63 * 512 = 32256만큼 뒤부터 마운트

$ sudo mount -o loop,offset=32256 -t ext3 sharedisk.img /dev/mnt

근데 뭘 해보기엔 용량이 작으니, 1G정도는 만듭시다. –;

======
기타 Alpha관련된 정보 찾으면서 나온 사이트들 링크. GenToo 리눅스라면.. 옛날 코드로 그냥 빌드하면 될꺼라 이것도 될성싶긴 하지만…. OS빌드하는게 한세월이니..

https://raymii.org/s/articles/NetBSD_on_QEMU_Alpha.html
http://www.alphalinux.org/wiki/index.php/Main_Page
https://wiki.gentoo.org/wiki/Alpha/FAQ
http://web.archive.org/web/20160509075529/
https://levelup.gitconnected.com/probably-the-simplest-way-to-install-debian-ubuntu-in-qemu-2db6afde27ef

Fedora for alpha running under qemu-system-alpha – YouTube


게시됨

카테고리

작성자

태그: