mirror of
https://github.com/linuxboot/linuxboot
synced 2024-11-22 17:01:28 +00:00
4f56e9cf04
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
485 lines
13 KiB
Makefile
485 lines
13 KiB
Makefile
# This is the makefile for a flash image, a netbootable sshd image,
|
|
# and a netbootable cpu image.
|
|
#
|
|
# sshdkernel produces a kernel with a built-in initramfs for netboot
|
|
# It provides (and starts) an sshd, and also has flashrom.
|
|
# Hence you can ssh to a node, flashrom -r on it, scp the
|
|
# image back, process it, scp the new image to the node, and
|
|
# write with flashrom.
|
|
# e.g.
|
|
# ssh -i class_key -p 2022 board flashrom -r image.bin -p internal
|
|
# scp -i class_key -P 2022 board:/image.bin image.bin
|
|
# make tiny.bin
|
|
# scp -i class_key -P 2022 tiny.bin board:/tiny.bin
|
|
# ssh -i class_key -p 2022 board flashrom -w tiny.bin -p internal
|
|
#
|
|
# The cpu image uses a cpud as its init, and you
|
|
# can cpu to it to run commands, including flashrom -p internal
|
|
# to flash the flash image.
|
|
# e.g.
|
|
# cpu board flashrom -r image.bin -p internal
|
|
# Note this writes image image.bin to the host directoy; no scp needed
|
|
# make tiny.bin
|
|
# cpu board flashrom -w tiny.bin -p internal
|
|
# cpu is way more convenient than ssh/scp if you can learn it.
|
|
# you can also just
|
|
# cpu board
|
|
# and once you are in:
|
|
# flashrom -r image.bin -p internal
|
|
# make tiny.bin
|
|
# flashrom -w tiny.bin -p internal
|
|
# NOTE: those commands are running on the board, and they all work
|
|
#
|
|
# You can test the flash image kernel with qemu
|
|
# make flashtest
|
|
|
|
# sshdkernel and cpukernel are very similar,
|
|
# so doing builds in this order minimizes kernel
|
|
# change between them.
|
|
default: flash sshdkernel cpukernel
|
|
|
|
flash: tiny.bin
|
|
|
|
flashtest: testflashkernel
|
|
|
|
usefultargets:
|
|
echo fetch, uroot, kernel, or image.bin
|
|
|
|
tiny.bin: dxeremove.bin flashkernel flashinitramfs.cpio.lzma
|
|
utk \
|
|
-xzPath /usr/bin/xz \
|
|
$< \
|
|
replace_pe32 FullShell flashkernel \
|
|
save $@
|
|
echo DO NOT \
|
|
dd if=flashinitramfs.cpio.lzma of=$@ bs=4096 seek=2560 conv=notrunc
|
|
|
|
dxeremove.bin: image.bin Makefile
|
|
echo note, we remove DXE to the point the image is not viable
|
|
echo until you put a kernel in it in place of the shell.
|
|
utk $< \
|
|
remove Ahci.* \
|
|
remove AMITSE \
|
|
remove AMITSE.* \
|
|
remove Arp.* \
|
|
remove Ata.* \
|
|
remove Button.* \
|
|
remove CryptoD.* \
|
|
remove .*Dhcp.* \
|
|
remove Dhcp6Dxe \
|
|
remove Disk.* \
|
|
remove EbcDxe \
|
|
remove Fat.* \
|
|
remove .*ftp.* \
|
|
remove .*harging.* \
|
|
remove I2c.* \
|
|
remove IntelGopV.* \
|
|
remove IntelIsh.* \
|
|
remove Ip4.* \
|
|
remove Ip.* \
|
|
remove Ip6Dxe \
|
|
remove Iscsi.* \
|
|
remove Ish.* \
|
|
remove .*Keyboard.* \
|
|
remove Logo.* \
|
|
remove Maxim.* \
|
|
remove Mmc.* \
|
|
remove MnpDxe \
|
|
remove Mouse.* \
|
|
remove Mtftp4Dxe \
|
|
remove Mtftp6Dxe \
|
|
remove NetworkStackSetupScreen \
|
|
remove Partition.* \
|
|
remove .*PxeDxe.* \
|
|
remove RandomNumberGen \
|
|
remove ReFlash \
|
|
remove Sata.* \
|
|
remove Scsi.* \
|
|
remove Shell_Full \
|
|
remove SnpDxe \
|
|
remove SoftKbd \
|
|
remove Tcp.* \
|
|
remove TcpDxe \
|
|
remove TimestampDxe \
|
|
remove Udp.* \
|
|
remove Udp4.* \
|
|
remove Udp6Dxe \
|
|
remove UefiPxe.* \
|
|
remove Uhcd \
|
|
remove Usb.* \
|
|
remove Whea.* \
|
|
remove Xpower.* \
|
|
remove DxeIpm.* \
|
|
remove .*Tcg.* \
|
|
remove NvmeInt13 \
|
|
remove Aint13 \
|
|
remove LegacyRegion \
|
|
remove xGbEI2cMasterDxe \
|
|
remove NvmeSmm \
|
|
remove KbcEmul \
|
|
remove IdeBusBoard \
|
|
remove Setup \
|
|
remove SerialMuxControl \
|
|
remove BmcLanConfig \
|
|
remove SecureBootDXE \
|
|
remove SmmHddSecurity \
|
|
remove HttpBootDxe \
|
|
remove HttpDxe \
|
|
remove DnsDxe \
|
|
remove HttpUtilitiesDxe \
|
|
remove TlsDxe \
|
|
remove CsmBlockIo \
|
|
remove CsmVideo \
|
|
comment testing \
|
|
comment huashan_shock_and_awe_undo_later \
|
|
remove FchHuashanMultiFchSmm \
|
|
remove FchHuashanSmmInit \
|
|
remove FchHuashanMultiFchDxe \
|
|
comment FchHuashanDxe \
|
|
comment end_huashan_shock_and_awe \
|
|
comment misc_shock_and_awe \
|
|
comment end_misc_shock_and_awe \
|
|
comment debug_shock_and_awe \
|
|
remove DebugPortTableDxe \
|
|
remove AmdIdsDebugPrintDxe \
|
|
comment end_debug_shock_and_awe \
|
|
comment config_shock_and_awe \
|
|
remove AmdFwConfigSmmSsp \
|
|
remove TlsAuthConfigDxe \
|
|
remove AmdFwConfigDxe \
|
|
comment end_config_shock_and_awe \
|
|
comment smm_shock_and_awe \
|
|
comment remove_all_smm_it_warm_resets_continuously \
|
|
comment StatusCodeSmm \
|
|
comment RuntimeSmm \
|
|
comment SmmPciRbIo \
|
|
comment LegacySmmSredir \
|
|
comment SmmS3SaveState \
|
|
comment SmmBmcElog \
|
|
comment SmmIpmiBmcInitialize \
|
|
comment CpuSmm \
|
|
remove AmdCpmInitSmm \
|
|
comment AmdPlatformJedecNvdimmSmm \
|
|
comment AmdHotPlugSspSmm \
|
|
remove AmdPlatformRasSspSmm \
|
|
remove AmdPlatformRasZpSmm \
|
|
comment AmdSpiLockSmm \
|
|
remove AmdCpmGpioInitSmm \
|
|
comment BctBaseSmmSSP \
|
|
remove AmdRasSspSmm \
|
|
comment AmdSmmCommunication \
|
|
comment FchSmmDispatcher \
|
|
comment AmdFabricSspSmm \
|
|
comment AmdCcxVhSmm \
|
|
comment AmdPspSmmV2Ssp \
|
|
comment AmdPspP2CmboxV2SspSmmBuffer \
|
|
comment AmdApcbSmmV3 \
|
|
comment AmdMemPprSmmDriverSsp \
|
|
comment PiSmmCommunicationSmm \
|
|
comment SmmChildDispatcher2 \
|
|
comment SbRunSmm \
|
|
comment SmmLockBox \
|
|
comment CpuIo2Smm \
|
|
comment NvramSmm \
|
|
comment FlashDriverSmm \
|
|
comment PiSmmCore \
|
|
comment AmdSmmControl \
|
|
comment PiSmmIpl \
|
|
comment SmBusSmm \
|
|
comment TcgSmm \
|
|
comment end_smm_shock_and_awe \
|
|
comment tpm_shock_and_awe \
|
|
remove TpmClearOnRollbackSmm \
|
|
remove Tpm20Acpi \
|
|
remove Tpm20PlatformDxe \
|
|
remove CrbTpm20Acpi \
|
|
remove Tpm20PlatformDxe \
|
|
remove TpmSmbiosDxe \
|
|
remove end_tpm_shock_and_awe \
|
|
comment smbios_shock_and_awe \
|
|
remove SmmSmbiosElog \
|
|
remove Smbios \
|
|
remove SmbiosDmiEdit \
|
|
remove SmbiosElog \
|
|
remove SmbiosBoard \
|
|
remove SmbiosElogSetupScreen \
|
|
remove AmdSmbiosDxe \
|
|
remove AmdMemSmbiosV2RvDxe \
|
|
remove CpuSmbiosDriver \
|
|
comment end_smbios_shock_and_awe \
|
|
comment S3Save_do_not_comment_gets_error \
|
|
comment below_still_unknown \
|
|
comment TcgMor \
|
|
comment AmiTcgNvflagSample \
|
|
comment AmiTcgPlatformDxe \
|
|
comment TcgDxeplatform \
|
|
comment TcgDxe \
|
|
comment Tcg2Dxe \
|
|
comment TcgPlatformSetupPolicy \
|
|
comment FlashDriver_do_not_remove_efi_panics \
|
|
comment S3Save_do_not_remove_gets_error \
|
|
comment testremove \
|
|
comment FlashDriver_do_not_remove_efi_panics \
|
|
comment S3Save_do_not_remove_gets_error \
|
|
comment testremove \
|
|
comment RomLayoutDxe \
|
|
comment DxeCore \
|
|
comment DataHubDxe \
|
|
comment DevicePathDxe \
|
|
comment EnglishDxe \
|
|
comment HiiDatabase \
|
|
comment SecurityStubDxe \
|
|
comment CpuIo2Dxe \
|
|
comment CpuDxe \
|
|
comment NbDxe \
|
|
comment SbDxe \
|
|
comment AmdMemSspSp3Dxe \
|
|
comment AmdMemRestoreDxe \
|
|
comment AmdApcbDxeV3 \
|
|
comment AmdPspDxeV2Ssp \
|
|
comment AmdHstiV2 \
|
|
comment ApobSspDxe \
|
|
comment AmdCcxVhDxe \
|
|
comment AmdFabricSspDxe \
|
|
comment AmdSocSp3RmDxe \
|
|
comment AmdErrorLogDxe \
|
|
comment AmdNbioAlibDxe \
|
|
comment AmdNbioBaseSspDxe \
|
|
comment SmuV11Dxe \
|
|
comment AmdNbioPcieDxe \
|
|
remove AmdNbioIOMMUDxe \
|
|
comment FchSmbusDxe \
|
|
remove AmdLegacyInterrupt \
|
|
comment AmdAcpiDxe \
|
|
comment AmdVersionDxe \
|
|
remove AmdRasSspApeiDxe \
|
|
remove AmdRasSspDxe \
|
|
comment JedecNvdimmDxe \
|
|
comment CbsSetupDxeSSP \
|
|
comment CbsBaseDxeSSP \
|
|
comment AmdPbsSetupDxe \
|
|
remove RasOemDimmMap \
|
|
comment ServerHotplugDxe \
|
|
comment Pca9535aDxe \
|
|
comment Pca9545aDxe \
|
|
comment Sff8472Dxe \
|
|
comment SlinkManager \
|
|
comment SlinkEndpointDriver \
|
|
comment AmdBoardIdDxe \
|
|
remove AmdCpmGpioInitDxe \
|
|
comment AmdSpiLockDxe \
|
|
comment AmdI2cMasterDxe \
|
|
remove AmdCpmPcieInitDxe \
|
|
comment ApicInfoDataDxe \
|
|
remove AmdPlatformRasZpDxe \
|
|
remove AmdPlatformRasSspDxe \
|
|
remove AmdCpmInitDxe \
|
|
comment ServerMgmtSetup \
|
|
comment ACPI \
|
|
comment S3SaveStateDxe \
|
|
comment BootScriptExecutorDxe \
|
|
comment AcpiS3SaveDxe \
|
|
comment LegacySredir \
|
|
comment OA3 \
|
|
comment PciRootBridge \
|
|
comment PciDynamicSetup \
|
|
comment PciDxeInit \
|
|
comment ExportHiiDb \
|
|
comment DpcDxe \
|
|
comment CsmDxe \
|
|
comment EventLogsSetupPage \
|
|
comment HardwareSignatureEntry \
|
|
comment HddSecurity \
|
|
comment KbcEmulDxe \
|
|
comment EsrtDxe \
|
|
comment NvmeDynamicSetup \
|
|
comment AmiBoardInfo2 \
|
|
comment AmiSerialUart0 \
|
|
comment AmiSerialUart1 \
|
|
comment OpalSecurity \
|
|
comment CsmRt32 \
|
|
comment RsdpPlus \
|
|
comment AmiRedFishApi \
|
|
comment AmiDeviceGuardApi \
|
|
comment PspPlatform \
|
|
comment PspDxe \
|
|
comment AcpiUpdateCpuInfo \
|
|
comment CheckCrbVsRom \
|
|
comment RuntimeDxe \
|
|
comment CpuIoDxe \
|
|
comment SbRun \
|
|
comment Cf9Reset \
|
|
comment BmcElog \
|
|
comment SecFlashUpdDXE \
|
|
comment SmiFlashDxe \
|
|
comment PCIePTCPkg \
|
|
comment ConSplitter \
|
|
comment GraphicsConsole \
|
|
comment SlinkRootBridgeDriver \
|
|
remove IdeBusSrc \
|
|
remove PciBus \
|
|
remove PlatformToDriver \
|
|
remove TerminalSrc \
|
|
remove SerialIo \
|
|
remove Nvme \
|
|
comment ResetSmi \
|
|
comment PeriodicSmiControl \
|
|
remove PowerButton \
|
|
comment AcpiModeEnable \
|
|
comment AmdPspP2CmboxV2Ssp \
|
|
remove JedecNvdimm \
|
|
remove BiosCfgTool \
|
|
remove CryptoSMM \
|
|
remove BmcAcpi \
|
|
comment OA3_SMM \
|
|
comment SmiVariable \
|
|
comment Ofbd \
|
|
remove SecSMIFlash \
|
|
remove SmiFlash \
|
|
comment StatusCodeDxe \
|
|
comment FlashDriver \
|
|
comment NvramDxe \
|
|
comment PcdDxe \
|
|
remove SbCmos \
|
|
remove SmBusDxe \
|
|
remove DxeSelStatusCode \
|
|
comment DxeFrb \
|
|
remove CmosDxe \
|
|
comment CrbSpiOpCode \
|
|
comment tested_fails_if_removed \
|
|
comment CapsuleRuntimeDxe \
|
|
comment Bds \
|
|
comment needed_for_linuxboot_dont_remove \
|
|
comment FullShell \
|
|
save $@
|
|
|
|
sshdkernel: sshd.cpio.lzma sshd-linux.config
|
|
cp sshd-linux.config linux/.config
|
|
(cd linux && make oldconfig && make -j32)
|
|
cp linux/arch/x86/boot/bzImage $@
|
|
|
|
cpukernel: cpu.cpio.lzma cpu-linux.config
|
|
cp cpu-linux.config linux/.config
|
|
(cd linux && make oldconfig && make -j32)
|
|
cp linux/arch/x86/boot/bzImage $@
|
|
|
|
readrom:
|
|
echo You need to get a ROM image from *somewhere*
|
|
echo Once you do, put it in ROM.bin
|
|
|
|
writerom: image.bin
|
|
echo Here is where you would do the flashrom, e.g.
|
|
echo sudo flashrom -p dediprog -w image.bin
|
|
|
|
flashinitramfs.cpio.lzma: flashinitramfs.cpio
|
|
lzma -f -k $<
|
|
|
|
flashinitramfs.cpio: Makefile
|
|
u-root -o $@ \
|
|
-uinitcmd=/bbin/console \
|
|
github.com/u-root/u-root/cmds/boot/pxeboot \
|
|
github.com/u-root/u-root/cmds/boot/boot \
|
|
github.com/u-root/u-root/cmds/core/cat \
|
|
github.com/u-root/u-root/cmds/core/elvish \
|
|
github.com/u-root/u-root/cmds/core/init \
|
|
github.com/u-root/u-root/cmds/core/io \
|
|
github.com/u-root/u-root/cmds/core/ip \
|
|
github.com/u-root/u-root/cmds/core/ls \
|
|
github.com/u-root/u-root/cmds/core/kexec \
|
|
github.com/u-root/u-root/cmds/core/pci \
|
|
github.com/u-root/u-root/cmds/core/wget \
|
|
github.com/u-root/u-root/cmds/exp/console \
|
|
|
|
oflashinitramfs.cpio: Makefile
|
|
u-root -o $@ -build=bb \
|
|
-uinitcmd=/bbin/pxeboot \
|
|
github.com/u-root/u-root/cmds/boot/pxeboot \
|
|
github.com/u-root/u-root/cmds/core/cat \
|
|
github.com/u-root/u-root/cmds/core/elvish \
|
|
github.com/u-root/u-root/cmds/core/init \
|
|
github.com/u-root/u-root/cmds/core/ip \
|
|
github.com/u-root/u-root/cmds/core/ls \
|
|
github.com/u-root/u-root/cmds/core/kexec \
|
|
github.com/u-root/u-root/cmds/core/pci \
|
|
github.com/u-root/u-root/cmds/core/wget \
|
|
|
|
# this target builds an initramfs with only one program, the cpu server.
|
|
# It depends on the kernel setting the IP address.
|
|
# You need ip=dhcp OR ip=fixed.ip.address.here in the command line
|
|
cpu.cpio.lzma: Makefile
|
|
u-root -o cpu.cpio -build=bb -files ~/.ssh/cpu_rsa.pub:key.pub \
|
|
-defaultsh="rush" \
|
|
github.com/u-root/u-root/cmds/exp/rush \
|
|
github.com/u-root/u-root/cmds/core/init \
|
|
github.com/u-root/u-root/cmds/core/pci \
|
|
github.com/u-root/u-root/cmds/core/io \
|
|
github.com/u-root/u-root/cmds/core/cat
|
|
lzma -f -k cpu.cpio
|
|
|
|
# this target builds an initramfs with all of u-root, AND all of /bin, /usr/bin, /sbin, /usr/sbin, /etc
|
|
# the intent is to demonstrate the capability of http loading.
|
|
# It depends on the kernel setting the IP address.
|
|
# You need ip=dhcp OR ip=fixed.ip.address.here in the command line
|
|
sshd.cpio.lzma: Makefile
|
|
u-root -o sshd.cpio -build=bb \
|
|
-uinitcmd=/bbin/sshd \
|
|
-files class_key.pub:authorized_keys \
|
|
-files classhostkey:id_rsa \
|
|
-files /usr/bin/vi \
|
|
-files /usr/share/vim \
|
|
-files /usr/share/terminfo \
|
|
-files /bin/bash \
|
|
-files /usr/sbin/flashrom \
|
|
-files /usr/bin/xz \
|
|
all
|
|
lzma -f -k sshd.cpio
|
|
ls -l sshd.cpio.*
|
|
|
|
flashkernel: flashkernel.config flashinitramfs.cpio.lzma Makefile
|
|
cp $< linux/.config
|
|
(cd linux && make oldconfig && make -j32)
|
|
cp linux/arch/x86/boot/bzImage $@
|
|
|
|
testflashkernel: flashkernel
|
|
qemu-system-x86_64 -kernel flashkernel -nographic -serial /dev/tty -initrd flashinitramfs.cpio.lzma
|
|
|
|
testcpukernel: cpukernel
|
|
qemu-system-x86_64 -kernel cpukernel -nographic -serial /dev/tty
|
|
|
|
# These stanzas fetch code.
|
|
fetch: getkernel geturoot getfiano getrom
|
|
|
|
getkernel:
|
|
rm -rf linux
|
|
echo TODO get 5.10
|
|
git clone --depth=1 -b v5.8 --single-branch https://github.com/torvalds/linux
|
|
|
|
getfiano:
|
|
go get -u github.com/linuxboot/fiano/cmds/utk
|
|
go install github.com/linuxboot/fiano/cmds/utk
|
|
go install github.com/linuxboot/fiano/cmds/guid2english
|
|
getrom:
|
|
echo you can put a wget here
|
|
echo and unxip it
|
|
echo and cp it to image.bin
|
|
geturoot:
|
|
go get -u github.com/u-root/u-root
|
|
go get -u github.com/u-root/cpu/...
|
|
|
|
# Serve the combined sshd-kernel and sshd-initramfs image. This includes flashrom
|
|
sshd-pxeserver:
|
|
echo Consider Disabling any system services ...
|
|
echo e.g. sudo systemctl stop tftpd-hpa.service
|
|
echo e.g. sudo systemctl stop isc-dhcp-server
|
|
sudo `go env GOPATH`/bin/pxeserver -tftp-dir . -bootfilename sshdkernel -http-dir . -interface $(NETWORK)
|
|
|
|
# Serve the combined cpu-kernel and cpu-initramfs image.
|
|
cpu-pxeserver:
|
|
echo Consider Disabling any system services ...
|
|
echo e.g. sudo systemctl stop tftpd-hpa.service
|
|
echo e.g. sudo systemctl stop isc-dhcp-server
|
|
sudo `go env GOPATH`/bin/pxeserver -tftp-dir . -bootfilename cpukernel -http-dir . -interface $(NETWORK)
|
|
|
|
ssh:
|
|
ssh -i class_key -p 2022 root@up
|