Skip to content

Linux/PC-98 v0.7.0

Choose a tag to compare

@awemorris awemorris released this 06 Aug 20:02

Linux/PC-98 v0.7.0

This release restores IDE and SCSI Linux 7.1 disk images for NEC PC-9800 machines, updates the replaceable BOOT98 boot chain, and provides a Windows x64 build of qemu-pc98. Public disk images use the GDC display and PC-98 keyboard as the console.

The PC-9801-55/92 Linux driver is included in the i386 and i486 kernels. PC-9801-55-compatible images use H=8/S=17 geometry, while PC-9801-92 images use H=8/S=32 geometry.

Choosing a disk image

Image CPU and userland Interface and geometry Minimum RAM Raw size limit
linux-pc98-i386sx-busybox-ide.img.xz i386SX, static BusyBox IDE, H=8/S=17 5 MiB below 40 MB
linux-pc98-i386sx-busybox-scsi55.img.xz i386SX, static BusyBox PC-9801-55 compatible SCSI, H=8/S=17 5 MiB below 40 MB
linux-pc98-i386sx-busybox-scsi92.img.xz i386SX, static BusyBox PC-9801-92 SCSI, H=8/S=32 5 MiB below 40 MB
linux-pc98-i486dx-debian13-ide.img.xz i486DX or newer, Debian 13/i486 IDE, H=8/S=17 64 MiB below 2 GB
linux-pc98-i486dx-debian13-scsi55.img.xz i486DX or newer, Debian 13/i486 PC-9801-55 compatible SCSI, H=8/S=17 64 MiB below 2 GB
linux-pc98-i486dx-debian13-scsi92.img.xz i486DX or newer, Debian 13/i486 PC-9801-92 SCSI, H=8/S=32 64 MiB below 2 GB

Write the appropriate decompressed image to a CF card, SD adapter, SCSI2SD,
BlueSCSI, or another block device. Writing an image destroys the existing
contents of the destination device.

Windows qemu-pc98

  • qemu-pc98-win64.zip contains x86_64 and i386 QEMU system binaries,
    required runtime DLLs, libusb support, and the free compatibility BIOS.
  • virtpc98.exe is included as the graphical frontend.

Kernels and boot loaders

  • vmlinux-i386 is the low-memory Linux 7.1 kernel for i386SX systems.
  • vmlinux-i486-debian is the Linux 7.1/i486DX kernel used by the Debian images.
  • bootloader.zip contains LINUX98.EXE, INST.EXE, the three .IMG installer inputs, IO.SYS, BOOT.SYS, BOOT.CFG, and documentation.

BOOT98 can chain-load an active partition on another fixed disk without losing its BIOS unit number. This permits the NEC fixed-disk boot menu and DOS partition boot records to continue loading from the selected disk.

Boot from DOS

Copy LINUX98.EXE and an uncompressed VMLINUX to a DOS-accessible FAT volume and run, for example:

LINUX98 VMLINUX ide0 root=PARTLABEL=LINUXROOT rw
LINUX98 VMLINUX scsi0 root=/dev/sda2 rw

Run it from plain real-mode DOS. Memory managers or other software that has already entered protected mode can prevent the loader from taking control.

Bootloader

Read README.md and DOS-README.md in bootloader.zip.

Our boot sequence:

ITF ... Reads LBA0-1 and jumps. (LBA0 is the boot sector, LBA1 is the partition table)
LBA0 ... Reads LBA2 and jumps
LBA2-15 ... Reads LBA3-15 and execute. Just jumps to the PBR of the "BOOT" partition.
BOOT partition PBR ... Loads our IO.SYS and jumps.
IO.SYS ... Loads BOOT.SYS, enters the protected-mode, and jumps.
BOOT.SYS ... 32-bit boot loader program. Loads VMLINUX from the "BOOT" partition and jumps

INST.EXE installs our boot codes to a specified disk or a partition.

# LBA0
INST /LBA0

# LBA2-15
INST /LBA2

# Partition PBR and IO.SYS
INST /PART C:
COPY BOOT.SYS C:

Reproducible build

The complete release artifact set is generated with:

./build.sh release --version v0.7.0