나는 Aix 7.2가 가장 오래된 ppc CPU(power5!)에서 부팅되지 않는다는 점을 고려하여 AIX 7.1이 설치된 오래된 IBM 9111-285를 가지고 있으며 Aix 7.1은 Linux를 설치하려고 하기 때문에 EOL에 가깝습니다. 사실 나에겐 그런 "해결책"이 있어요
Linux Debian 11: WORKS ONLY ON PPC64LE, this is BE
Adelie Linux: DON'T BOOT
Linux Debian 12 (is a port for ppc64): boot but..kernel panic.
Centos 6 ppc64: is EOL
Centos 7 ppc64: kernel panic
Gentoo ppc64: Boot and hang after 1 minute with no error, probably a panic.
Opensuse Tumbleweed 배포판에는 ppc64 및 ppc64le의 DVD iso 이미지가 있습니다. CD를 부팅했는데 루트 이미지를 마운트할 수 없어서 커널 패닉이 발생했습니다. 아마도 내 워크스테이션에 IDE DVD와 많은 IDE DVD가 있기 때문일 것이라고 생각했습니다. Linux 배포판은 이제 이전 커널을 지원하지 않습니다. IDE는 기본 커널을 사용하므로 네트워크 부팅을 시도했습니다. dhcp/tftp/bootp 서버를 설정하면 qemu-system-ppc64가 부팅할 수 있습니다(openfirmware 프롬프트로 이동하여 boot net을 입력한 후). grub 메뉴를 받고 설치를 시작합니다). 내 IBM 워크스테이션을 사용하여 openfirmware 프롬프트를 입력했고...
0 > boot net
BOOTP: chosen-network-type = ethernet,auto,rj45,auto
BOOTP: server IP = 0.0.0.0
BOOTP: requested filename =
BOOTP: client IP = 0.0.0.0
BOOTP: client HW addr = *********
BOOTP: gateway IP = 0.0.0.0
BOOTP: device /pci@800000020000004/pci@2,4/ethernet@1
BOOTP: loc-code U787F.001.DPM5MVH-P1-T5
BOOTP: wait 60 seconds for Spanning Tree ...
BOOTP: BOOTP request fail: 0
BOOTP: BOOTP request fail: 1
BOOTP: BOOTP request fail: 2
BOOTP ERROR: BOOTP request failed, QUIT
!BA010004 !
모든 매개변수를 지정해 보았더니...
0 > boot net:192.168.0.88,core.elf,192.168.0.10,192.168.0.1
BOOTP: chosen-network-type = ethernet,auto,rj45,auto
BOOTP: server IP = 192.168.0.88
BOOTP: requested filename = core.elf
BOOTP: client IP = 192.168.0.10
BOOTP: client HW addr = ****************
BOOTP: gateway IP = 192.168.0.1
BOOTP: device /pci@800000020000004/pci@2,4/ethernet@1
BOOTP: loc-code U787F.001.DPM5MVH-P1-T5
BOOTP: wait 60 seconds for Spanning Tree ...
icmp 5 : redirect
icmp 3 : port unreachable
ERROR: icmp 3
BOOTP: BOOTP request fail: 0
icmp 3 : port unreachable
ERROR: icmp 3
BOOTP: BOOTP request fail: 1
icmp 3 : port unreachable
ERROR: icmp 3
BOOTP: BOOTP request fail: 2
BOOTP ERROR: BOOTP request failed, QUIT
!BA010004 !
해결책이 있나요?
EDIT1: 이 옵션을 사용하면 Ubuntu 16.04가 제대로 로드됩니다(단, 언어를 과도하게 선택하지 마세요).
boot: install-powerpc64 console=hvc0 console=tty0 console=tty1 console=ttyS0,9600,8,n,1 console=ttyS1,9600,8,n,1
답변1
발견된 해결 방법: 커널 패닉으로 인해 최신 ppc64 배포판(opensuse tumbleweed, Debian sid)을 사용하는 9111-285에서는 네트워크 또는 CD에서 부팅할 수 없습니다. 사용자 정의 커널을 사용하여 ppc64의 Debian sid(13) 포트를 설치하는 데 사용할 수 있는 몇 가지 트릭이 있습니다.
이것이 제가 설치한 방법입니다(몇 가지 요령이 필요합니다: fs를 만드는 방법, chroot를 만드는 방법, qemu를 아는 것...).
[U]물론, 파손이 발생하더라도 저는 책임을 지지 않습니다. 위험은 본인 책임입니다[/U]
a) DVD나 네트워크에서 직접 설치하는 것은 쓸모가 없습니다. 커널 패닉을 직접 입력합니다.
b) 먼저 시스템을 설치했고(qemu-ppc-64 가상 머신에 시스템을 설치한 다음 시스템이 작동하는지 확인하기 위해 시작했습니다..) 제대로 작동했습니다.
c) 이제 문제의 9111-285 IBM 워크스테이션에 대한 사용자 정의 커널을 생성해야 하므로 X86 컴퓨터에서 가상 머신 + USB 빈 디스크를 부팅했습니다.
#!/bin/bash
CDROM=/dev/sr0
DISCO=linux.qcow2
RAM=4096
BOOT=d
qemu-system-ppc64 -m $RAM \
-boot $BOOT \
-drive file=$DISCO,if=none,id=drive-virtio-disk0 \
-device virtio-scsi-pci,id=scsi \
-device scsi-hd,drive=drive-virtio-disk0 -drive file=/dev/sdd,if=virtio \
-netdev tap,id=n1,ifname=tap1,script=no,downscript=no -device virtio-net,netdev=n1 -smp 4 -cdrom $CDROM -accel tcg -nographic
d) 시스템이 부팅된 후 빈 디스크에 사용자 지정 커널이 포함된 새 시스템을 생성하려고 하므로 디스크를 이런 방식으로 분할합니다(시스템에서는 이를 /dev/vda로 인식함).
fdisk -l /dev/vda
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 16383 14336 7M 41 PPC PReP Boot
/dev/vda2 16384 558817279 558800896 266,5G 8e Linux LVM
sfdisk -d /dev/vda
label: dos
label-id: 0xc9c164f5
device: /dev/vda
unit: sectors
sector-size: 512
/dev/vda1 : start= 2048, size= 14336, type=41, bootable
/dev/vda2 : start= 16384, size= 558800896, type=8e
e) vda2 파티션을 원하는 방식으로 포맷할 수 있습니다. 개인적으로 lvm+ext4를 사용합니다. 안전하고 테스트되었으며 별도의 부팅 파티션이 필요하지 않기 때문입니다. /mnt에 lvm 루트를 마운트합니다.
pvcreate /dev/vda2 vgcreate myvg /dev/vda2 lvcreate -n root -L 50G myvg lvcreate -n home -L 50G myvg lvcreate -n swap -L 16G myvg mount /dev/myvg/root /mnt mount /dev/myvg/home /mnt/home
f) debootstrap 프로그램을 사용할 수 있지만..실패합니다.
g) 그래서 나는 이상한 방식으로 ppc64에 대한 모든 항목을 다운로드했습니다(누락된 패키지 무시)(debian-packages 사이트).
adduser
apt
apt-transport-https
apt-utils
base-files
base-passwd
bash
bash-completion
bsdmainutils
bsdutils
ca-certificates
coreutils
cpio
cron
dash
debconf
debconf-i18n
debian-archive-keyring
debian-ports-archive-keyring
debianutils
diffutils
dmidecode
dmsetup
dpkg
e2fslibs
e2fsprogs
findutils
gcc-6-base
gnupg
gnupg-agent
gpgv
grep
gzip
hostname
ifupdown
init
init-system-helpers
iproute2
iptables
iputils-ping
isc-dhcp-client
isc-dhcp-common
kmod
libacl1
libapparmor1
libapt-inst2.0
libapt-pkg
libapt-pkg6.0
libassuan0
libattr1
libaudit-common
libaudit1
libblkid1
libbsd0
libbz2-1.0
libc-bin
libc6
libcap-ng0
libcap2
libcomerr2
libcrypt1
libcryptsetup4
libcurl3-gnutls
libdb5.3
libdebconfclient0
libdevmapper1.02.1
libdns-export162
libelf1
libestr0
libfastjson4
libfdisk1
libffi6
libgcc-s1
libgcc1
libgcrypt20
libgdbm3
libgmp10
libgnutls30
libgpg-error0
libgssapi-krb5-2
libhogweed4
libhogweed6
libidn11
libidn2-0
libip4tc0
libip6tc0
libiptc0
libisc-export160
libk5crypto3
libkeyutils1
libkmod2
libkrb5-3
libkrb5support0
libksba8
libldap-2.4-2
libldap-common
liblocale-gettext-perl
liblogging-stdlog0
liblognorm5
liblz4-1
liblzma5
libmd0
libmnl0
libmount1
libncurses5
libncursesw5
libnetfilter-conntrack3
libnettle6
libnettle8
libnewt0.52
libnfnetlink0
libnghttp2-14
libnpth0
libp11-kit0
libpam-modules
libpam-modules-bin
libpam-runtime
libpam0g
libpcre2-16-0
libpcre2-8-0
libpcre3
libpipeline1
libpopt0
libprocps6
libpsl5
libreadline7
librtmp1
libsasl2-2
libsasl2-modules-db
libseccomp2
libselinux1
libsemanage-common
libsemanage1
libsepol1
libslang2
libsmartcols1
libsqlite3-0
libss2
libssh2-1
libssl1.0.2
libssl1.1
libstdc++6
libsystemd0
libtasn1-6
libtext-charwidth-perl
libtext-iconv-perl
libtext-wrapi18n-perl
libtinfo5
libtinfo6
libudev1
libunistring0
libunistring5
libustr-1.0-1
libuuid1
libxapian30
libxtables12
libxxhash0
libzstd1
login
logrotate
lsb-base
mawk
mount
multiarch-support
nano
ncurses-base
ncurses-bin
netbase
openssl
passwd
perl-base
pinentry-curses
procps
readline-common
rsyslog
sed
sensible-utils
systemd
systemd-sysv
sysvinit-utils
tar
tasksel
tasksel-data
tzdata
udev
util-linux
vim-common
vim-tiny
wget
whiptail
xxd
zlib1g
zstd
"newroot"/mnt에 압축을 풀었습니다.
어떻게 하나요? 이와 같은 스크립트를 사용하십시오
vim script.sh
#!/bin/bash
set -x
ar x $1 && tar -xvf data.tar.?z && rm *z
다운로드한 모든 .deb 파일에 대해 실행합니다. (저는 해당 파일을 /mnt/paccgh 디렉토리에 넣었습니다.)
cd /mnt find paccgh/ -type f -name *deb -exec ./script.sh {} \;
chroot /mnt .. 를 실행하면 작동합니다!
for i in dev proc sys; do mount -o bind -v /$i/ /mnt/$i;done
chroot /mnt
이제 chroot에서 확장자가 .deb인 패키지 목록이 있는 디렉토리로 이동하고 dpkg를 사용하여 다시 설치하세요.
cd /paccgh dpkg -i --force-all *deb
이제 의사 준비 시스템이 생겼습니다. 이 명령을 사용하여 손상된 패키지를 수정하세요.
apt -f install
아니면 이번에는 dpkg를 사용하여 다시 설치하세요. 강제로 실행할 필요가 없습니다.
dpkg -i *deb
dpkg -l이 불완전하거나 손상된 플래그가 있는 패키지를 반환하지 않으면 준비가 된 것입니다.
dpkg -l|grep -v ii
h) 다음 단계를 계속합니다.
° 주요 소프트웨어 패키지 설치: apparmor, systemd, login, openssh-server, iputils, cron, at, acl, passwd, fstools(lvm, mdadm, btrfs-progs, ext2utils 등)
apt -y install lvm mdadm ext2utils openssh-server...
° fstab 구성(/dev/vda* 또는 /dev/sda를 사용하지 말고 LABEL 또는 UUID를 사용하십시오. 그렇지 않으면 현재 vda인 디스크가 실제 머신에서 sda가 되므로 재부팅 시 시작되지 않습니다)
UUID=1234..... swap swap defaults 0 0 UUID=2345..... / ext4 defaults,acl 1 1 UUID=4585..... /home ext4 defaults,acl 1 2
blkid를 사용하여 uuid를 얻을 수 있습니다
° 사용자 구성 및 루트 비밀번호 설정
adduser youruser
echo -e 'yourpassword\nyourpassword\n'|passwd root
echo -e 'yourpassword\nyourpassword\n'|passwd youruser
i) 지금 가장 중요한 것은 커널을 사용자 정의하는 것입니다. 저는 개인적으로 이 방법을 따르고 있으며 최신 커널을 다운로드했습니다.그 핵심kernel.org(현재 4.14.328)에서 /usr/src에 압축을 풀고 이런 식으로 데비안 패키지를 만들었습니다.
apt -y install build-essential linux-source bc kmod cpio flex libncurses5-dev libelf-dev libssl-dev dwarves bison
cd /usr/src/linux-4.14.328
.config의 경우 Debian 8 ppc64 커널(9111-285에 설치된 최신 시스템, 패닉 없음)에서 이전 구성을 복사하고 "이전 구성 만들기"를 수행했습니다. 새 "답변"에 대해 Gentoo 커널에서 복사했습니다.여기내 Slackware 커널 구성에서 이것이 최종입니다..config활성화할 준비가 되었습니다.
이 일을 한 후에
nice make -j
nprocbindeb-pkg
커널은 6~9시간 후에 준비됩니다.. 그런데 왜 ppc64 대신 powerpc 패키지를 생성하는지 모르겠습니다. force-all을 사용하여 설치할 수 있습니다.
dpkg -i --force-all /usr/src/linux*deb
l) 이제 grub 패키지만 그리워집니다.
apt -y install grub-ieee1275
디스크에 설치
grub-install /dev/vda1
initramfs 업데이트
update-initramfs -cv -k all
그럽 업데이트
update-grub2
l) 준비가 되었습니다. chroot를 종료하고 마운트 해제한 후 VM의 전원을 끕니다.
exit umount /mnt/dev/pts umount /mnt/proc umount /mnt/sys shutdown -h now
m) 이제 가장 큰 문제는... 우리 디스크는 SATA이고 9111-285는 scsi 또는 ide 디스크를 사용하는 반면 도킹 스테이션을 사용하여 이 문제를 해결할 수 있습니다.이것(usb2!) 디스크를 삽입하고 워크스테이션을 SMS 메뉴로 부팅하고(직렬 연결이 필요함) livecd(Debian 8)에서 부팅한 다음 dd를 사용하여 SATA 디스크의 내용을 SCSI 디스크에 복사하고 usb- 부팅 시 SATA 연결 디스크, 시스템은 scsi 디스크에서 부팅되지만 USB 디스크에서 읽습니다(scsi에서 직접 부팅할 수 있지만 grub-console에서 grub을 수정해야 함).
n) Linux 로그인 프롬프트에 도달하면 rsync를 사용하여 usb-sata 디스크의 모든 데이터를 scsi 디스크로 복사합니다.
이런 식으로 rsync를 사용하십시오
vim 파일.txt
/mnt /proc /sys /dev
마운트, rsync..를 실행합니다.
mount /dev/sda2 /mnt
rsync -avAXHhSP --exclude-from=file.txt / /mnt
for i in dev proc sys;do mount -o bind /$i/ /mnt/$i;done
chroot /mnt
initramfs를 다시 생성하고 fstab을 복구합니다.
vim /etc/fstab #update uuid's or labels
update-initramfs -cv -k all
grub을 다시 설치하고 결국 scsi 디스크로 재부팅합니다.
grub-install /dev/sda1
update-grub2
exit
shutdown -r now