@@ -29,7 +29,7 @@ KCOV_INSTRUMENT := n
2929SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
3030
3131targets := vmlinux.bin setup.bin setup.elf bzImage
32- targets += fdimage fdimage144 fdimage288 image.iso mtools.conf
32+ targets += fdimage fdimage144 fdimage288 image.iso hdimage
3333subdir- := compressed
3434
3535setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpuflags.o cpucheck.o
@@ -115,47 +115,49 @@ $(obj)/compressed/vmlinux: FORCE
115115 $(Q )$(MAKE ) $(build ) =$(obj ) /compressed $@
116116
117117# Set this if you want to pass append arguments to the
118- # bzdisk/fdimage/isoimage kernel
118+ # bzdisk/fdimage/hdimage/ isoimage kernel
119119FDARGS =
120- # Set this if you want an initrd included with the
121- # bzdisk/fdimage/isoimage kernel
120+ # Set this if you want one or more initrds included in the image
122121FDINITRD =
123122
124- image_cmdline = default linux $( FDARGS ) $(if $(FDINITRD ) ,initrd=initrd.img,)
123+ imgdeps = $( obj ) /bzImage $(obj ) /mtools.conf $(src ) /genimage.sh
125124
126125$(obj ) /mtools.conf : $(src ) /mtools.conf.in
127126 sed -e ' s|@OBJ@|$(obj)|g' < $< > $@
128127
128+ targets += mtools.conf
129+
130+ # genimage.sh requires bash, but it also has a bunch of other
131+ # external dependencies.
129132quiet_cmd_genimage = GENIMAGE $3
130- cmd_genimage = sh $(srctree ) /$(src ) /genimage.sh $2 $3 $(obj ) /bzImage \
131- $(obj ) /mtools.conf '$(image_cmdline ) ' $(FDINITRD )
133+ cmd_genimage = $( BASH ) $(srctree ) /$(src ) /genimage.sh $2 $3 $(obj ) /bzImage \
134+ $(obj ) /mtools.conf '$(FDARGS ) ' $(FDINITRD )
132135
133- PHONY += bzdisk fdimage fdimage144 fdimage288 isoimage bzlilo install
136+ PHONY += bzdisk fdimage fdimage144 fdimage288 hdimage isoimage install
134137
135138# This requires write access to /dev/fd0
136- bzdisk : $(obj ) /bzImage $(obj ) /mtools.conf
139+ # All images require syslinux to be installed; hdimage also requires
140+ # EDK2/OVMF if the kernel is compiled with the EFI stub.
141+ bzdisk : $(imgdeps )
137142 $(call cmd,genimage,bzdisk,/dev/fd0)
138143
139- # These require being root or having syslinux 2.02 or higher installed
140- fdimage fdimage144 : $(obj ) /bzImage $(obj ) /mtools.conf
144+ fdimage fdimage144 : $(imgdeps )
141145 $(call cmd,genimage,fdimage144,$(obj ) /fdimage)
142146 @$(kecho ) ' Kernel: $(obj)/fdimage is ready'
143147
144- fdimage288 : $(obj ) /bzImage $( obj ) /mtools.conf
148+ fdimage288 : $(imgdeps )
145149 $(call cmd,genimage,fdimage288,$(obj ) /fdimage)
146150 @$(kecho ) ' Kernel: $(obj)/fdimage is ready'
147151
148- isoimage : $(obj ) /bzImage
152+ hdimage : $(imgdeps )
153+ $(call cmd,genimage,hdimage,$(obj ) /hdimage)
154+ @$(kecho ) ' Kernel: $(obj)/hdimage is ready'
155+
156+ isoimage : $(imgdeps )
149157 $(call cmd,genimage,isoimage,$(obj ) /image.iso)
150158 @$(kecho ) ' Kernel: $(obj)/image.iso is ready'
151159
152- bzlilo :
153- if [ -f $( INSTALL_PATH) /vmlinuz ]; then mv $( INSTALL_PATH) /vmlinuz $( INSTALL_PATH) /vmlinuz.old; fi
154- if [ -f $( INSTALL_PATH) /System.map ]; then mv $( INSTALL_PATH) /System.map $( INSTALL_PATH) /System.old; fi
155- cat $(obj ) /bzImage > $(INSTALL_PATH ) /vmlinuz
156- cp System.map $(INSTALL_PATH ) /
157- if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
158-
159160install :
160- sh $(srctree ) /$(src ) /install.sh $(KERNELRELEASE ) $(obj ) /bzImage \
161+ $(CONFIG_SHELL ) $(srctree ) /$(src ) /install.sh \
162+ $(KERNELRELEASE ) $(obj ) /bzImage \
161163 System.map " $( INSTALL_PATH) "
0 commit comments