Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions grub2/grub2_ifc.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package grub2

import (
"errors"
"os"
"strings"

"github.com/godbus/dbus/v5"
Expand Down Expand Up @@ -316,7 +315,7 @@ func (g *Grub2) PrepareGfxmodeDetect(sender dbus.Sender) *dbus.Error {

g.addModifyTask(getModifyTaskPrepareGfxmodeDetect(gfxmodesStr))

err = os.WriteFile(grub_common.GfxmodeDetectReadyPath, nil, 0644)
err = grub_common.CreateGfxmodeDetectReady()
if err != nil {
return dbusutil.ToError(err)
}
Expand Down
2 changes: 1 addition & 1 deletion grub2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func PrepareGfxmodeDetect() error {
gfxmodesStr := joinGfxmodesForDetect(gfxmodes)
getModifyFuncPrepareGfxmodeDetect(gfxmodesStr)(params)

err = os.WriteFile(grub_common.GfxmodeDetectReadyPath, nil, 0644)
err = grub_common.CreateGfxmodeDetectReady()
if err != nil {
return err
}
Expand Down
17 changes: 16 additions & 1 deletion grub_common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ var logger = log.NewLogger("grub_common")
const (
GrubParamsFile = "/etc/default/grub"
DDEGrubParamsFile = "/etc/default/grub.d/11_dde.cfg"
GfxmodeDetectReadyPath = "/tmp/deepin-gfxmode-detect-ready"
GfxmodeDetectReadyPath = "/run/deepin-gfxmode-detect/ready"
DeepinGfxmodeDetect = "DEEPIN_GFXMODE_DETECT"
DeepinGfxmodeAdjusted = "DEEPIN_GFXMODE_ADJUSTED"
DeepinGfxmodeNotSupported = "DEEPIN_GFXMODE_NOT_SUPPORTED"
Expand Down Expand Up @@ -265,6 +265,21 @@ func (v Gfxmodes) SortDesc() {
sort.Sort(sort.Reverse(v))
}

// CreateGfxmodeDetectReady 创建 gfxmode 探测完成信号文件。
//
// MkdirAll 兜底 unit 外调用(如 postinst 的 `grub2 -prepare-gfxmode-detect`)——此时无
// RuntimeDirectory 托管父目录;服务内调用时父目录已由 systemd 建好,MkdirAll 为 no-op。
func CreateGfxmodeDetectReady() error {
dir := filepath.Dir(GfxmodeDetectReadyPath)
if err := os.MkdirAll(dir, 0755); err != nil {
return fmt.Errorf("failed to mkdir %s: %w", dir, err)
}
if err := os.WriteFile(GfxmodeDetectReadyPath, nil, 0644); err != nil {
return fmt.Errorf("failed to create %s: %w", GfxmodeDetectReadyPath, err)
}
return nil
}

func ShouldFinishGfxmodeDetect(params map[string]string) bool {
if params[DeepinGfxmodeDetect] == "1" {
_, err := os.Stat(GfxmodeDetectReadyPath)
Expand Down
4 changes: 3 additions & 1 deletion misc/systemd/services/system/deepin-grub2.service
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ InaccessiblePaths=-/etc/pam.d
#InaccessiblePaths=-/usr/share/uadp/
# 创建/etc/default/grub.d/11_dde.cfg
ReadWritePaths=-/etc/default/grub.d
# 创建/tmp/deepin-gfxmode-detect-ready // TODO分析该文件是否有被其他进程使用,该文件存放需要修改
# /run/deepin-gfxmode-detect/ready,作为 gfxmode 探测完成信号文件
RuntimeDirectory=deepin-gfxmode-detect
RuntimeDirectoryPreserve=yes
ReadWritePaths=-/tmp/
# /var/cache/deepin/grub2.log
ReadWritePaths=-/var/cache/deepin
Expand Down
Loading