vak: (Daemon)
[personal profile] vak
В ядре NetBSD есть хитрый параметр "options CYRIX_CACHE_WORKS". Если его поставить, ядро включит L1 кэш процессора Cyrix. И оно действительно помогло. Дуремарки заметно поднялись: 54 супротив прежних 31. Хотя до досовских 110 далеко.
DureMark 1.0 Results
=======================
Iterations      : 300
Execution Time  : 5.5 sec
List Workload   : 39.4%
Matrix Workload : 19.2%
State Workload  : 41.4%
-----------------------
Total Score     : 54.25 DureMark
Путь был непростым, однако. Чтобы изменить параметр, надо пересобрать ядро. Проделать это на самом компьютере не представляется возможным. Без кэша он настолько тормозной, что пересборка займёт месяц. Следовательно, надо ставить ровно такую же версию NetBSD на виртуальную машину.

До сих пор я возился с NetBSD версии 4.0.1, выпуска 2008 года. Более поздние не лезут в 16 мегабайт памяти. Но эта версия давно не поддерживается, и пакеты к ней я надыбал только на bitsavers.org. При отсутствии пакетов на официальном сайте установка полноценной системы, нужной для сборки ядра, превращается в головоломку с неизвестным исходом.

Нужна свежая версия NetBSD 10.1, а значит необходимо добавить памяти в компьютер. Четыре восьмибитных SIMM, если помните. В пятницу память пришла с Ебея, заодно пришла и 2-гигибайтная SD карточка industrial. Установка системы на неё заняла всю субботу.

Возиться с флопиками необязательно. Чтобы запустить установку, надо под ДОСом скачать два файла: dosboot.com и netbsd-INSTALL.gz. Второй файл распаковать под именем install и вызвать "dosboot install". Остальное будет подгружаться по сети, благо сетевая карточка NE2000 настроена и работает. Процесс установки подробно описан в главе №3 "Example installation" документа netbsd-en.pdf.

Установка шла медленно и печально, ведь кэш пока не работает. Параллельно я поставил эту же версию NetBSD на мак под симулятором UTM (обёртка над QEMU). Пришлось напрячься, изучить файл конфигурации ядра, чтобы убрать всё ненужное, но не зацепить чувствительное. Благо, можно начать с имеющейся конфигурации GENERIC_TINY. Вот такое получилось.
include "arch/i386/conf/std.i386"

makeoptions     COPTS="-Os"
makeoptions     USE_SSP="no"

maxusers        8               # estimated number of users

# Standard system options
options         CYRIX_CACHE_WORKS
options         INSECURE        # disable kernel security levels - X needs this
options         RTC_OFFSET=0    # hardware clock is this many mins. west of GMT
options         SYSVMSG         # System V-like message queues
options         SYSVSEM         # System V-like semaphores
options         SYSVSHM         # System V-like memory sharing
options         PIPE_SOCKETPAIR # smaller, but slower pipe(2)

# File systems
file-system     FFS             # UFS
file-system     EXT2FS          # second extended file system (linux)
file-system     MSDOSFS         # MS-DOS file system
file-system     KERNFS          # /kern
file-system     PROCFS          # /proc
file-system     PTYFS           # /dev/pts/N support

# File system options
options         FFS_NO_SNAPSHOT # No FF snapshot support

# Networking options
options         INET            # IP + ICMP + TCP + UDP
options         INET6           # IPv6

# Kernel root file system and dump configuration.
config          netbsd  root on wd0a type ffs

# wscons options
options         WSEMUL_VT100                # VT100 / VT220 emulation
options         WS_KERNEL_FG=WSCOL_GREEN
options         WSDISPLAY_COMPAT_PCVT       # emulate some ioctls
options         WSDISPLAY_COMPAT_SYSCONS    # emulate some ioctls
options         WSDISPLAY_COMPAT_USL        # wsconscfg VT handling
options         WSDISPLAY_COMPAT_RAWKBD     # can get raw scancodes
options         PCDISPLAY_SOFTCURSOR
options         WSDISPLAY_SCROLLSUPPORT

# ISA bus support
isa0    at mainbus?

# Console Devices
pckbc0          at isa?                 # PC keyboard controller
pckbd*          at pckbc?               # PC keyboard
vga0            at isa?
pcdisplay0      at isa?                 # CGA, MDA, EGA, HGA
wsdisplay*      at vga? console ?
wsdisplay*      at pcdisplay? console ?
wskbd*          at pckbd? console ?

# Serial Devices
com0    at isa? port 0x3f8 irq 4        # Standard PC serial ports
com1    at isa? port 0x2f8 irq 3
com2    at isa? port 0x3e8 irq 5

# Parallel Printer Interfaces
lpt0    at isa? port 0x378 irq 7        # standard PC parallel ports

# ISA IDE controllers
wdc0    at isa? port 0x1f0 irq 14       # ST506, ESDI, and IDE controllers
wdc1    at isa? port 0x170 irq 15
atabus* at ata?
wd*     at atabus? drive ?              # the drives themselves

# ISA floppy
fdc0    at isa? port 0x3f0 irq 6 drq 2  # standard PC floppy controllers
fd*     at fdc? drive ?                 # the drives themselves

