无法在旧 IBM 9111-285 上从网络启动?

无法在旧 IBM 9111-285 上从网络启动?

我有一台带有 AIX 7.1 的旧 IBM 9111-285 考虑到 Aix 7.2 无法在最旧的 ppc cpu 上启动(这是 power5!),并且 Aix 7.1 已接近 EOL,因为我知道我想在其上安装 Linux。其实我有那些“解决方案”

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 并..内核恐慌,因为无法挂载 root 映像,我想可能是因为我的工作站有 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

找到的解决方案:在 9111-285 上使用最新的 ppc64 发行版(opensuse tumbleweed、Debian sid)从网络或 cd 启动是不可能的,因为会出现内核恐慌。可以使用一些技巧来安装带有自定义内核的 ppc64 的 Debian sid (13) 端口。

这就是我安装的方式(你需要一些小技巧:如何创建 fs、知道如何创建 chroot、已知 qemu..)

[U]当然,如果发生损坏,我不承担任何责任。自行承担风险[/U]

a)直接从DVD或者网络安装没用,直接进入内核panic

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,因为安全且经过测试不需要单独的启动分区,我们将lvm root挂载在/mnt

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

° 配置用户并设置 root 密码

adduser youruser
echo -e 'yourpassword\nyourpassword\n'|passwd root
echo -e 'yourpassword\nyourpassword\n'|passwd youruser

i)现在最重要的事情,自定义内核,我个人是按照这样的方式,我已经下载了最新的它的内核来自 kernel.org(此时为 4.14.328),我将其解压到 /usr/src 中,并使用这种方式创建 Debian 软件包

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 -jnprocbindeb-pkg

6-9小时后内核准备就绪..但我不知道为什么它创建一个powerpc包而不是ppc64,我们可以使用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

更新grub

update-grub2

l)我们准备好了,退出 chroot,卸载它并关闭虚拟机电源

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

相关内容