Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/49: Рейтинг темы: голосов - 49, средняя оценка - 4.67
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
22.11.2023, 12:55  [ТС]
Студворк — интернет-сервис помощи студентам
R71MT, Jin X,
Цитата Сообщение от Jin X Посмотреть сообщение
У вас что за эмулятор/ВМ? Если не какой-то экзотический, то можно, почему нет? Он же эмулирует реальное поведение железа
просто можно было бы изменять содержимое образа из страницы своего сайта
без перезалива на хостинге ( даже его не посещая )

Добавлено через 5 минут
R71MT, переделываю загрузчик для использования видеобуфера для вывода текста,
но никак не могу запустить функцию из второго сектора с данными объявленными в первом секторе

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
; DS ========================================== BOOT (
bits 16
org 7C00h
jmp $+2
 
start:
cli
xor ax, ax
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 7C00h
sti
 
; ------------------------------------ Чтение след секторов
mov ax, 0208h      ; AH=02; AL=01 (функция чтения секторов; 8 секторов = 512x8=4096 = 4 КБ )
mov cl, 2          ; CH=initial 00; CL=02 (; 2й сектор)
mov dh, 0
mov bx, 7E00h      ; =7C00h+0200h: (:512); Адрес для ядра
int 13h            ; читаем и кладем туда
 
jmp 0000:7E00h     ; es:bx (seg:offset) переход к ядру; CS=0000, IP=7E00h
 
; ------------------------------------ oo (
oo:                ; Вывод текста. AH = [black,blue,green,cyan, red,mag,yel,gray][i]
push es            ; сохр ES
push 0xB800        ; адрес видеобуфера
pop  es            ; ES = 0xB800
mov  di, [curs]    ; DI = смещение
__oo:              ; перебор строки
  lodsb            ; AL = очеред байт из DS:SI
  stosw            ; запись АХ по адресу ES:DI
  loop __oo        ; перебор CX-раз
pop  es            ; загр ES
ret
; ------------------------------------ oo )
 
str1 db '[UM,Virtio] NIC_PCI_CFG_SPACE:'
len1 equ $-str1
 
str2 db 'NIC_PCI_COMMON_CFG:'
len2 equ $-str2
 
curs dw 0          ; позиция курсора
 
; -----------------------------------------
times 510-($-$$) db 0
dw 0xAA55
; ========================================= BOOT )
; ***************************************** CORE ( :7E00h
 
mov [curs], 4      ; ставим курсор
mov ah, [str1]     ; беру адрес строки
mov si, ah         ; посредник
mov ah, 3          ; цвет = cyan
mov cx, len1       ; длина строки
call oo            ; вывод
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2023, 12:55
Ответы с готовыми решениями:

Джаббер сервер для Win x64
В поисковиках смотрел, но так и не нашел ни чего подходящего. Нужен джаббер сервер на Windows server 2008 x64. Кто что посоветует?

Сервер Domino 8.5.3 X64 И Файл Подкачки (pagefile)
Ребята, проблема в следующем: Имеется сервер Domino x64 8.5.3 с последними фиксапами. Оперативы 16 Гбайт. В последнее время админы...

Как перенести веб-сервер со всеми конфигами с Windows 10 x64 на Debian (ARM)?
В составе веб-сервера: Apache2 (2.4), PHP 7.3, MySQL 5.7, а также веб-сайт WordPress с плагинами и конфигом под ip windows-ноутбука. ...

209
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,319
Записей в блоге: 12
22.11.2023, 13:15
Teamur, зачем jmp $+2 в начале?
Далее, там же в начале cli/sti не нужны, инструкция mov ss и последующая (т.е. mov sp) и так выполняются без прерываний между ними.
По поводу метки __oo рекомендую пользоваться локальными метками, которые начинаются с точки (в NASM и fasm), т.е. .oo (или .1). В этом случае этим именем можно пользоваться до следующей глобальной метки (без точки в начале). При этом её полное имя будет oo.oo (или oo.1), т.е. даже извне можно перейти к ней при необходимости, используя полное имя.

Тут что-то очень странное выделаете:
Assembler
52
53
54
mov [curs], 4      ; ставим курсор
mov ah, [str1]     ; беру адрес строки
mov si, ah         ; посредник
mov [curs], 4 — не указан размер записываемых данных (mov word [curs], 4). Кстати, NASM к именам переменных не привязывает их размер, а вот fasm привязывает (там можно не указывать размер в данном случае).
mov ah, [str1] – это не адрес строки, а чтение байта из строки.
mov si, ah — вы пытаетесь записать байт в слово, просто пишите mov si, str1.

Вам бы для начала подтянуть знание ассемблера в целом (потому что такие ошибки говорят о непонимании базовых вещей), а потом уже сложные вещи писать: загрузчики и работу защищённом режиме.

Добавлено через 2 минуты
Ещё вам нужно выполнить инструкцию cld (можно поместить куда-то в начало), чтобы у вас не случилось чтения/записи строки (lodsb/stosw) в обратном направлении (при неудачных обстоятельствах).
1
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
22.11.2023, 13:39  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
О какой скорости может идти речь, если связь по сети?
провайдеры конечно ограничивают, но я имел ввиду - скорость обработки данных на самой ОС

Ведь другие посетители сайта будут запрашивать ресурсы, там же будет потом База Данных,
и надо быстро обрабатывать запросы, перебирать записи, файлы, сортировать, реализовывать алгоритмы сетевого стека и тд
распараллеливать и тп, поэтому я и говорю, что хорошо бы чтобы был x64.

Но x64 потом

Добавлено через 19 минут
Jin X, спасибо

Цитата Сообщение от Jin X Посмотреть сообщение
зачем jmp $+2 в начале?
Цитата Сообщение от R71MT Посмотреть сообщение
Ещё имеет смысл вставить в начале jmp $+2, что позволит очистить очередь в конвейере ЦП
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,319
Записей в блоге: 12
22.11.2023, 14:11
Цитата Сообщение от Teamur Посмотреть сообщение
Ещё имеет смысл вставить в начале jmp $+2, что позволит очистить очередь в конвейере ЦП

Тимур, почему jmp $+2 должен очистить конвейер? Это же не условный переход (причём, с неверным предсказанием). Я понимаю ещё xor eax,eax + cpuid.
Да и зачем это вообще здесь нужно?
0
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
22.11.2023, 14:38  [ТС]
Jin X, я подумал, что это важно и по совету R71MT, добавил это

Цитата Сообщение от Jin X Посмотреть сообщение
Да и зачем это вообще здесь нужно?
наверное меньше телодвижений для процессора и быстрее код будет
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,319
Записей в блоге: 12
22.11.2023, 14:56
Teamur, это вопрос к R71MT

Добавлено через 32 секунды
Вы тоже Тимур (ну да, судя по нику)?
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6215 / 2449 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
22.11.2023, 15:06
От jmp $+2 пользы больше, чем вреда - если мешает, можете снести его под корень везде. Прицепом можно отправить в корзину и cli/sti. Код станет на 6-байт меньше, вот тогда и заживём. Лучше-бы сосредоточились на конфигах VirtioNet, чем заниматься оптимизацией уже готового загрузчика. Ато раздули тред на 5 страниц, а толку ноль.
1
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
22.11.2023, 16:19  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
Лучше-бы сосредоточились на конфигах VirtioNet
я бы с радостью, осталось только исправить
https://www.cyberforum.ru/post17122217.html
но не получается

Цитата Сообщение от Teamur Посмотреть сообщение
не могу запустить функцию из второго сектора с данными объявленными в первом секторе
Добавлено через 3 минуты
Цитата Сообщение от Jin X Посмотреть сообщение
Вы тоже Тимур (ну да, судя по нику)?
хорошо сочетается, да: Team (команда) + Timur = Teamur

Добавлено через 14 минут
В общем так сработало
Assembler
1
2
3
4
5
mov word[curs], 0  ; ставим курсор
mov si, str1
mov ah, 3          ; цвет = cyan
mov cx, len1       ; длина строки
call oo            ; вывод
А как очистить экран перед этим?
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,319
Записей в блоге: 12
22.11.2023, 18:08
Цитата Сообщение от Teamur Посмотреть сообщение
А как очистить экран перед этим?
Assembler
1
2
mov ax,3
int 10h
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
23.11.2023, 08:00
Цитата Сообщение от Teamur Посмотреть сообщение
изменять содержимое образа из страницы своего сайта
без перезалива на хостинге
Но при перезапуске Ваш сайт будет запускаться из исходного загруженного Вами образа или из изменённого?

С учётом того, что из одного образа могут перезапускаться множество VM, технически проще "забывать" все измененения, внесённые виртуальной машиной в загрузочный блоб. ISO обычно и так неизменяемые, ELF-модули, которые qemu "напрямую" запускает в long mode, тоже. Для хранения изменяемых данных у VM есть виртуальное DASD( SSD, HDD, iSCSI etc.), которое Вы арендовали.
0
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 08:51  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Но при перезапуске Ваш сайт будет запускаться из исходного загруженного Вами образа или из изменённого?
из измененного

Вот когда сделаю примитивный сервер, его floppy-образ я загружу на VDS-хостинг.
Далее я открываю браузер, захожу на сайт и в редакторе кода буду вести разработку и по кнопочке
нап 'Перезаписать Ядро' сработает JS модуль, который скомпилирует новое ядро и отправит на сервер
и уже на сервере ОС изменит исходный floppy-образ, записав в него новое ядро и перезагрузит ОС

И после перезагрузки, ОС уже будет с новым ядром

Но это так, идеи на будущее
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
23.11.2023, 09:03
Цитата Сообщение от Teamur Посмотреть сообщение
из измененного
Вы это проверяли на VDS?
Пробовали сохранять на дискету с FreeDOS дату последнего запуска и показывать её?

Чтобы убедиться, что у VM может изменить исходный загрузочный образ, а не его копию.
0
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 09:09  [ТС]
politoto,

Получается что даже и ЖД не нужен, поскольку ОС всегда будет крутиться на виртуальном floppy

А потом когда напишу драйвер для NVMe (ЖД) там можно будет хранить остальные данные, а ОС так и будет вращаться в приводе
на виртуальном флоппи, который через сеть, если захочу буду изменять

Но мне, честно говоря не верится, что так можно сделать

А если у меня образ ISO на 5 Гб к примеру - он тоже будет вечно в виртуальном приводе и его тоже можно будет менять?

В теории это дает возможность на халяву получить изменяемую память в лице самого образа,
который вынужден держать у себя VDS-хостинг, поскольку они предоставили возможность загружать свои образы ОС
.

Получается доступно, нап: 105 ГБ = (Изменяемое Пространство на Образе: 100 ГБ )+SSD(5 ГБ)

МАГИЯ

Добавлено через 3 минуты
Цитата Сообщение от politoto Посмотреть сообщение
Вы это проверяли на VDS?
пока ещё нет, просто пришла такая идея и предположения
0
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 09:28  [ТС]
Но теперь по теме, я
1) переписал код сделав всё в одном файле
2) начал использовать видеобуфер для вывода текста
3) перешел в нереальный режим
4) нашел NIC и вывел дамп ( с косяками )

