Existe uma maneira de criar uma unidade de disco fictícia?


4

Para alguns testes, preciso acessar algo como / dev / sda no meu programa.

Mas não posso fazer isso no meu próprio disco rígido. Você sabe o porquê: D

Existe uma maneira de criar / dev / sdb usando RAM ou um arquivo em outro disco? Eu só preciso que ele esteja lá e aja como um disco enquanto o estiver usando, não importa o quê.

Eu sei que posso usar máquinas virtuais para isso, mas isso implica em instalar um linux. Isso consome tempo e não é tão elegante.

Respostas:


3

Algo como / dev / sdX pode ser difícil de fazer, mas você pode usar uma unidade USB para atender a essa necessidade (eu tenho uma solução de hacker para você)

Em um sentido mais geral, você pode criar um dispositivo de bloco criando uma partição (dd se = / dev / zero de = file.img count = 102400) e montando-o como um dispositivo de loopback (losetup / dev / loopX file.img) . Você pode tratar o dispositivo de loop como um dispositivo de bloco (por exemplo, use o FDISK). Se você deseja acessar partições, use partx -a / dev / loopX

Depois de criar seu dispositivo de loopback, parece que você pode criar links simbólicos para ele, então ln -s / dev / loop0 / dev / sdz ln -s / dev / loop0p1 / dev / sdz1

O que fornecerá a você / dev / sdz e / dev / sdz1 (os quais, é claro, se referem basicamente ao arquivo de loopback que você criou).


Muito obrigado, funcionou totalmente. Eu ia usar isso em um programa C com chamadas de leitura / leitura / gravação / abertura / fechamento, e funcionou como um encanto!
vfsoraki

1

Sim, você pode criar um disco RAM, aqui estão as instruções de como fazer isso:

Como criar um disco RAM no Linux


Eu li esse link. Suponho que ele cria um sistema de arquivos, mas eu queria algo como um disco bruto, por exemplo, / dev / sdz não / dev / sdz1. Enfim, também foi uma boa coisa para ler e aprender. Obrigado!
vfsoraki

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.