Cooperative Linux

Cooperative Linux
Autor original Dan Aloni
Desenvolvedor Comunidade
Lançamento Inicial 25 de Janeiro de 2004
Lançamento final
0.7.9 [1] / 9 de Abril de 2011[2]
Sistema Operacional Windows NT family
Tipo Virtualização de plataforma
Licença Licença Pública Geral GNU
Website www.colinux.org Edit this at Wikidata

Cooperative Linux, abreviado como coLinux, é um software que permite o Microsoft Windows e o Kernel Linux serem executados simultaneamente na mesma máquina.[3]

Cooperative Linux utiliza o conceito the Máquina Virtual Cooperativa (CVM). Comparado à máquinas virtuais tradicionais, a CVM compartilha os recursos que já existem no Sistema Operacional hospedeiro. Em máquinas virtuais hospedeiras tradicionais, os recursos são virtualizados para todos os sistemas operacionais (visitantes). O CVM dá a ambos os sistemas operacionais completo controle da máquina hospedeira enquanto que máquinas virtuais tradicionais configuram cada sistema operacional visitante para um estado não privilegiado de acessar a máquina real.

Visão Geral

Synaptic e nautilus sendo executados no Windows

O termo "cooperativo" é usado para descrever duas entidades trabalhando em paralelo. Na prática o Cooperative Linux transforma os kernels dos dois sistemas operacionais em duas grandes corrotinas. Cada kernel tem seu próprio contexto de CPU completo e espaço de endereço, e cada kernel decide quando devolver o controle de volta ao seu parceiro.

Apesar disso, enquanto ambos os kernels em teoria possuem acesso completo ao hardware real, o hardware de computadores modernos não é feito para ser controlado por dois sistemas operacionais ao mesmo tempo. Logo, o kernel hospedeiro permanece com o controle do hardware real e o kernel visitante possui drivers especias para se comunicar com o hospedeiro e apresentar vários dispositivos importantes para o sistema operacional visitante. O hospedeiro pode ser qualquer kernel de sistema operacional que exporte primitivos básicos que permitam que o driver portátil do Cooperative Linux seja executado em modo CPL0 (camada 0) e aloque memória.

História

Dan Aloni originalmente começou o desenvolvimento do Cooperative Linux como um projeto de pesquisa baseado em trabalho similar com o User-mode Linux.[4][5] Ele anunciou o desenvolvimento em 25 de Janeiro de 2004.[6] Em Julho de 2004 ele apresentou um artigo no Simpósio Linux. [7] O código fonte foi liberado pela Licença Pública Geral GNU. Desde então outros desenvolvedores tem contribuído com vários patches e adições ao software.[8]

Comparações

O Cooperative Linux é significantemente diferente de uma virtualização x86 completa, que costuma funcionar executando o sistema operacional visitante de um modo menos privilegiado que o do kernel hospedeiro. Em contraste, o Cooperative Linux executa um kernel Linux especialmente modificado que é Cooperativo visto que assume responsabilidade por dividir recursos com o kernel NT e não investigar condições de corrida.

Distribuição

  1. ↑ "Cooperative Linux Documentation". Archived from the original on 2023-05-13. Retrieved 2020-08-08.
  2. ↑ "Cooperative Linux Documentation". Archived from the original on 2023-05-13. Retrieved 2020-08-08.
  3. ↑ «Open source contributions | Dan Aloni». blog.aloni.org. Consultado em 8 de janeiro de 2022
  4. ↑ «Open source contributions | Dan Aloni». blog.aloni.org. Consultado em 8 de janeiro de 2022
  5. ↑ «Cooperative Linux Active Development Team Members». www.colinux.org. Consultado em 8 de janeiro de 2022
  6. ↑ «LKML: Dan Aloni: [ANNOUNCE] Cooperative Linux». lkml.org
  7. ↑ «Dan Aloni paper presented July 2004 at Linux Symposium» (PDF). Consultado em 30 de março de 2008. Arquivado do original (PDF) em 30 de setembro de 2018
  8. ↑ Aloni, Dan (17 de novembro de 2021), da-x/colinux, consultado em 8 de janeiro de 2022
Ubuntu sendo executado com o coLinux
speedLinux sendo executado com o coLinux