Вот весь код NASM, пожалуйста напишите как его довести до ума
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
; SERVER ====================================== BOOT (
bits 16
org 7C00h
jmp $+2
 
start:
cli
xor ax, ax
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 7C00h
sti
 
; ------------------------------------ Чтение след секторов
mov ax, 0208h      ; AH=02; AL=01 (функция чтения секторов; 8 секторов = 512x8=4096 = 4 КБ )
mov cl, 2          ; CH=initial 00; CL=02 (; 2й сектор)
mov dh, 0
mov bx, 7E00h      ; =7C00h+0200h: (:512); Адрес для ядра
int 13h            ; читаем и кладем туда
 
jmp 0000:7E00h     ; es:bx (seg:offset) переход к ядру; CS=0000, IP=7E00h
 
; ------------------------------------ Text
Text:              ; 
                   ; Вывод текста
push es            ; сохр ES
push 0xB800        ; адрес видеобуфера
pop  es            ; ES = 0xB800
mov  di, [curs]    ; ES:DI = сегмент видеобуфера В800:0000
.__:               ; перебор строки
  lodsb            ; AL = очеред байт из DS:SI
  stosw            ; запись АХ по адресу ES:DI
  loop .__         ; перебор CX-раз
pop es             ; загр ES
mov word[curs], di ; сохр поз курсора
ret
 
; ------------------------------------ Text/
 
curs dw 2          ; позиция курсора = 1 символ
tcol db 7          ; цвет/фон текста = серый на чёрном
 
; ------------------------------------ PrintHex
PrintHex:          ; (ebx)
                   ; 
mov  di, [curs]    ; ставим курсор
mov  ah, [tcol]    ; цвет i: [black,blue,green,cyan, red,mag,yel,gray]
 
mov  cx, 8         ; 8 раз по 4 бита (подтянет rol)
  ascii:             
  rol ebx, 4       ; YYYY -> BL[XXXX_....]
  mov al, 15       ;   0000_1111
  and al, bl       ; & XXXX_YYYY -> 0000_YYYY
  add al, 48       ; 0..9
  cmp al, 58          
   jl .pr          ; AL+48 < 58
  add al, 7        ; A..F
                   
  .pr: stosw       ; вывод AХ на экран
  loop ascii       ; перебор всех цифр
ret
 
; ------------------------------------ PciCfgDump
PciCfgDump:             ; (DL)
                    ;  DL: кол строк
push es                 ; сохр ES
push 0xB800             ; адрес видеобуфера
pop  es                 ; ES = 0xB800
 
mov DH, 4               ; колич столбцов
  .row:               
  mov ax, 0xB10A        ; fn Read_PCI_Cfg_Dword
  mov bx, 0x0018        ; BDF
  int 1Ah               ; ECX = Dword
  bswap ecx             ; зеркалим по PCI спец
  mov ebx, ecx    
  call PrintHex         ; PrintHex(ebx)
    mov ax, 0x0720        ; пробел между двордами
    stosw                 ; вывод AХ в видеобуфер
  add di, 4             ; след DWORD в PciCfg
  dec DH                ; след столб с двордом
  jnz .row
    add di, 88          ; курсор на новую строку
    mov word[curs], di  ; сохр позицию курсора
    mov DH, 4           ; сброс колич столбцов
    dec DL              ; след строка
  jnz .row              
ret
 
; ------------------------------------ UM
UM:
; Создание GDT
lgdt [GDT]    ; Адрес таблицы GDT (Глобальная Таблица Дескрипторов)
cli           ; выкл прерывания
in  al, 0x70  ; Немаскируемые прерывания NMI
or  al, 0x80  ; 1000'0000
out 0x70, al  ;
 
mov eax, cr0  ; Переход в PM
inc al        ; вкл в CR0[0]=РМ
mov cr0, eax  ; -> PM
jmp $+2       ; после смены режимов обязателен JMP
 
mov ax, 8     ; селектор 4Gb-дескриптора в GDT
mov fs, ax    ; запись в сегм.регистр FS (свободный)
 
mov eax, cr0  ; Обратно в RM
dec al        ; вкл в CR0[0]=РМ
mov cr0, eax
jmp $+2       ; после смены режимов обязателен JMP
 
in  al, 0x70  ; снять запрет с NMI
and al, 0x7F  ; 0111'1111
out 0x70, al
 
xor ax, ax    ;
mov fs, ax    ;
sti           ; вкл прерывания
ret
; ------------------------------------ UM/
 
; GDT_UM
align 16                     ; адреса GDT кратны 16
Table dq 0                   ; нулевой дескриптор
      dq 0x00cf93000000ffff  ; дескриптор данных (4Gb)
  GDT dw ($-Table)-1         ; размер таблицы
      dd Table               ; адрес таблицы
 
; Messages
str1 db 'NIC_PCI_CFG_SPACE:'
len1 equ $-str1
str2 db 'NIC_PCI_COMMON_CFG:'
len2 equ $-str2
 
; -----------------------------------------
times 510-($-$$) db 0
dw 0xAA55
; ========================================= BOOT )
; ***************************************** CORE ( :7E00h
 
call UM              ; Unreal Mode
 
; Очистка экрана, видеорежим: txt.80x25
mov ax, 3
int 10h
 
; Текст NIC_PCI_CFG_SPACE:
mov  si, str1        ; 
mov  cx, len1        ; длина строки
mov  ah, 3           ; цвет = cyan
call Text            ;
 
; Новая строка
add di, 160-len1*2  ; новая строка
mov word[curs], di  ; сохр позицию
stosw               ; на экран
 
; Получаем BDF {Bus:Dev:Fn} VirtNet
mov  cx, 0x1000
mov  dx, 0x1AF4
xor  si, si
mov  ax, 0xB102
int  1Ah
 
; Дамп PciCfg
mov  DL, 16         ; 16 строк дампа
call PciCfgDump
Смотрите как красиво получается когда тупишь
Миниатюры
x64 Сервер  
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
23.11.2023, 09:47
Цитата Сообщение от Teamur Посмотреть сообщение
А если у меня образ ISO на 5 Гб к примеру - он тоже будет вечно в виртуальном приводе и его тоже можно будет менять?
Большие пользовательские образы у многих - только на время установки системы на виртуальный SSD/HDD. С ограниченным сроком хранения в пару недель.
Или вообще URL образа, который посекторно докачивается в процессе установки.

Добавлено через 4 минуты
Цитата Сообщение от Teamur Посмотреть сообщение
ISO ... тоже можно будет менять?
Реальная машина обычно не может менять содержимое CD-ROM, на то он и ROM.
Только полностью или частично стирать CD-RW, дописывыть CD/DVD-+R, изменять DVD+-RW/RAM.
1
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6215 / 2449 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
23.11.2023, 15:18
Попробовал задать конфиги через порт-управления с адресом в BAR0 и обнаружил, что "байт статуса" не возможно изменить, будто он защищён от записи "Read-Only". Согласно докам, все операции нужно начинать со-сброса настроек в дефолт, для чего в этот байт прописывается нуль. Но уже на старте в нём лежит захардкорденное значение FFh, и все попытки обнулить его не дают результатов - он как был FFh, так и остаётся. Может это потому, что qemu как хост уже настроил девайс Net, после чего перехватывает все обращения к полю статуса. Это наиболее вероятный сценарий, т.к. в R-Mode нет других механизмов ограничения доступа, как в том-же РМ.

Зато остальные регистры в порту можно менять без проблем. К примеру после общих для всех регистров, начиная со-смещения(14h) Virtio-Net хранит свой 6-байтный МАС. Чтобы проверить валидность данных в порту, я прочитал этот МАС и обнаружил, что он соответствует заданному в настройках VirtualBox адресу. Значит указанный в BAR0 порт всё-таки активный, только вот "байт-статуса" в нём закрыл нам вход на замок. Походу здесь кроется ещё нюанс, который требуется найти.

На скринах ниже, байт статуса лежит по смещению(12h) в дампе PIO, а остальные регистры в порту выстроены так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; Общие регистры I/O относительно BAR0
;-------------------------------------
DEVICE_FEATURES  = 00h    ; 4 байт RO. / маска со списком функций, которые предлагает нам хост
DRIVER_FEATURES  = 04h    ; 4 байт RW. / ...а сюда мы прописываем, что выбрали из этого списка
QUEUE_ADDRESS    = 08h    ; 4 байт RW. / адрес очередей(0-N) (буферов In/Out)
QUEUE_SIZE       = 0Ch    ; 2 байт RO. / размер очереди в байтах (назначает хост)
QUEUE_SELECT     = 0Eh    ; 2 байт RW. / регистр выбора очереди
QUEUE_NOTIFY     = 10h    ; 2 байт RW. / регистр уведомлений хосту
DEVICE_STATUS    = 12h    ; 1 байт RW. / текущий статус гостя (Reset, ANK, DRV_OK, etc)
ISR_STATUS       = 13h    ; 1 байт RO. / регистр статуса обработчиков прерываний: бит(2) = изменено
 
; Регистры I/O vNet относительно BAR0
;-------------------------------------
NET_MAC          = 14h    ; 6 байт
NET_STATUS       = 1Ah    ; 2 байт
В скрепке лежит образ флопика с этим кодом - попробуй загрузить его на хост, чтобы увидеть разницу. Если "байт-статуса" примет значение отличное от FFh, значит фишка сработала и можно разговаривать с хостом без mmio, только через порт. Загрузчик в этом бинаре подтягивает в память второй сектор с осью, и даёт ей управление. Далее все дампы строит уже ось, которую можно расширять до метра различного рода прибомбасами. На скринах логи моих qemu + VBox.



Вложения
Тип файла: zip VirtioNetFloppyImg.zip (2.3 Кб, 5 просмотров)
2
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 19:21  [ТС]
R71MT, спасибо

на домашнем нетбуке проверил -> идентично вашему скрину с QEMU

на сервере образ сейчас устанавливается и пока он устаналивается обычно отображается это

возможно это будет полезно. На скрине это сам хост я так понимаю
Миниатюры
x64 Сервер  
0
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 21:24  [ТС]
R71MT, на сервере -> черный экран с мигающим курсором

Добавлено через 1 час 23 минуты
R71MT, также нашёл полезную для нас инфу:

1) Настройка virtio-net:
https://forum.osdev.org/viewto... 11#p289211

