Messages in this thread | | | Date | Thu, 23 Aug 2018 13:39:38 -0700 | From | "Paul E. McKenney" <> | Subject | Re: Kernel-only deployments? |
| |
On Thu, Aug 23, 2018 at 12:16:04PM -0700, Josh Triplett wrote: > On Thu, Aug 23, 2018 at 08:54:17PM +0200, Adam Borowski wrote: > > On Thu, Aug 23, 2018 at 10:43:59AM -0700, Paul E. McKenney wrote: > > > The mkinitramfs approach results in about 40MB of initrd, and dracut > > > about 10MB. Most of this is completely useless for rcutorture, which > > > isn't interested in mounting filesystems, opening devices, and almost > > > all of the other interesting things that mkinitramfs and dracut enable. > > > > > > Those who know me will not be at all surprised to learn that I went > > > overboard making the resulting initrd as small as possible. I started > > > by throwing out everything not absolutely needed by the dash and sleep > > > binaries, which got me down to about 2.5MB, 1.8MB of which was libc. > > > This situation of course prompted me to create an initrd containing > > > a statically linked binary named "init" and absolutely nothing else > > > (not even /dev or /tmp directories), which weighs in at not quite 800KB. > > > This is a great improvement over 10MB, to say nothing of 40MB, but 800KB > > > for a C-language "for" loop containing nothing more than a single call to > > > sleep()? > > > > .globl _start > > .data > > req: .8byte 999999999, 999999999 > > .text > > _start: > > mov $35, %rax # syscall: nanosleep > > mov $req, %rdi > > xor %rsi, %rsi > > syscall > > jmp _start > > > > > > as sl.s -o sl.o > > ld sl.o -o init > > > > 'Ere you go, no libc needed. If your arch is not amd64, just say so. > > "pause" ($34) would also suffice, and would not require an argument or a > .data section.
Cute! ;-)
Thanx, Paul
| |