LINUX.ORG.RU

Первый Live CD Redox OS

 , ,


4

5

Доступен первый тестовый образ Live CD Redox OS — операционной системы, написанной на Rust.

Информация:

  • Рекомендуется использовать VirtualBox или QEMU.
  • Рекомендуемый объем оперативной памяти: 1024 МБ, дисковое пространство не требуется.
  • Для установки на USB-носитель используйте isohybrid.
  • Во избежание проблем с modesetting установлено разрешение 1024x768. В будущем будет доступен выбор режима дисплея.
  • Для выбора виртуального дисплея используются клавиши F1—F4:
    • F1 — отладочная консоль;
    • F2, F3 — виртуальные терминалы;
    • F4 — Orbital GUI.
  • Единственные поддерживаемые сетевые адаптеры: Intel 8254x и RTL8169, первый доступен в VirtualBox и QEMU.

Что протестировать:

  1. Orbital GUI и типичные команды Unix в эмуляторе терминала.
  2. Сеть, если доступна. Браузер неполноценен, поддержка большей части сайтов пока не ожидается.

Пожалуйста, сообщайте о любых неожиданностях, падениях и зависаниях в issues проекта.

>>> Исходный код

>>> livedisk.iso

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 3)

ТС, может напишешь команду для QEMU, а то на мою

sudo qemu-system-x86_64 -m 2048 -enable-kvm -hda /mnt/disk_e/redox -cdrom /home/gibs/Downloads/Rust/livedisk.iso -boot d

какая-то лажа сыпется.

Gibson1980 ★★
()

Где почитать технические подробности про эту систему? Скриншоты есть?

curufinwe ★★★★★
()

посмотрел также реализацию процессов в ядре
функция clone занимает - внимание - 400 строк
функция exec - 300 строк

вообще код читабельный конечно
стартапы обычно этим отличаются
в ридми они кстати пишут, что не хотели бы создавать систему, которую будет понимать только тот, кто ее придумал, а последующие контрибьютеры - уже нет
т.е. одно из основных требований к коду - прозрачность

kto_tama ★★★★★
()
Последнее исправление: kto_tama (всего исправлений: 2)
Ответ на: комментарий от q0tw4

Упадание — результат паники, при чем тут ансейф? Не сегфолт же, лол)

mersinvald ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Вообще-то, судя по новости, ReactOS уже давно умеет намного больше, чем сабж.

anonymous
()

также представляет интерес реализация в ядре базовых структур

Файловая структура
pub struct File {
    /// The scheme that this file refers to
    pub scheme: SchemeId,
    /// The number the scheme uses to refer to this file
    pub number: usize,
    /// If events are on, this is the event ID
    pub event: Option<usize>,
}
struct Handle {
    path: &'static [u8],
    data: &'static [u8],
    mode: u16,
    seek: usize
}
pub struct InitFsScheme {
    next_id: AtomicUsize,
    files: BTreeMap<&'static [u8], (&'static [u8], bool)>,
    handles: RwLock<BTreeMap<usize, Handle>>
}
pub struct SchemeList {
    map: BTreeMap<SchemeId, Arc<Box<Scheme + Send + Sync>>>,
    names: BTreeMap<SchemeNamespace, BTreeMap<Box<[u8]>, SchemeId>>,
    next_ns: usize,
    next_id: usize
}


Память
pub struct Memory {
    start: VirtualAddress,
    size: usize,
    flags: EntryFlags
}

Процесс
/// A context, which identifies either a process or a thread
#[derive(Debug)]
pub struct Context {
    /// The ID of this context
    pub id: ContextId,
    /// The ID of the parent context
    pub ppid: ContextId,
    /// The real user id
    pub ruid: u32,
    /// The real group id
    pub rgid: u32,
    /// The real namespace id
    pub rns: SchemeNamespace,
    /// The effective user id
    pub euid: u32,
    /// The effective group id
    pub egid: u32,
    /// The effective namespace id
    pub ens: SchemeNamespace,
    /// Status of context
    pub status: Status,
    /// Context running or not
    pub running: bool,
    /// CPU ID, if locked
    pub cpu_id: Option<usize>,
    /// Context is halting parent
    pub vfork: bool,
    /// Context is being waited on
    pub waitpid: Arc<WaitMap<ContextId, usize>>,
    /// Context should handle pending signals
    pub pending: VecDeque<u8>,
    /// Context should wake up at specified time
    pub wake: Option<(u64, u64)>,
    /// The architecture specific context
    pub arch: arch::context::Context,
    /// Kernel FX - used to store SIMD and FPU registers on context switch
    pub kfx: Option<Box<[u8]>>,
    /// Kernel stack
    pub kstack: Option<Box<[u8]>>,
    /// Executable image
    pub image: Vec<SharedMemory>,
    /// User heap
    pub heap: Option<SharedMemory>,
    /// User stack
    pub stack: Option<Memory>,
    /// User Thread local storage
    pub tls: Option<Tls>,
    /// User grants
    pub grants: Arc<Mutex<Vec<Grant>>>,
    /// The name of the context
    pub name: Arc<Mutex<Vec<u8>>>,
    /// The current working directory
    pub cwd: Arc<Mutex<Vec<u8>>>,
    /// Kernel events
    pub events: Arc<WaitQueue<Event>>,
    /// The process environment
    pub env: Arc<Mutex<BTreeMap<Box<[u8]>, Arc<Mutex<Vec<u8>>>>>>,
    /// The open files in the scheme
    pub files: Arc<Mutex<Vec<Option<File>>>>
}