A maioria das mudanças no patch do Cooperative Linux estão na tree i386—a única arquitetura suportada pelo Cooperative até a época desta escrita. As outras mudanças são em grande parte adições de drivers virtuais: cobd (dispositivo de bloco), conet (rede), e cocon (console). A marioria das mudanças na tree i386 envolvem a inicialização e código de configuração. É um objetivo do design de kernel do Cooperative Linux de permanecer o mais fiel possível ao kernel autônomo i386, logo todas a mudanças são localizadas e minimizadas o máximo possível.

O pacote coLinux instala uma portabilidade do kernel Linux e um dispositivo de rede virtual e pode executar simultaneamente sob uma versão do sistema operacional Windows como o Windows 2000 ou Windows XP. Ele não usa uma máquina virtual como o VMware.

Debian, Ubuntu, Fedora and Gentoo são especialmente populares entre usuários do coLinux.

Devido a estrutura particularmente incomum do hardware virtual, instalar distribuições Linux sob o coLinux é geralmente difícil. Logo, usuários na maioria das vezes usam ou uma instalação Linux existente numa partição real ou uma imagem pronta de sistema de arquivo distribuída pelo projeto. As imagens de sistema de arquivo são feitas por vários métodos diferentes, incluindo pegar imagens de um sistema Linux normal, achar meios de fazer executar instaladores com o hardware estranho, construir instalações à mão usando o gerenciador de pacotes ou simplesmente atualizando imagens existentes usando ferramentas como yum e apt. Um jeito mais fácil de conseguir uma imagem de sistema de arquivo atualizada é usar o QEMU para instalar o Linux e "converter" a imagem removendo os primeiros 63 blocos de 512 bytes como descrito no wiki do coLinux.

Já que o coLinux não possui acesso ao hardware de gráficos nativos, X Window ou Servidores X não irão executar sob o coLinux diretamente, mas pode ser instalado um Servidor X sob o Windows, como o Cygwin/X ou Xming e usar o KDE ou o GNOME e uase qualquer outro aplicativo ou distribuição Linux. Todos estas questões são corrigidas usando distribuições com base em coLinux como o andLinux, baseados no Ubuntu, ou o TopologiLinux, baseado no Slackware.

Distribuições dedicadas

Algumas distribuições foram montadas especificamente para funcionar com o coLinux.

Hardware emulado

  • Rede ethernet usando TAP, PCAP, NDIS e SLiRP.

Limitações

  • Ainda não suporta Windows ou Linux 64-bit (nem utiliza mais que 4GB de memória), mas uma portabilidade está em desenvolvimento pela comunidade.
  • Sem suporte para multiprocessador (SMP). Aplicativos Linux e o kernel subjacente são capazes de usar somente um CPU.[3]

Referências

  1. ↑ «Open source contributions | Dan Aloni». blog.aloni.org. Consultado em 8 de janeiro de 2022
  2. ↑ «Cooperative Linux Active Development Team Members». www.colinux.org. Consultado em 8 de janeiro de 2022
  3. ↑ «Open source contributions | Dan Aloni». blog.aloni.org. Consultado em 8 de janeiro de 2022
  4. Documentação do Cooperative Linux. Arquivada a partir do original em 2023-05-13. Recuperada em 2020-08-08.
  5. Website principal do coLinux.
  6. Página principal do coLinux..
  7. Contribuições open source | Dan Aloni.
  8. Membros de desenvolvimento ativos do time Cooperative Linux
  9. LKML: Dan Aloni: (ANUNCIA) Cooperative Linux
  10. Artigo de Dan Aloni apresentado em Julho de 2004 no Simpósio Linux
  11.  Aloni, Dan (2021-11-17), da-x/colinux, Recuperado em 2022-01-08
  12. Reed, Michael (6 de setembro de 2011). «andLinux: Seamlessly Run Linux Applications on Windows». Linux Journal (em inglês). Consultado em 6 de outubro de 2023
  13. So bringen Sie Linux unter Windows zum Laufen
  14. FAQ
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.
Erro de citação: Elemento <ref> definido em <references> não tem um atributo de nome.

Predefinição:Unix–Windows interoperability

Predefinição:Unix–Windows interoperability

Interoperabilidade Unix-Windows
Subsistemas do tipo Unix •Cygwin • Substema Microsoft POSIX• Serviços Windows para UNIX (Interix) • Subsistema Windows para Linux (WSL 1)
Ambientes de desenvolvimento e shells DJGPP • Hamilton C shell • MinGW (MSYS) • Mingw-w64 (MSYS2) • MKS Toolkit • PowerShell • UWIN
Portabilidades de utilidades do tipo Unix para Windows GnuWin32 • UnxUtils
Ambientes Windows runtime para nix Wabi • Willows Toolkit for UNIX • Wine (WINE@Etersoft, Cedega, CrossOver, Darwine, Proton)
Software de plataforma de virtualização Cooperative Linux (TopologiLinux) • Merge • Subsistema Windows para Linux (WSL 2)
Relacionado APIW • Captive NTFS • NDISwrapper • Windows Interface Source Environment • DXVK

