David Haller wrote:
> Hello,
>
> On Mon, 15 Jun 2020, Dale wrote:
> [..]
>> While I'm at it, when running dd, I have zero and random in /dev. Where
>> does a person obtain a one? In other words, I can write all zeros, I
>> can write all random but I can't write all ones since it isn't in /dev.
>> Does that even exist? Can I create it myself somehow? Can I download
>> it or install it somehow? I been curious about that for a good long
>> while now. I just never remember to ask.
> I've wondered that too. So I just hacked one up just now.
>
> ==== ones.c ====
> #include <unistd.h>
> #include <stdlib.h>
> #include <stdio.h>
> static unsigned int buf[BUFSIZ];
> int main(void) {
> unsigned int i;
> for(i = 0; i < BUFSIZ; i++) { buf[i] = (unsigned int)-1; }
> while( write(STDOUT_FILENO, buf, sizeof(buf)) );
> exit(0);
> }
> ====
>
> Compile with:
> gcc $CFLAGS -o ones ones.c
> or
> gcc $(portageq envvar CFLAGS) -o ones ones.c
>
> and use/test e.g. like
>
> ./ones | dd of=/dev/null bs=8M count=1000 iflag=fullblock
>
> Here, it's about as fast as
>
> cat /dev/zero | dd of=/dev/null bs=8M count=1000 iflag=fullblock
>
> (but only about ~25% as fast as
> dd if=/dev/zero of=/dev/null bs=8M count=1000 iflag=fullblock
> for whatever reason ever, but the implementation of /dev/zero is
> non-trivial ...)
>
> HTH,
> -dnh
>
I got it to compile, at least it created a file named ones anyway. What
I'm unclear about, where is the if= for dd in the command? All the
commands I've seen before has a if= and a of=. The if for input and of
for output or target. I'm assuming that if I want to target sdb, I'd
replace null with /dev/sdb.
As I've posted before, even my scripting skills are minimal. Surprised
I got it to compile even. lol Just trying to make sure I don't mess up
something. I placed all this in the /root directory. I'm assuming I
can copy paste the commands above while in /root to make it work? I'm
asking because I haven't tried it yet.
Thanks.
Dale
:-) :-)