Схема - уровень привилегий
pub struct RootScheme {
    scheme_ns: SchemeNamespace,
    scheme_id: SchemeId,
    next_id: AtomicUsize,
    handles: RwLock<BTreeMap<usize, Arc<UserInner>>>
}

Пользователь
pub struct UserInner {
    root_id: SchemeId,
    handle_id: usize,
    flags: usize,
    pub scheme_id: AtomicSchemeId,
    next_id: AtomicU64,
    context: Weak<RwLock<Context>>,
    todo: WaitQueue<Packet>,
    fmap: Mutex<BTreeMap<u64, (Weak<RwLock<Context>>, usize)>>,
    done: WaitMap<u64, usize>
}

kto_tama ★★★★★
()
Ответ на: комментарий от tailgunner

А ну да. Грабли в виде удобного опасного метода в секурном языке. Там в доках даже сказано «Instead, prefer to use pattern matching». А вообще по хорошему надо было бы назвать его пострашнее, чтоб в глаза бросался при вычистке кода.

q0tw4 ★★★★
()
Ответ на: комментарий от EXL

EXL ★★★ (02.12.2016 14:37:54)

Простите, пожалуйста, у вас секс давно был? :-)

anonymous
()
Ответ на: комментарий от anonymous

Я так понимаю, вопрос не ко мне, но все таки вот. После запуска которого система благополучно шмякнулась.

Gibson1980 ★★
()
Последнее исправление: Gibson1980 (всего исправлений: 1)
Ответ на: комментарий от q0tw4

Грабли в виде удобного опасного метода в секурном языке

И почему же ты считаешь его опасным?

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

Какой еще unsafe?

Упомянутый в одном из сообщений треда. Не тобой.

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

не пропарсил просто сразу формат написанного

q0tw4 ★★★★
()
Ответ на: комментарий от Twissel

И чем же мы поможем? Можем только словами: давайте пилите!

Jedi-to-be ★★★★
()

в калькуляторе баг: после нажатия на = следующая же цифра должна стирать результат, а не дописываться к нему. И запретите вводить буквы.

q0tw4 ★★★★
()
Последнее исправление: q0tw4 (всего исправлений: 1)

Чего все ехидничают-то? Отличный проект для исследования реальных возможностей раста, пилят ради процесса и без каких-либо высоких целей. Вы ещё Gimp начните критиковать за то, что этот полигон для тестирования жтк неюзабелен в качестве графического редактора.

anonymous
()

Мне кажется, нужно. Хотя бы в качестве proof of concept. Только зачем ей столько RAM на практически голую (?) ОС? Настораживает просто.

fludardes ★★
()
Ответ на: комментарий от Dmitry_Sokolowsky

Пулы же. Лучше сразу выделять память большими блоками чтобы не было фрагментации.

anonymous
()
Ответ на: комментарий от fludardes

Выделяемая память != потребляемая же. Всегда полезно заалоцировать впрок, производительности для.

anonymous
()
Ответ на: комментарий от q0tw4

И запретите вводить буквы.

Вы к кому обращаетесь, болезненный вы наш, к голосам в голове?

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

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

Rust позиционируют как язык для системного программирования, тут же хорошо видно насколько упороты и невменяемы растоманы

anonymous
()
Ответ на: комментарий от Manhunt

Вся суть атеизма.

А вся суть религиозников, исходя из твоего же комментария - это делать глубокомысленные обобщения из единственного случая.

hobbit ★★★★★
()
Ответ на: комментарий от bitfroster

Хотел зайти написать не взлетит, но сейчас закрались сомнения.

Взлетит. У Дениса Попова же взлетело, даже по телеку показали

anonymous
()
Ответ на: комментарий от Deleted

сожрано 623mb оперативки.

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

anonymous
()

Ядро современной ОС общего назначения - это миллионы строк кода. Неужели сами всё написали? Ай маладца!

Vinni_Pooh ★★★★★
()
Ответ на: комментарий от quantum-troll

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

q0tw4 ★★★★
()
Ответ на: комментарий от Deleted

Выдал. Рабочий стол показывает и все. В qemu работает.

curufinwe ★★★★★
()
Ответ на: комментарий от Deleted

Прости и забудь

Не могу. Это даже больнее измены любимой девушки.

EXL ★★★★★
()
Ответ на: комментарий от Vinni_Pooh

Ядро современной ОС общего назначения - это миллионы строк кода

80% которого - драйверы. Которых в Redox не менее двух %)

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Да ладно вам. Шесть дней в неделю делаю оплачиваемую работу в гимпе. Чё там неюзабельного? 80% операций делается почти в точности, как в шопе. Некоторые функции реализованы лучше, чем в шопе. Некоторых в шопе вообще нет, а в гимпе есть и они весьма полезны и востребованы. Или шоп тоже неюзабельный? Пустые придирки, в общем.

rechnick ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.