2) Структуры BIR и MSI-X
https://groups.google.com/g/li... -7Fs2n2ScJ

3) Активация MSI-X для устройства
https://github.com/managarm/ma... e.cpp#L666

Драйвера virtioNIC:
Вложения
Тип файла: zip Virtio_Drivers.zip (5.4 Кб, 4 просмотров)
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6215 / 2449 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
23.11.2023, 22:06
Цитата Сообщение от Teamur Посмотреть сообщение
также нашёл полезную для нас инфу
да.. этого добра навалом в сети.
я сейчас запустил WinXP на виртуалке (с сетью виртио), и обнаружил интересный глюк.
оказывается все регистры в порту исправно воркают, только читать их нужно строго по размеру регистров, а не как я выводил дамп сразу двордами. нужно проверить ещё раз..
2
 Аватар для Teamur
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
23.11.2023, 22:44  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
читать их нужно строго по размеру регистров
это вы в каких-то документах узнали или экспериментально ?

Добавлено через 30 минут
По какому адресу вы пошли после получения DeviceCfg[0xfe002000] ?

Как вы получили MMIO virtQueue space dump, по какому адресу ?

Также вроде если убрать jmp+$, cli и sti в начале загрузчика, то на сервере в консоли выводятся данные, а иначе курсор во тьме
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2023, 22:44

