Creare un dispositivo di block in RAM

Uno dei miei compiti quotidiani è quello di creare un'image di avvio di una pendrive USB con il nostro software su di esso. L'image deve essere composta da due partizioni, prima formattata con FAT32 e secondo con EXT3. Sul primo abbiamo messo il kernel Linux e un piccolo script di avvio che il bootloader sul dispositivo che stiamo per avviare con le letture all'avvio.

Nella seconda partizione abbiamo messo i nostri rootfs.

  • Aggregazione delle NIC per ricevere solamente le connessioni su Linux
  • solaris vs linux per i server di produzione (molti server come decine in un cluster)
  • Cosa hai usato Makefiles per (oltre a build l'automazione)
  • la configuration di upload anonimo vsftpd. Crea file ma si blocca a 0 byte
  • La configuration IP del livello del kernel non funziona nel kernel Linux
  • soft / fake raid in linux
  • Ora, ecco come lo faccio:

    1. inserire un pendrive USB nel mio comp. Linux. Scopri il suo file di dispositivo (qui supponiamo / dev / sdx)

    2. zero il primo 600 MB di esso: dd se = / dev / zero di = / dev / sdx bs = count 1M = 600

    3. Creare le due partizioni, primi 10 MB e secondo 500 MB: sfdisk / dev / sdx –unit S << EOF, 20000, c, 1000000,83 EOF

      mkfs.vfat / dev / sdx1 mkfs.ext3 / dev / sdx2

    (che supponendo che la dimensione del settore sia di 512 byte!)

    1. copiare il kernel e lo script di avvio su / dev / sdx1
    2. Disimballare RootFS pre-compilato in / dev / sdx2
    3. Copia l'image pronta da USB pendrive al nostro HDD: dd if = / dev / sdx di = usb.img bs = 1M count = 520
    4. Comprimere e submit alle persone che provano questo software.
    5. la gente poi scompattare, flash loro dischi USB con dd if = usb.img di = / dev / sdx inserire nei loro dispositivi e test.

    Ora, tutto questo funziona. Il miglioramento evidente è quello di creare uno script che farà tutto questo in modo automatico. Questo può anche essere fatto, ma rimarrà un passo manuale: inserire il pendrive USB.

    Penso che al posto del disco USB reale possiamo usare un dispositivo di block in RAM. Questo non solo eliminerebbe il passaggio manuale dell'inserimento del disco USB, ma sarebbe anche più veloce.

    Quello che mi serve è un block semplice in RAM. Uno che può essere suddiviso in partizioni proprio come un USB pendrive fisico può.

    Ho solo studiato questo argomento e mi sembra che le opzioni sono solo

    1. tmpfs e ramfs, che ovviamente non mi adattano
    2. ramdisk e il module kernel 'brd' che, quando caricato, crea una serie di 'partizioni': / dev / ram [0-15]

    e ciascuno di essi può essere formattato e utilizzato in modo individuale, ma come ho detto – voglio un block semplice in RAM che avrei poi diviso in due partizioni di 10MB e 500MB, e da where sarei poi in grado di gg un'image a un file sul mio HDD.

    Quali sono le mie opzioni?

  • Posso utilizzare dmraid invece di md (mdadm) per creare software RAID-1 e RAID-1 + 0 volumi?
  • Come posso cedere i privilegi e ripulire ancora il mio file pid in / var / run?
  • bind il assembly sola lettura usando fstab?
  • Firewall: consente tutto il traffico da fonti autenticate via. una connessione ssh aperta
  • CPU ?: Non rispondere
  • Il colpire questo command in unix ha un limite di tasso?
  • One Solution collect form web for “Creare un dispositivo di block in RAM”

    Basta usare brd e creare un dispositivo brd (ram0). Utilizza quel dispositivo al posto del tuo drive usb. È ansible suddividerlo utilizzando sfdisk, utilizzare le partizioni e quindi utilizzare dd per disfare i contenuti da file.

    Non è necessario utilizzare un file system per dispositivo BRD.

    Oppure (anche se poco hacky) è ansible utilizzare tmpfs, creare file di image e utilizzare come dispositivo loop. Potrebbe essere il modo più semplice per completare ciò che vuoi. Come bonus, hai l'image pronta e puoi caricarla subito. Non c'è bisogno di gg.

    # Create mountpoint for tmpfs mkdir /tmp/tmpfs # Mount tmpfs there mount -t tmpfs none /tmp/tmpfs # Create empty file of 600MB # (it creates 599MB hole, so it does not # consume more memory than needed) dd if=/dev/zero of=/tmp/tmpfs/img.bin bs=1M seek=599 count=1 # Partition the image file cfdisk /tmp/tmpfs/img.bin # Create loop block device of it (-P makes kernel look for partitions) losetup -P /dev/loop0 /tmp/tmpfs/img.bin # Create filesystems mkfs.vfat /dev/loop0p1 mkfs.ext4 /dev/loop0p2 # Now it's your turn: # mount loop0p1 and loop0p2 and copy whatever you want and unmount it # detach the loop device losetup -d /dev/loop0 # May i present you with your image ... ls -al /tmp/tmpfs/img.bin 

    Modifica per soddisfare le tue esigenze.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.