# ISA network interfaces
ne0     at isa? port 0x280 irq 9        # NE[12]000 Ethernet cards
ne1     at isa? port 0x300 irq 10

# disk/mass storage pseudo-devices
pseudo-device   fss                     # file system snapshot device
pseudo-device   vnd                     # disk-like interface to files
pseudo-device   swcrypto                # software crypto implementation

# network pseudo-devices
pseudo-device   bpfilter                # Berkeley packet filter
pseudo-device   bridge                  # simple inter-network bridging
pseudo-device   npf                     # NPF packet filter
pseudo-device   loop                    # network loopback
pseudo-device   ppp                     # Point-to-Point Protocol
pseudo-device   pppoe                   # PPP over Ethernet (RFC 2516)
pseudo-device   tun                     # network tunneling over tty

# miscellaneous pseudo-devices
pseudo-device   pty                     # pseudo-terminals
pseudo-device   clockctl                # user control of clock subsystem

# wscons pseudo-devices
pseudo-device   wsmux                   # mouse & keyboard multiplexor
Я прямо как в молодость вернулся: те же самые ощущения, что 32 года назад, когда я возился с конфигурациями и исходниками ядра FreeBSD. 😀

Компилируем ядро под NetBSD 10.1 в виртуальной машине, после чего записываем на досовскую SD карточку, где в файлe AUTOEXEC.BAT командой dosboot оно и грузится. Дешёво и сердито.

Забавная вышла ситуёвина. Допотопный компьютер с 5-дюймовым флоповодом, отстойнейшим процессором Cyrix 486, и на нём распоследний юникс NetBSD.

Date: 2025-12-22 22:33 (UTC)
From: [personal profile] flamedancerii
что памяти добили - отлично!

как варианты найти недостающие 50 грамм баллов:

там есть еще
CYRIX_CACHE_REALLY_WORKS
без hold на шине.

также, ходили слухи, что real mode в общем быстрее protected mode на vintage CPU. поэтому и мучились с unreal mode.
подозреваю, что проверить можно перемеряв, предварительно загрузив под DOS какой-то менеджер памяти вроде emm386 или qemm386 или скомпилировать тест как DPMI программу.

по intel dx2-66 едущему с eBay -
без мануала на материнку тяжело - там непросто все https://datasheets.chipdb.org/SGS Thomson/x86/486/4193.PDF

Date: 2025-12-22 22:39 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
А брідж точно треба в ядро для локалхоста пхати? У фрішці він мені знадобився лише тоді, коли треба було підняти transparent invisible filter, щоб сховати частину мережі від решти університетського кампуса.

Date: 2025-12-22 23:29 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Ну то краще не статикою, а в kld, щоб потім через boot.conf, якщо знадобиться.

Date: 2025-12-22 23:23 (UTC)
itsi: (Default)
From: [personal profile] itsi
> где в файлe AUTOEXEC.BAT командой dosboot оно и грузится

Das Boot же правильно!

Date: 2025-12-23 08:10 (UTC)
From: [personal profile] ichthuss
dosboot dasuboot

Date: 2025-12-23 09:03 (UTC)
itsi: (Default)
From: [personal profile] itsi
"- Think like a pirate! I want a man with a tattoo on his dick! Have I got the right man?"
- By a strange coincidence, you do, sir."

Date: 2025-12-23 10:23 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
bootdesu

Date: 2025-12-23 01:01 (UTC)
x86128: (Default)
From: [personal profile] x86128
Пробовал я как-то на таком собрать OpenOffice, на четвертый день непрерывной компиляции уже сдался 😅. Насчёт кэша не помню уже, но разницы по скорости между win95 и freebsd не было заметно.

Date: 2025-12-23 01:37 (UTC)
x86128: (Default)
From: [personal profile] x86128
Ядро freebsd 3.4 собиралось 30 минут насколько помню

Date: 2025-12-23 01:35 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
В защищённом режиме каждое обращение к памяти должно же требовать дополнительных тактов для перевода математических адресов в физические.

Date: 2025-12-23 02:22 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Длина пайплайна в real mode и protected mode разная, выходит. Кэш раньше был по физическим адресам, а не по виртуальным + key.

Date: 2025-12-23 12:52 (UTC)
From: [identity profile] ledernierheros.livejournal.com
NetBSD прекрасно кросс-компилировала себя. Как минимум, во времена 5.х. Собирал тогда, уже не помню зачем, ядро для PPC/PReP на писишке. То есть, помню, что делал эмуляцию PReP в QEMU, но не помню, чем меня стандартные флопы не устраивали.

FreeBSD

Date: 2025-12-23 21:12 (UTC)
From: [personal profile] ymz5
У Вас 32, у мене 25... А в цілому життєві BSD-історії схожі :)

Я довго 8.x тримав на сервері у коморі (NAT+firewall+всі діла). Аж до 2015-го. Машина на основі P3/1GHz працювала 24/7 і жодного разу не підвела. Досі зі мною і досі вмикається на ура.

Одного разу, після чергової перекомпіляції ядра, перестало запускатися. Виявився баг у апстрімі -- був змушений рапортувати. Виправили :)