Сервер HP Primergy Econel 200 S2, Win2008R2 x64, RAID10 4x2000Gb падает скорость чтения/записи по сети
Здравствуйте. Подскажите, пожалуйста, в чем может быть проблема: Сервер бэкапов HP Primergy Econel 200 S2 Встроенный SATA RAID...

Linux Mint 20 x64, Firefox 79 x64. Отключить замыливание текста
Поставил Linux Mint 20, отключил сглаживание шрифтов, поставил шрифты от Windows XP, все хорошо, все нравится. Только в Firefox остался...

HP Pavilion g7 - 2160er переустановил Windows HP x64 на Ultimate x64 - проблема с подсветкой монитора
HP Pavilion g7 - 2160er переустановил windows home premium x64 на Ultimate x64/ Стала выеживаться подсветка монитора - хочет работает,...

Нестандартная ситуация, установка еще одной w7 x64 на уже установленный комп с w7 x64
Всем доброго времени суток ! Не совсем стандартная ситуация, которая посадила меня на гвоздь в позе &quot;шпагат&quot; ))) Есть машинка...

Ищу обновления KB938397-x64 и KB968730-x64 для Windows Server 2003x64
Господа плиз ХЕЛП! Ищем обновы KB938397x64 и KB968730x64 для Windows Server 2003x64 RUS, а то сволочной сервер 1С не видит интеренет. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru