查看: 19|回复: 19

强烈推荐一款性价比极高的 Linux 本搞 vibe coding

[复制链接]

2

主题

11

回帖

28

积分

新手上路

积分
28
发表于 2026-7-17 12:24:52 | 显示全部楼层 |阅读模式
Linux 笔记本这里讨论过很多次,我自己都多次发帖,我也前后用过折腾过一二十个笔记本,

60% Apple,
30% Thinkpad X1C/T 系列
10% 杂牌甚至 PAD/Surface 系列

多多少少都有不满意的对方,大部分是兼容问题,电池问题,驱动问题,启动问题,稳定问题。

由于目前我自己主要用 AI 来写一些小项目,所以主要考虑轻便,续航高,性能无所谓,由于 M 芯片支持不是太友好,要不然 M 芯片应该是首选。

后来我研究发现 12 寸的 Macbook+Omarchy 是极品配置

我以前定制过一台 12 寸的,好像 1.2w 买的,用了半年不习惯(那个时候觉得性能不行发热) 5k 卖了。

最近在咸鱼花 1000 出头买了一台 16G/256 的极品机,安装 Omarchy 很顺畅,唯一就是要自己改一下设置,要不然盒盖充电后,拔插头,wifi 不能唤醒,需要重新启动。

如果你对性能要求不高,只是上网,ai vibing ,对品相要求不高,700 多就能买到成色不错的,亮度 20-30,我浏览网页,vibing 一下,大概续航可以做到 8-10 个小时。我自己还有一台 x1 carbon 也装了 omarchy ,续航要比这个少,而且这个很轻 900 克,简直太好用了。

1000 元不到,还要什么自行车?
回复

使用道具 举报

2

主题

11

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2026-7-17 12:26:02 | 显示全部楼层
下面是我让 ai 帮我解决掉 wifi 和充电冲突的问题的脚本

#!/bin/bash
# Fix MacBook10,1 suspend/resume WiFi issues caused by BCM4350 brcmfmac PCIe D3 timeout
#
# ROOT CAUSE: systemd-sleep hooks run AFTER kernel PM tries to freeze devices.
# brcmfmac driver is still loaded when kernel calls pci_pm_suspend() -> D3 timeout
# error -5 -> suspend fails -> retry -> firmware corruption -> WiFi dead.
#
# SOLUTION: Use systemd services (Before=sleep.target / After=suspend.target)
# which execute BEFORE kernel PM freezes and AFTER kernel PM resumes.
#
# Run with: sudo bash ~/fix-macbook12-suspend.sh

set -euo pipefail

if [[ $EUID -ne 0 ]]; then
    echo "ERROR: Please run with sudo: sudo bash $0"
    exit 1
fi

echo "=== 1/6 Removing old systemd-sleep hook ==="

if [[ -f /etc/systemd/system-sleep/brcmfmac-suspend.sh ]]; then
    rm /etc/systemd/system-sleep/brcmfmac-suspend.sh
    echo "Removed old hook"
else
    echo "Old hook not found, skipping"
fi

echo ""
echo "=== 2/6 Creating WiFi recovery script ==="

cat > /usr/local/bin/brcmfmac-recovery.sh << 'SCRIPT'
#!/bin/bash
# Full PCIe reset + driver reload for BCM4350 on MacBook10,1
BRCM_PCI="0000:02:00.0"
LOG="/var/log/brcmfmac-resume.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"
}

log "=== ${1:-manual} START ==="

# Step 1: Unload everything
log "Stopping iwd"
systemctl stop iwd 2>/dev/null

log "Removing brcmfmac modules"
modprobe -r brcmfmac_wcc 2>/dev/null || true
modprobe -r brcmfmac 2>/dev/null || true
sleep 1

# Step 2: PCIe bus reset (hardware level)
if [[ -f "/sys/bus/pci/devices/${BRCM_PCI}/reset" ]]; then
    log "PCIe bus reset"
    echo 1 > "/sys/bus/pci/devices/${BRCM_PCI}/reset" 2>/dev/null && log "reset OK" || log "reset failed"
    sleep 2
else
    log "No reset file, trying remove+rescan"
    if [[ -d "/sys/bus/pci/devices/${BRCM_PCI}" ]]; then
        echo 1 > "/sys/bus/pci/devices/${BRCM_PCI}/remove" 2>/dev/null || true
        sleep 2
    fi
    echo 1 > /sys/bus/pci/rescan 2>/dev/null || true
    sleep 3
fi

# Step 3: Reload driver
log "Loading brcmfmac"
modprobe brcmfmac 2>/dev/null && log "brcmfmac OK" || log "brcmfmac FAIL"
modprobe brcmfmac_wcc 2>/dev/null || true
sleep 2

# Step 4: Start iwd
log "Starting iwd"
systemctl start iwd 2>/dev/null && log "iwd OK" || log "iwd FAIL"
sleep 3

# Step 5: Verify
if ip link show wlan0 &>/dev/null && iw dev wlan0 info &>/dev/null 2>&1; then
    log "wlan0 functional - SUCCESS"
else
    log "wlan0 broken, retrying once more"
    modprobe -r brcmfmac_wcc 2>/dev/null || true
    modprobe -r brcmfmac 2>/dev/null || true
    sleep 2
    echo 1 > "/sys/bus/pci/devices/${BRCM_PCI}/reset" 2>/dev/null || true
    sleep 2
    modprobe brcmfmac 2>/dev/null || true
    modprobe brcmfmac_wcc 2>/dev/null || true
    sleep 3
    systemctl restart iwd 2>/dev/null || true
    sleep 2
    ip link show wlan0 &>/dev/null && log "retry SUCCESS" || log "retry FAILED - may need reboot"
fi