Predefinição:Linux kernel

Kernel Linux
Organização Kernel Fundação Linux • Instituto Linux Mark • Lei de Linus • Debate entre Tanenbaum e Torvalds • Tux • Disputas SCO • Linaro • GNU GPL v2 • menuconfig • Arquiteturas de computador suportadas • Histórico de versionamento • Criticismo
Suporte Desenvolvedores • The Linux Programming Interface • kernel.org • LKML • Conferências Linux • Usuários • (Grupo de Usuários Linux (LUG))
Pessoas Werner Almesberger • H. Peter Anvin • Jens Axboe • Moshe Bar • Suparna Bhattacharya • Andries Brouwer • Rémy Card • Alan Cox • Matthew Garrett • Avi Kivity • Con Kolivas • Greg Kroah-Hartman • Benson Leung • Robert Love • David S. Miller • Ingo Molnár • Andrew Morton • Hans Reiser • Rusty Russell • Shuah Khan • Linus Torvalds • Theodore Ts'o • Stephen Tweedie • Harald Welte • Chris Wright
Técnico Debugging CRIU • ftrace • kdump • Oops de kernel Linux • SystemTap • BPF
Inicialização vmlinux • System.map • dracut • initrd • initramfs
ABIs Linux Standard Base • x32 ABI
APIs Kernel Interface de Chamada do Sistema POSIX (ioctl • select • open • read • close • sync • …) • Linux-only (futex • epoll • splice • dnotify • inotify • readahead • …)
In-Kernel ALSA • Crypto API • io_uring • DRM • kernfs • Barreira de memória • New API • RCU • Video4Linux • IIO
Espaço de usuário Daemons, sistemas de arquivo bpffs • configfs • devfs • devpts • debugfs • FUSE • hugetlbfs • pipefs • procfs • securityfs • sockfs • sysfs • tmpfs • systemd (udev) • Kmscon • binfmt_misc
Bibliotecas Wrapper Biblioteca padrão do C (glibc • uClibc • Bionic (libhybris) dietlibc • EGLIBC • klibc • musl • Newlib) libcgroup • libdrm • libalsa • libevdev • libusb • liburing
Componentes Módulos do Kernel • BlueZ • cgroups • [./Https://en.wikipedia.org/wiki/Linux_console Console] • bcache • Mapeador de dispositivos • dm-cache • dm-crypt • DRM • EDAC • evdev • Fundidor de mesma página de Kernel (KSM) • LIO • Framebuffer • LVM • Driver KMS • Netfilter • Netlink • nftables • Escalonador de rede • perf • SLUB • zram • zswap

Escalonamento de processos e de I/O: • Escalonador Completamente Justo (CFS) • Primeiro Prazo Virtual Disponível (EEVDF) • Escalonador Noop • Escalonador O(n) • Escalonador O(1) • SCHED_DEADLINE • SCHED_FIFO • SCHED_RR

Módulos de Segurança: AppArmor • Exec Shield • seccomp • SELinux • Smack • Tomoyo Linux • Linux PAM

Drivers de dispositivo (802.11 • graphics) • Dispositivo Bruto

initramfs • KernelCare • kexec • kGraft • kpatch • Ksplice

Variantes Principal (Kernel do Linux • Linux-libre) • Computação de alto desempenho (INK • Compute Node Linux • SLURM) • Computação em tempo real (RTLinux • RTAI • Xenomai • PREEMPT_RT) • MMU-less (μClinux • PSXLinux)
Virtualização Hipervisor (KVM • Xen) • Virtualização em nível de sistema operacional (Linux-VServer • Lguest • LXC • OpenVZ) • Outros (L4Linux • Linux modo de usuário • MkLinux • coLinux)
Adoção Alcance de uso Área de trabalho • Embutido • Jogos • Cliente fino: (LTSP) • Servidor: (LAMP • LYME-LYCE • Dispositivos)
Adotantes Lista de adoção do Linux
Portal Linux • Portal de Software livre e de código aberto • Categoria