edk2-ovmf 提供的 UEFI 固件如何开启安全启动 (在 Arch Linux 下)
首先需要自己拷贝一份 OVMF_VARS.fd (/usr/share/edk2-ovmf/x64/OVMF_VARS.fd
)
然后就可以了:
qemu-system-x86_64 参数如下:
-boot order=d,menu=on
开启菜单,设置启动顺序 d 是 cd,但是我这里没用不知道为啥-machine q35,smm=on
OVMF 需要 smm 特性-global TCH9-LPC.disable_s3=1
关闭这玩意,免得无法启动-global driver=cfi.pflash01,property=secure,value=on
声明一个固件,打开安全启动m size=2048
给 archiso 一个大内存-device virtio-scsi-pci,id=scsi0
给 archiso 用的设备-device scsi-cd,bus=scsi0.0,drive=cdrom0
给 archiso 用的设备-drive id=cdrom0,if=none,format=raw,media=cdrom,readonly=on,file=archlinux-2022.02.03-x86_64.iso
archiso-drive if=pflash,format=raw,unit=0,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd
edk2-ovmf 固件的代码-drive if=pflash,format=raw,unit=1,file=./OVMF_VARS.fd
edk2-ovmf 固件的变量构建 python 应用容器:
构建 wheel 的多阶段构建:
FROM python:3 AS python-meirin
RUN useradd -m meirin \
&& mkdir -p /home/meirin/.local/bin \
&& chown -R meirin:meirin /home/meirin \
&& mkdir -p /usr/src \
&& chmod a+rw /usr/src
USER meirin
ENV PATH "/home/meirin/.local/bin:$PATH"
#-------------------------------------------------------------------------------
FROM python-meirin AS builder
WORKDIR /usr/src
RUN pip install --no-cache-dir build setuptools
# 把 python-app 目录替换为 /usr/src 的意思
COPY python-app/ /usr/src/
RUN python -m build --wheel
#-------------------------------------------------------------------------------
FROM python-meirin
LABEL maintainer="literal kernel"
COPY --from=builder /usr/src/dist/*.whl /usr/src
RUN pip install /usr/src/*.whl && rm -rf /usr/src/*
CMD [ "python", "-m", "meirin" ]
使用 pip install 直接安装
FROM python:3
COPY python-app/ /usr/src/
RUN useradd -m meirin \
&& mkdir -p /home/meirin/.local/bin \
&& chown -R meirin:meirin /home/meirin \
&& mkdir -p /usr/src \
&& chmod -R a+rw /usr/src
USER meirin
WORKDIR /home/meirin
ENV PATH "/home/meirin/.local/bin:$PATH"
RUN pip install /usr/src
USER root
RUN rm -rf /usr/src
USER meirin
CMD [ "meirin" ]
听说 make 检测目标更新的原理是比较源文件和目标文件的修改时间,源文件后于目标文件则需要重新 make。
好像可以:
import os
import os.path
import subprocess
import logging
logger = logging.getLogger(__name__)
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)
source_mtime = os.path.getmtime("test.py")
target_mtime = os.path.getmtime("[email protected]")
if source_mtime > target_mtime:
logger.info("need remake {}".format('[email protected]'))
proc = subprocess.Popen(
[
"python",
"test.py",
],
cwd=os.getcwd(),
)
print(" ".join(proc.args))
else:
print("nothing to remake")
回家了,昨天刚去亲戚家就来消息说来水了,草。还是家里省心,虽然家挺偏的。另外也谢谢你 @BlueObserver
配的图就很业余了
网络抱怨
莉特雅 literal
写代码业余爱好者 amateur coder