log "=== ${1:-manual} DONE ==="
SCRIPT

chmod +x /usr/local/bin/brcmfmac-recovery.sh
echo "Created: /usr/local/bin/brcmfmac-recovery.sh"

echo ""
echo "=== 3/6 Creating suspend service (runs BEFORE kernel PM freeze) ==="

cat > /etc/systemd/system/brcmfmac-suspend.service << 'SVC'
[Unit]
Description=Unload brcmfmac WiFi driver before suspend
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
ExecStart=/usr/bin/rmmod brcmfmac_wcc
ExecStart=/usr/bin/rmmod brcmfmac
RemainAfterExit=yes
ExecStop=/usr/bin/modprobe brcmfmac
TimeoutSec=15

[Install]
WantedBy=sleep.target
SVC

echo "Created: /etc/systemd/system/brcmfmac-suspend.service"

echo ""
echo "=== 4/6 Creating resume service (runs AFTER kernel PM resume) ==="

cat > /etc/systemd/system/brcmfmac-resume.service << 'SVC'
[Unit]
Description=Reset and reload brcmfmac WiFi after resume
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
ExecStart=/usr/local/bin/brcmfmac-recovery.sh resume
TimeoutSec=30

[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
SVC

echo "Created: /etc/systemd/system/brcmfmac-resume.service"

echo ""
echo "=== 5/6 Creating udev rule for Type-C hotplug ==="

cat > /etc/udev/rules.d/99-brcmfmac-typec.rules << 'UDEV'
# Reset brcmfmac when Type-C port state changes and WiFi is broken
ACTION=="change|remove", SUBSYSTEM=="typec", RUN+="/usr/local/bin/brcmfmac-typec-check.sh"
UDEV

chmod 644 /etc/udev/rules.d/99-brcmfmac-typec.rules
echo "Created: /etc/udev/rules.d/99-brcmfmac-typec.rules"

cat > /usr/local/bin/brcmfmac-typec-check.sh << 'CHECK'
#!/bin/bash
# Only reset if WiFi is actually broken
if ip link show wlan0 &>/dev/null && iw dev wlan0 info &>/dev/null 2>&1; then
    exit 0
fi
/usr/local/bin/brcmfmac-recovery.sh typec-hotplug
CHECK

chmod +x /usr/local/bin/brcmfmac-typec-check.sh
echo "Created: /usr/local/bin/brcmfmac-typec-check.sh"

echo ""
echo "=== 6/6 Enabling services ==="

systemctl daemon-reload
systemctl enable brcmfmac-suspend.service
systemctl enable brcmfmac-resume.service
udevadm control --reload-rules

echo ""
echo "=== Verify ==="
echo "--- suspend service ---"
cat /etc/systemd/system/brcmfmac-suspend.service
echo ""
echo "--- resume service ---"
cat /etc/systemd/system/brcmfmac-resume.service
echo ""
echo "--- service status ---"
systemctl is-enabled brcmfmac-suspend.service brcmfmac-resume.service
echo ""
echo "=== DONE ==="
echo ""
echo "Test: close lid with charger -> wait 1min -> open lid"
echo "Check WiFi: iw dev wlan0 link"
echo "Check debug log: cat /var/log/brcmfmac-resume.log"
echo ""
echo "Manual recovery: sudo /usr/local/bin/brcmfmac-recovery.sh manual"
回复

使用道具 举报

2

主题

13

回帖

32

积分

新手上路

积分
32
发表于 2026-7-17 12:30:21 | 显示全部楼层
「就用 macOS 不行吗」还有十秒到达战场。不过我也想问:macOS 不行吗?装 Omarchy 是单纯为了 Linux 的兼容性还是有性能和续航的提升?
回复

使用道具 举报

0

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2026-7-17 12:36:07 | 显示全部楼层
对啊,「就用 macOS 不行吗」
回复

使用道具 举报

1

主题

56

回帖

115

积分

注册会员

积分
115
发表于 2026-7-17 12:37:08 | 显示全部楼层
纯用命令行的话还好,有的桌面端 vibe 工具优先支持/更新 macOS
回复

使用道具 举报

0

主题

1

回帖

2

积分

新手上路

积分
2
发表于 2026-7-17 12:39:32 | 显示全部楼层
arch 不好吗
回复

使用道具 举报

2

主题

11

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2026-7-17 12:43:23 | 显示全部楼层
@w568w
@hidemyname

我自己也在用 macos ,对我自己来说,我很需要 tile 方式的窗口管理, 我也安装了 ghostty , 很方便使用分屏和一些简单的 tui ,比如 yazi ,但是最不舒服的是,不方便平铺浏览器,如果平铺浏览器就只能单个分一个 1/2 之类给浏览器,可能我更喜欢 omarchy 整个快捷按的设计吧。
回复

使用道具 举报

2

主题

11

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2026-7-17 12:44:34 | 显示全部楼层
如果用 omarchy ,我可以随时 float 显示一个浏览器,或者设置一个 webapp ,或者某一个 tile 窗口(没有 title )
回复

使用道具 举报

2

主题

11

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2026-7-17 12:48:32 | 显示全部楼层
omarchy 窗口可以用完即走,需要一个快捷按键就回来平铺。mac 上要先设置好,比如平铺了浏览器,关闭后,未来想要又要去点全屏平铺,还有包括浏览器。

还有就是 omarchy 基本都配置好了,开箱即用,还是很方便的。
回复

使用道具 举报

0

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2026-7-17 12:52:01 | 显示全部楼层
严肃推荐前几年的松下 lets note,跳水速度最快价格约为同配置 ThinkPad 的一半到三分之一. 缺点就是搞不好你会买到电池是坏掉的然后你再买一个电池可能就要电脑的一半价格...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
返回顶部