Перш за все, прокоментуйте, що це моя перша стаття, і я сподіваюся, вам вона сподобалась.
У цій серії ми будемо наслідувати Лінус Торвальдс, ми збираємося створити нашу операційну систему з 0. У цьому першому епізоді ми побачимо завантаження і розмістимо текст на екрані з нашого ядра.
У моєму випадку викликається операційна система NextDivel. Перше рішення, яке ми повинні прийняти, як тільки розглянемо операційну систему, - яким буде завантажувач?
Тут є кілька варіантів, і ми навіть могли б створити один самі; однак у цьому підручнику я збираюся використати GRUB, тому що більшість знає про нього більш-менш щось. Ми створюємо папку, яка буде коренем нашої операційної системи, і там ми створюємо папку / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Там ми створюємо файл grub.cfg наступним чином:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
У цьому файлі ми бачили, як GRUB завантажить наше ядро, в даному випадку, в /next/START.ELF. Тепер ми повинні створити наше ядро.
Для цього нам знадобиться GCC y ГАЗ (асемблер проекту GNU, зазвичай постачається з gcc). Отже, ми збираємося створити ядро.
Спочатку ми створюємо файл, який називається kernel.asm. Цей файл міститиме початкову точку нашого ядра, а також визначатиме багатозавантаження (особливість деяких завантажувачів, таких як GRUB). Вміст kernel.asm буде таким:
.text
.globl start
start:
jmp multiboot_entry
.align 4
multiboot_header:
.long 0x1BADB002
.long 0x00000003
.long -(0x1BADB002+0x00000003)
multiboot_entry:
movl $(stack + 0x4000), %esp
call NextKernel_Main
loop: hlt
jmp loop
.section ".bss"
.comm stack,0x4000
Все, що стосується мультизавантаження, полягає у простому дотриманні специфікації, нічого іншого. Все почнеться з початку, він буде викликати multiboot_entry, ми визначимо заголовок мультизавантаження в перших 4k і поставимо його (з movl).
Пізніше ми називаємо NextKernel_Main, який є нашою функцією ядра C. У циклі ми робимо зупинку, щоб зупинити комп'ютер. Це компілюється з:
as -o kernel.o -c kernel.asm
Зараз ми збираємося ввести програмування на C. Ви подумаєте, що зараз все - шматок пирога, ми ставимо a printf en основний і все, ми це зробили.
Ну ні, оскільки printf y основний це функції, які визначає операційна система, але ми їх створюємо! Ми можемо використовувати лише ті функції, які ми самі визначаємо.
У наступних розділах я розповім про те, як розмістити нашу власну бібліотеку C (glibc, bionic, newlibc), але час від часу. Ми обговорили, що хочемо розмістити текст на екрані, ми подивимось, як це робити.
Є два варіанти, один - зателефонувати на BIOS а інший - безпосереднє керування пам’яттю екрану. Ми зробимо останнє, оскільки це зрозуміліше з C, і це також дозволить нам це зробити, коли ми входимо в захищений режим.
Ми створюємо файл NextKernel_Main.c із таким вмістом:
int NextKernel_Main()
{
char *str = "NextDivel says Hello World", *ch;
unsigned short *vidmem = (unsigned short*) 0xb8000;
unsigned i;
for (ch = str, i = 0; *ch; ch++, i++)
vidmem[i] = (unsigned char) *ch | 0x0700;
return 0;
}
Цим ми безпосередньо маніпулюємо пам'яттю VGA і характер за характером ми це пишемо. Ми компілюємо, вимкнувши stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Якщо ви пройшли так далеко, ви захочете спробувати свою нову операційну систему зараз, але ми ще не закінчили. Нам потрібен невеликий файл, який повідомляє компілятору, де у файлі слід залишити кожен розділ. Це робиться за допомогою сценарію компонування. Ми створюємо link.ld:
ENTRY(start)
SECTIONS
{
. = 0x00100000;
.multiboot_header :
{
*(.multiboot_header)
}
.text :
{
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(4096);
}
.data :
{
data = .; _data = .; __data = .;
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .; _end = .; __end = .;
}
Цим ми визначаємо позицію кожного розділу та точку входу, старт, яку ми визначили у kernel.asm. Тепер ми можемо об’єднати всі ці вигадки:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Тепер ми копіюємо START.ELF до / next всередині нашої папки, що імітує корінь нашої операційної системи. Ми переходимо до кореневої папки нашої нової операційної системи за допомогою консолі та перевіряємо наявність двох файлів: один /boot/grub/grub.cfg та інший /next/START.ELF.
Ми переходимо до верхнього каталогу і викликаємо утиліту створення ISO із викликом GRUB grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Після того, як ми це зробимо, ми матимемо ISO. Цей ISO можна відкрити на комп’ютерах x86 (64 біти теж) та віртуальні машини. Щоб перевірити це, я збираюся використати QEMU. Ми називаємо QEMU з командного рядка:
qemu-system-i386 nextdivel.iso
Почнеться SeaBIOS а пізніше ми матимемо GRUB. Пізніше, якщо все правильно, ми побачимо нашу фразу.
Ви подумаєте, що це важко, я вам відповідаю, так це.
Справді створити операційну систему складно, і ця тут не робить нічого корисного. У наступних главах ми побачимо, як обробляти кольори на екрані, резервувати пам’ять і, якщо зможу, як отримувати дані з клавіатури.
Якщо хтось не хоче копіювати все тут, я маю сховище на GitHub (більш докладно) з операційною системою NextDivel. Якщо ви хочете скомпілювати NextDivel ви просто повинні мати git і cmake:
git clone https://github.com/AdrianArroyoCalle/next-divel
cd next-divel
mkdir build && cd build
cmake ..
make
make DESTDIR=next install
chmod +x iso.sh
./iso.sh
qemu-system-i386 nextdivel.iso
Я закликаю вас співпрацювати над NextDivel, якщо у вас є час і бажання створити операційну систему. Можливо, навіть перевершує Linux ... час покаже.
:O
Торвальдс передав операційну систему Minix (похідну від UNIX) Ендрю С. Таненбауму та вдосконалив її.
Таненбаум побився з Лінусом, вони ображали один одного. Таненбаум каже, що Мікроядро - це майбутнє (HURD, Minix новий конус Мікроядро).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Це найкращий допис, який я бачив на даний момент у цьому блозі. Я вже хочу знати, що ще робити.
Будьте вражені
Дійсно вражаюче !!
ФУУУУУУУА!
Це найвигідніший пост, який я коли-небудь бачив, хе-хе. Вітаємо Адріана, стаття про повію! гіпер цікаво !!! 🙂
Я погоджуюсь. Я уявляю цю ситуацію:
Потужний користувач GNU / Linux (зі щасливим обличчям):
"Я вже знаю, як скласти свій Gentoo"
Ботанік (зневажливо): «пфф, я створив власний дистрибутив ...»
Так, я можу створити власний дистрибутив Linux. Насправді в ньому я розробляю initramfs та ядро для вбудованого Linux. Створити операційну систему - це не те саме, що дистрибутив Linux. Перший набагато складніше, майже неможливий, другий, як ви вже сказали, може бути чим завгодно, навіть Ubuntu зі зміненим логотипом xD. Тож я б залишив це так:
Потужний користувач GNU / Linux (зі щасливим обличчям)
- Я вже знаю, як скласти свій Gentoo
Напівботанічний
- Pff, я пішов за Linux з нуля і зробив власний дистрибутив
Ботанік (з презирливим ставленням)
- pff, тому що я запрограмував ядро в асемблері та на C
Saludos!
Це цікаво для мене в очікуванні наступних розділів.
Я бачив цей підручник деякий час тому, він призначений для C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Дякую за посилання, я подивлюсь на нього.
Я хотів би, щоб операційна система на 100% сумісна з графікою AMD: /
Windows
ха-ха-ха в Windows Catalyst не підтримує OpenGL, хоча в Linux я не можу використовувати всю графічну потужність, я буду чекати, щоб побачити, що станеться!
просто почекайте, поки клапан знищить ринок
Чарівний, ідеальний, чудовий внесок, схоже на чудову серію дописів 🙂
Буа, я хотів би знати, як запрограмувати програму, щоб допомогти тобі, просто як спосіб практики з тими знаннями, які ти вчишся, і один допомагає. Наразі я залишаю вам девіз привертати увагу до проекту, як тільки ви закінчите його "Використовуйте NextDivel, порно виглядає однаково (або краще).", Ви змітаєте xD.
Mooooooolaaa !!!!
Дуже хороша стаття, але просто цікаво, чому ви не стежили за проектом Linux From Scratch?
привіт
Ну, Linux від Scratch - це добре, і ви можете сказати, що це ваш, але насправді дуже механічно:
-Завантажити шрифти
-Патч їх
-Скласти
-Встановіть
-Слідуючи
Тут навіть якщо результат зрештою гірший, ви можете сказати, що переглянули всі файли.
Як видно з мого попереднього коментаря, оскільки він не має однакового рівня складності. Крім того, Linux з нуля насправді не є, на відміну від його назви, створенням системи з нуля. Створення системи з нуля - це програмування самостійно, написання власного ядра, а не ядра Linux, по можливості навіть власного завантажувача замість grub, lilo, syslinux тощо. Хоча LFS - це не маленький подвиг і досить складний, він навіть не наближається до програмування власного ядра ...
Крім того, я погоджуюсь з AdrianArroyo Calle, що він занадто механічний, я колись його читав, і ви в кінцевому підсумку відмовляєтесь від шостої сторінки, вони також кажуть вам використовувати які версії пакетів, бо в іншому випадку інструкції не працюють (це свідчить про відсутність гнучкості , На мою думку ). Я думаю, що краще мати щось на власну ідею, скомпілювати потрібні пакети, навіть запрограмувати деякі, скомпілювати ядро Linux і спокійно.
Saludos!
uuuoooohh !! Я ніколи не захоплював пост так сильно, як цей.
Будь ласка, продовжуйте 😀
Я не знаю, що не так:
помилка: багатозавантажувальний заголовок не знайдено.
помилка, потрібно спочатку завантажити ядро
Якщо це якесь розраду, я зробив ту ж помилку. Спробуйте використати джерела, які є в GitHub, там помилка вже вирішена. У будь-якому випадку, я думаю, якщо ви зміните рядок grub.cfg з "multiboot /next/START.ELF" на "kernel /next/START.ELF", це може спрацювати. Я точно не знаю.
Перш за все, розкішний вхід 🙂
У мене така сама проблема із завантаженням ядра з grub. Навіть із використанням джерел GitHub або зміною мультизавантаження для ядра ...
помилка: багатозавантажувальний заголовок не знайдено.
помилка: немає завантаженого ядра
Ви використовуєте clang як компілятор? Змініть його на gcc
Ви пам’ятали використовувати сценарій компонування? Посилальнику (ld у нашому випадку) необхідно знати, куди у файл він збирається помістити кожну річ. У цьому випадку мультизавантажувальний заголовок повинен бути на початку.
Чи використовуєте ви систему CMake? Якщо ви використовуєте його, я думаю, він не зазнає невдачі.
Якщо у вас це не працює, я спробую знайти інше рішення.
[+100]
Просто здорово !!!
Це справді круто 🙂
Я знімаю шапку. Вражаючий пост. Вітаю.
Ого!
Було б чудово, якби ви могли відкрити програми, створені в HTML5 та Javascript, не використовуючи браузер, чи можливо це?
Я говорю про те, що вони схожі на рідні програми.
Тому було б легко запрограмувати цю операційну систему 😀
У цьому випадку я не збираюся це робити, тому що за цим потрібно набагато більше роботи, але існує операційна система під назвою "є", яка виконує те, що ви кажете. Насправді командним рядком є JavaScript, а вікна малюються за допомогою функцій JavaScript Canvas. Інженери Nintendo зробили це, і тепер це відкритий код.
http://code.google.com/p/es-operating-system/
Валла, дякую за інформацію 😀
Я подивлюсь
Той, хто може створити власну ОС, може спокійно померти, оскільки інтелектуальний рівень він повинен досягти за допомогою неї; Це змушує його обійтися небом чи пеклом.
Шматок проводки.
Поки що ніхто не знав, що створив лише те, що можна сказати як пристойну операційну систему, створену з нуля, навіть Linux Torvalds, як ви говорили на початку, оскільки це почалося з джерел Unix, а все інше є загальним автором для більшості ніж у однієї людини, життя дуже коротке, і починати з нуля немислимо для будь-кого, навіть якщо хочеться протилежного, це можна продемонструвати в багатьох помилках, допущених при копіюванні та вставці Linux Torvalds
Джерела unix закриті, використання minix ... це щось інше.
а хто зробив QDOS що?
були засновані на чомусь?
З того, що я бачу, хто не має власної операційної системи, це тому, що він цього не хоче, ха-ха-ха-ха.
Тепер серйозно, дуже цікаво! Багато чого виходить за рамки моїх обмежених знань програмування, але я з нетерпінням прочитаю інші частини цієї серії.
Дякую за допис!
Ви залишили мене з обличчям O_O ... без наміру недооцінювати внесок когось, це найбільший "профі", який я бачив останнім часом. З повагою.
Дуже хороша стаття, Адріане. Будь ласка, продовжуйте…
Ви жартуєте в День першого квітня?, Не майте на увазі "Емуляція Лінуса Торвальда: Створіть свою власну операційну систему з нуля". Я не думаю, що це важко для тих, хто продовжує кар'єру в якомусь технологічному інституті чи університеті; але для мене я початківець лучник (є ті, хто називає нас "Нуб", але я вважаю себе більш новачком дещо лінивим), що звучить як не ступання на сушу. У будь-якому випадку ЦЕЙ СТАТТЯ СТВОРИТЬ БАГАТО ДОПИТИМОСТІ І БЕЗ СУМНІШНОГО ЗАХОВЛЕННЯ ТА ПОВАГИ ДО ЇЇ РЕДАКТОРА, ВІТАЄМО; Перше, що я зроблю, це спробувати хоча б трохи зрозуміти цей цінний матеріал.
ДЯКУЄМО Адріан Арройо Калле, відмінна робота та благородна передача знань.
LEL Відмінний пост, так продовжуйте.
Que Grandioso post, esto es lo que extrañaba de desde linux. Que maravilla.
Чудовий пост, велике спасибі.
Я не зрозумів, що робить файл link.ld, хтось може мені це пояснити?
Файл link.ld повідомляє компоновщику (в даному випадку ld), де кожна частина коду повинна знаходитися в отриманому файлі. Ми також визначаємо точку входу, оскільки, оскільки у нас немає операційної системи, ми не можемо використовувати main як звичайну програму, в цьому випадку ми вибираємо функцію запуску.
Чудово всі ваші пости! Чекаємо 7! Що робити, якщо у мене є сумніви, наприклад, якщо я хотів лише запустити алгоритм, без ОС, як я можу знати, що я можу використовувати, а що ні C?
Якщо ви використовуєте його таким чином, ви не можете використовувати нічого з stdlib, що практично всі використовують (без malloc, free, printf, scanf, strcmp тощо). Все має бути реалізовано безпосередньо з пам'яті або ASM. Можливо, у вищій главі я покажу вам, як встановити бібліотеку C для операційної системи. Якщо ви використовуєте C ++, ви не можете використовувати винятки та оператори new та delete (і, звичайно, більше).
Я думаю це це може дати вам краще уявлення про те, як це зробити.
Привіт, близько 5 років тому я підписався на подібну публікацію і розробив мікроядро, яке запускається так само, має деякі аспекти для вдосконалення, але це може вас зацікавити, воно працює в захищеному режимі, виконує багатозадачність і виконує віртуалізацію пам'яті, нещодавно я працював на ньому драйвер диска та компакт-диск, щоб зробити його інсталяційним, а не просто запускати на живому компакт-диску ... Привіт.
Шановний, у мене виникає помилка під час виконання команди:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
link.ld: 5 синтаксичних помилок
collect2: помилка: ld повернув 1 статус виходу
link.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
У рядку 5 я не бачу помилки, хтось те саме?
Я працюю з віртуалізованим debian wheezy у virtualbox
додайте ";" в кінці * (. multiboot_header)
Відмінна ініціатива, я обов'язково дотримуватимусь розділів цього допису, маючи намір багато чому навчитися. Щиро дякуємо, що знайшли час навчити нас. Єдину деталь у цьому відношенні слід зазначити, що Лінус Торвальдс не є творцем жодної операційної системи, він створив ядро системи GNU / Linux (те, що використовувалося в інших ОС), що все ще гідне, але важливо зробити кредит Річарда Столлмана за створення більшості ОС.
Щиро дякую за внесок, і я сподіваюся, ви врахуєте моє спостереження.
Я певний час возився з темою, зацікавився, як тільки прочитав заголовок. але повідомлення продовжує отримувати
помилка: багатозавантажувальний заголовок не знайдено.
помилка, потрібно спочатку завантажити ядро
Я завантажив те, що беру в репо на github https://github.com/rkmax/GenyOS
Те саме трапляється і зі мною. Ви знайшли рішення?
питання, яке я почав вводити синтаксис, і рядок menuentry повідомляє мені, що команда не знайдена, хто міг би сказати мені чому
цим я займаюся
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: команду не знайдено
Вміст цього вмісту слід вводити не в командному рядку, а у створеному вами файлі, який називається grub.cfg
Відмінна стаття, дякую!
Вражаюче… !! це просто як відсутнє посилання.
Мені подобаються ваші підручники з Емуляції LInus Torvalds, але є один крок, який я не розумію, такий:
Тепер ми копіюємо START.ELF до / next всередині нашої папки, що імітує корінь нашої операційної системи. Ми переходимо до кореневої папки нашої нової операційної системи за допомогою консолі та перевіряємо наявність двох файлів: один /boot/grub/grub.cfg та інший /next/START.ELF.
Ми переходимо до верхнього каталогу та викликаємо утиліту створення ISO за допомогою GRUB, яка називається grub-mkrescue
Хтось може пояснити мені це: с
Просто для створення мінімального ISO, який GRUB може завантажити, ми копіюємо ядро в (/ ISO, будь-яку папку) /next/START.ELF та файл конфігурації GRUB в (/ ISO, будь-яку папку) / boot / grub / grub.cfg. Після цього ми ще не встановили GRUB на ISO, і існує утиліта, яка генерує ISO з папки та встановлює GRUB під назвою grub-mkrescue. Тоді, нарешті, у нас вийшов би завантажувальний ISO, у якому встановлений GRUB, який може читати конфігурацію, щоб пізніше правильно виконати START.ELF. Не знаю, чи пояснював я себе, але те, що ми робимо - це якась помилкова файлова система, за допомогою якої ми генеруємо ISO.
Буенісімо
Ну, дійсно подивіться на нову систему не стільки, але якщо вдосконалювати Linux, наприклад, створюючи екзонуклеус Linux із серверним компонентом, який за бажанням виконує роль мікроядра, тобто екзоструктуру з поведінкою мікроядра, яка була б супер і Linux.
Інша справа, що я не фахівець у програмуванні, лише кілька сирних с ++ та трохи Java, мені було б достатньо дати програмі ядра Linux модуль, випотрошивши її, змінивши і т.д.
Без сумніву, мені вже доводиться робити відпустку.
Цей хороший і в якій програмі ви його розробляєте та кодуєте
будь ласка, дайте мені таку відповідь
При компіляції з вашого git я отримую:
[jmponce @ build build] $ cmake ..
- Створення каталогу NextRoot
- Створення сценарію ISO
зробити DESTDIR = наступне встановлення
./iso.sh
- Знайдено кисень: / usr / bin / doxygen (знайдена версія "1.8.9")
- Налаштування виконано
- Генерація виконана
- Файли збірки були записані в: / home / jmponce / next-divel / build
[jmponce @ build build] $ make
Сканування залежностей цілі START.ELF
[7%] Побудова об’єкта ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Побудова об’єкта CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Пов’язання виконуваного файлу CXX START.ELF
/ usr / bin / ld: Несумісний /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a пропускається під час пошуку -lgcc
/ usr / bin / ld: не вдається знайти -lgcc
collect2: помилка: ld повернув статус виходу 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Невдалі інструкції для цілі 'src / START.ELF'
make [2]: *** [src / START.ELF] Помилка 1
CMakeFiles / Makefile2: 106: Невдалі інструкції для цілі 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Помилка 2
Makefile: 117: Невдача в інструкціях для цільового "всіх"
make: *** [усі] Помилка 2
Помилка полягає в тому, що він не може знайти llibgcc, оскільки у вас 64-розрядна версія, і в даний час система компіляції змушена використовувати 32-розрядну. Вам слід встановити пакет сумісності на вашому дистрибутиві або краще, використовуйте 32-розрядну систему.
У мене 32 біти, і я отримую ту саму помилку, ви маєте на увазі операційну систему чи архітектуру? мій - 64-бітний, але я використовую 32-бітну Ubuntu, не питайте, фінансові проблеми, з цим я все це кажу.
Відмінна тема, чекає на більший розмах. На ура
Чудово, я сподіваюся на більше
Привіт, я молодий посол, який хоче створити операційну систему, яка підтримує всі програми та платформи, щоб розробники не мусили мати потужних машин, додатків чи програм на ПК.
Ось чому мене цікавить цей пост, але коли я завантажую ваш git або намагаюся створити його, все працює, доки я не виконаю команду ./iso.sh або grub-mkrescue -o nextdivel.iso nextroot, ви отримуєте цю помилку
"Grub-mkrescue: попередження: Ваш xorriso не підтримує" –grub2-boot-info ". Деякі функції вимкнено. Використовуйте xorriso 1.2.9 або новішої версії ..
grub-mkrescue: попередження: Ваш xorriso не підтримує "–grub2-boot-info". Ваше зображення ядра завелике. Завантаження диска вимкнено. Використовуйте xorriso 1.2.9 або новішу версію .. »
Я справді не маю уявлення, оскільки я багато знаю про програми та веб-сайти, але я нічого не знаю про grub
Можливо, вам доведеться оновити програму xorriso на вашому дистрибутиві. Який дистрибутив та версію ви використовуєте?
Я використовую xubuntu 14.04lts і намагаюся запустити xorriso, але оболонка повідомляє мені, що він не може його знайти, і я отримую apt-get install xorriso, хоча я щиро очікував певної відповіді, оскільки мав поганий досвід встановлення речей, яких я не знаю в linux hehe . Я оновлю його зараз і розповім вам, що сталося
Потім встановіть xorriso із програмного центру або просто з терміналу зробіть "sudo apt-get install xorriso"
Я вже зробив все, що ви мені сказали, і з git, і з моїм я отримую цей xorriso 1.3.2: маніпулятор файлової системи RockRidge, проект libburnia.
Струм приводу: -outdev 'stdio: nextdivel.iso'
Поточний носій: файл stdio, що перезаписується
Стан носія: порожній
Підсумок медіа: 0 сеансів, 0 блоків даних, 0 даних, 1901 м безкоштовно
Додано до ISO-образу: каталог '/'='/tmp/grub.OEqSzV'
xorriso: ОНОВЛЕННЯ: 546 файлів додано за 1 секунду
xorriso: ПОМИЛКА: Не вдається визначити атрибути вихідного файлу '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Немає такого файлу або каталогу
xorriso: ОНОВЛЕННЯ: 546 файлів додано за 1 секунду
xorriso: aborting: -abort_on "FAILURE" виявлено "FAILURE"
і вельвет, я не розумію, що моя структура /nextroot/boot/grub/grub.cfg та nextroot / next / START.ELF
Дякую, я готовий рухатися вперед, друг мені допоміг і сказав, що я зробив неправильно, це організація каталогу, тому я це врегулював і все.
Вибачте, чи можете ви сказати мені, яку процедуру ви виконували, оскільки я не отримую помилки для завантаження: такого файлу чи каталогу немає
немає завантажувального пристрою.
На здоров’я! Я збирався попросити вас про послугу, якщо б ви могли надіслати мені електронний лист із тим, що ви тут пояснили, я трохи заплутався, і мені потрібно порівняти те, що я маю, з тим, що ви пояснюєте, можливо, мені не зрозуміло, створення grub. cfg робиться в терміналі gcc чи де саме? велике спасибі друже!
Ви створюєте файл grub.cfg за допомогою будь-якого текстового редактора, і ви повинні зберегти його у PROJECT_FOLDER / boot / grub / grub.cfg
Привіт Адріане, перш за все вітаю вас і дякую за ваш внесок.
Ви знаєте, що я роблю це для практики, і я почав складати це разом із вашими репетиторами, проте після початку я виявив першу помилку
$ як -o kernel.o -c kernel.asm
bash: as: команду не знайдено ...
Подібні команди:
"sa"
'змінний струм'
Я працюю над Fedora 20, і я не можу знайти рішення з цього приводу, я був би вдячний вашим вказівкам щодо того, чи варто мені щось змінювати в ГКП чи на газі
заздалегідь спасибі
Ви повинні встановити GAS, щоб я міг побачити код помилки. У мене немає Fedora під рукою, але теоретично, якщо ви все-таки встановите gcc-c ++, ви встановите весь пакет GCC та GNU, як зазвичай це поставляється з ним.
Я з вами, я знаю щось про C ++, C # (хоча цей останній не надто корисний у цьому питанні) погана річ у тому, що мені все ще бракує досвіду, я ніколи не маю мови на мові C, ваша публікація чудова, я не маю багато чого сказати, якщо встигну побачити. Дякую.
Щиро дякую за велику допомогу….
Я люблю Linux, це найкращий район, який існує, правда для мого Windows - це сміття, тому що я знаю, що творець Linux - це творець Windows
Привіт, я отримую повідомлення про помилку в grub
помилка: file /next/START.ELF Не знайдено
помилка: спочатку потрібно завантажити ядро
Не могли б ви допомогти мені і погуглили, але я не можу знайти
Будь ласка, як я можу змусити його відображати повідомлення ПРИВІТИ СВІТ? Я новачок і досі недостатньо знаю
У мене трапляється таке:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
/ usr / bin / ld: kernel.o: переміщення R_X86_64_32 проти символу `стек 'не може використовуватися при створенні об'єкта PIE; перекомпілювати з -fPIE
/ usr / bin / ld: остаточне посилання не вдалося: непредставлений розділ на виході
collect2: помилка: ld повернув 1 статус виходу