2025-09-10 20:35:33
新买了一台主机,准备搭个 PVE 服务器,在这记录一下过程。
PVE 本身基于 Debian 系统,安装起来并不会十分复杂。下载最新版的 PVE 镜像,还有最新版引导盘制作软件 Rufus,将镜像写入 U 盘后再从 U 盘启动即可。遇到一个比较坑的问题,引导进入 PVE 安装界面后却提示 no device with valid ISO found, please check your installation medium
。因为我这 U 盘拿来做各种启动盘也挺久了所以一开始没怀疑到它,总觉得是自己引导盘做的有问题,还换了 Etcher,用 AI 搜来的过时信息对 bios 一通修改。结果最后换了个 U 盘就好了,并不用做任何多余的操作。
安装 PVE 时注意考虑好主机名和分配给服务器的 ip 再设置,之后虽然也可以修改,不过一开始能固定下来后面就省点心。
hostnamectl set-hostname
修改 /etc/hosts 替换老名字
mkdir /root/tmp cp -r /etc/pve/nodes/<老名字>/* /root/tmp/ # 复制现有配置 rm -rf /etc/pve/nodes/<老名字> mkdir /etc/pve/nodes/<新名字> cp -r /root/tmp/* /etc/pve/nodes/<新名字> # 复制现有配置 reboot
安装完后要更新软件,首先就是改镜像源了。按清华大学镜像站的指引更换 Debian 和 Proxmox 软件源。
企业版源列表文件内的内容 /etc/apt/sources.list.d/pve-enterprise.list 可以全部注释掉。
ceph 源,将 ceph.source 复制备份后新建 /etc/apt/sources.list.d/ceph.list,内容为
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-squid bookworm no-subscription
最后执行 apt update && apt dist-upgrade -y 更新并重启即可。
local-lvm 和 local 本意是一个放 iso 方便安装虚拟机,一个放虚拟机磁盘,相当于默认分了个区,没法有效利用磁盘空间,所以直接删了合并成一个。local-lvm 删除后,空间合并给 local 存储空间。
lvremove /dev/pve/data lvextend -l +100%FREE -r /dev/pve/root
命令操作完后在 Web 界面删除 local-lvm 存储:点击左侧列表的数据中心节点 – 存储 – 选中 local-lvm 删除。
最后还要配置下 local 存储,在上一步的存储界面选中 local,点击 编辑 – 内容,确保选中了 所有选项(包括磁盘映像、容器等),这样 local 分区就可以存放各类文件了。
新建一个虚拟机用来管理所有数据磁盘,并通过 smb 分享给其他服务,省得虚拟机各搞各的了。随便装个 Fedora 或者 Debian,配一下 smb.conf。
/usr/sbin/groupadd smbgroup # 设置 smb 用户组 /usr/sbin/useradd smb_user1 # 新建 smb 用户 /usr/sbin/usermod -aG smbgroup smb_user1 # 添加到组 smbpasswd -a smb_user1 # 设置密码 ufw allow samba # 防火墙放行,如果有的话 sudo chgrp -R smbgroup /srv/samba/shared # 每个共享目录都要操作 sudo chmod 2770 /srv/samba/shared # 设置 SGID,保证新建文件继承组身份
[global] security = user smb passwd file = /etc/samba/smbpasswd access based share enum = Yes server min protocol = SMB3 # 避免用不安全的过时协议 ntlm auth = ntlmv2-only # 禁用不安全的 NTLMv1 认证 server smb encrypt = required # 明确要求客户端使用加密 [tmp-space] # 设置共享目录 comment = 临时目录 create mask = 0664 directory mask = 0775 inherit permissions = Yes path = /srv/samba/tmp-folder read only = No # 目录默认可写 valid users = smb_user1 smb_user2 # 允许哪些用户访问 read list = smb_user1 # 重载读写配置,user1 设为只读 write list = smb_user2 @wgroup # 仅 user2 和 wgroup 里的用户可写,再配合全局的 read only 设置就比较完善了
最后重启 smb:systemctl restart smbd nmbd
Windows 系统只需要在我的电脑 – 工具栏中的“计算机” – 映射网络驱动器即可。
Linux 系统可以添加到 systemd 中以便开启自动挂载,/etc/systemd/system/mnt-sync.mount创建配置文件
[Unit] Description=Mount My SMB Share Requires=network-online.target # 需要网络就绪 After=network-online.target # 在网络就绪后才执行 Wants=network-online.target # 期望网络就绪 [Mount] What=//192.168.A.B/smb-dir Where=/mnt/smb Type=cifs Options=credentials=/etc/samba/credentials,iocharset=utf8,nofail [Install] WantedBy=multi-user.target
其中 /etc/samba/credentials 保存了 smb 的用户名和密码用于连接。内容为
username=smb_user password=123456
另外,如果你的 linux 用户跟 smb 用户不是同一个,那么在 .mount 文件的 Options 里再加上 uid=1000,gid=1000,1000 换成 linux 用户的实际 id,这样 linux 用户才有权限写入 smb 目录。
设置完毕后 reload 下配置
systemctl daemon-reload systemctl enable mnt-sync.mount systemctl start mnt-sync.mount
上面设置文件服务器的目的就是将所有数据硬盘都交由一个虚拟机管理,然后通过 smb 共享给其他机器使用,这样方便集中化管理与隔离,而且相比直接部署在 pve 上,用单独的虚拟机也不会污染主机。
使用 ls -l /dev/disk/by-id/ 找到新硬盘的持久化 ID。因为还会有其他包括系统盘的输出,不好辨认的话可以 apt install lshw 安装 lshw 查看硬盘的具体信息。安装后执行 lshw -class disk -class storage 即可,输出类似
*-disk description: ATA Disk product: ST3000DM001-1CH1 vendor: Seagate physical id: 0.0.0 bus info: scsi@3:0.0.0 logical name: /dev/sda version: CC27 serial: Z1F41BLC size: 2794GiB (3TB) configuration: ansiversion=5 sectorsize=4096
找到这里 serial: Z1F41BLC,然后再执行对比 ls -l /dev/disk/by-id | grep Z1F41BLC 的输出,找到磁盘的 id,不要直接用 /dev/sda,因为它每次重启后是可能发生变化的。
使用 qm set <VMID> -scsiX /dev/disk/by-id/<硬盘ID>,backup=0,discard=on 命令(推荐VirtIO-SCSI)。
apt install cryptsetup ... # 先用 lsblk 找到对应的磁盘 cryptsetup -y -v luksFormat /dev/sdX # 把 X 替换成目标磁盘,会清空硬盘所有数据 ... # 根据提示输入一个密码用于加解密磁盘 cryptsetup luksOpen /dev/sdX encrypted-disk # 打开加密磁盘,会要求输入刚才的密码 mkfs.ext4 /dev/mapper/encrypted-disk # 创建 ext4 文件系统 mkdir /mnt/enc-disk # 挂载加密磁盘 mount /dev/mapper/encrypted-disk /mnt/enc-disk # 之后可以正常使用了 # 卸载和关闭 umount /mnt/enc-disk cryptsetup luksClose encrypted-disk # 添加恢复密钥 cryptsetup luksAddKey /dev/<你的设备> openssl rand -hex -out /root/encryption-key.bin 2048 # 生成密钥文件 cryptsetup luksAddKey /dev/sdX /path/to/keyfile
每次开机执行 luksOpen + mount 后即可使用。关机时系统会自动卸载磁盘,一般不用手动处理。但是手动卸载可以确保没有正在使用的连接,以免被强制卸载导致数据损坏。文件服务器一般是常开的,所以挂载卸载都是手动操作一下。
Syncthing 用来做设备间数据同步。下面设置以当前用户的身份启动 syncthing。
mkdir -p ~/.config/systemd/user/ vi ~/.config/systemd/user/syncthing.service # 文件内容在下方 systemctl --user daemon-reload systemctl --user enable syncthing.service systemctl --user start syncthing.service loginctl enable-linger <用户名> # 用户不登陆也自动运行 systemd 服务
[Unit] Description=Syncthing - Open Source Continuous File Synchronization for %i Documentation=man:syncthing(1) After=network.target [Service] ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0 Restart=on-failure SuccessExitStatus=3 4 RestartForceExitStatus=3 4 # Hardening ProtectSystem=full PrivateTmp=true SystemCallArchitectures=native MemoryDenyWriteExecute=true NoNewPrivileges=true [Install] WantedBy=default.target
PS:因为是在 smb 目录里做同步,同步时就会看到本机会自动修改同步数据中各个目录的权限,搞得很麻烦,到所有目录设置里勾选上“忽略权限”就可以了。
还有其他一些东西需要配置,比如 电源管理、jellyfin 直通核显硬解、备份等,后续再一一补充。
最后贴一下官方文档,有各种问题都可以去里面找找
2025-08-01 01:21:45
在一家公司干久了,面对一成不变的工作模式,难免会有精疲力尽的时候。而且作为开发,时间越久,经手的东西越多,维护的东西也会不断增加,已有的功能想要 retire 也到经过很长一段时间,包袱就会越来越重。然后新需求只增不减,各个组件推陈出新,需要接入,领导们时不时还会再来加点料,同事们也会不断问不同的问题,有些还是几年前,你已经忘光了的东西。每到下班时还放不下干了一半的活,早上醒来不到一分钟脑子里涌入的就是今天的计划。
我们需要一些方法来避开这种螺旋下降,否则这班真的上不下去。生活质量也会大受影响。
首先尽量避免自己经常处理被打断的状态,这将极大影响工作效率,思路打断后再重新加载需要耗费不少能量。次数多了就会明显感觉注意不集中,什么思考问题浮于表面,什么事都不想做只想划水。下面这些都是工作中比较频繁出现的打断。
组内代码 review,流程审批。通常有多个人可以 approve,不一定非要停下手中的事。而且紧急的时候通常也会发消息过来,这时候几秒钟点点鼠标即可。如果觉得这个代码改动比较重要或者值得一看的,可以忙完手头的事情后再看,代码虽然已经提交,但也不意味着有问题改不了了。
领导的问话。这个不太好装死,通常只能停下来处理领导的安排。如果是要花较长时间的,那就当作一项任务统一对待。
来自其他同事的 IM 消息。可以每过一两小时查看,收到消息时大概瞟一眼预览,如果是紧急或者简单的问题都可以快速回答下,不会耽搁太久。其实这也是为同事考虑,也许你的一句简单的回答就能让他们继续进行手中的任务,剩下的理由见下一点。其他消息再定期回复。
视频会议。这种最烦,很多人就是打字都懒得打,屁大点事也一个 call 打过来。或者发了消息,看你半分钟没回,反手就 call 过来。所以我通常会回复得快一点,发个在看都行,以免被迫接电话。
如果不是处于 on call 状态其实很多事情都可以不用实时处理,而且就算大家爱直接发起会议,但只要你把状态设置成勿扰也能阻止大部分。拒接一般是不会,毕竟绝大部分同事人都很好,而且也是为了工作嘛,不用苦大仇深的。说不定人家的问题还是自己的代码引起的,算是帮你找出问题了。反过来我自己找人问比较复杂的问题也会提前发消息问问对方有没有空,简要地给出问题和背景,尽量不直接拉会。
如果你不幸被打断工作拉到会里,那么当你的那部分完成后你可以打个招呼退出会议,而不是陪在一旁等其他人解决完所有问题。
需求是无穷无尽的,虽然现在项目管理中都流行 sprint,但是我们自己并不能一直冲刺。容易让人精疲力竭不说,总是追求快糙猛也容易累积技术债。
领导最好是能和你同一条战线,能支持你对工作内容做出合理预估及排期的,而不是给你继续上强度。一个称职的领导能成为你的助力。
好领导会为你考虑,给你提供建议和指导,烂领导只会让你背锅把你当牛马,而且给你的回报(就是绩效升职这些啦)也少得可怜。领导在很大程度上影响了你在这家公司的打工体验。可惜的事比较看运气,这种事比较难改变。有些公司可以转岗,有机会的话也可以考虑。总之,钱、自己对工作内容的热情、领导/周围同事是否可靠,这三个至少要占俩,这家公司才值得待下去。
领导的安排或者建议也不是说全部都要听,不认可的要给出自己的意见。通常理性讨论且意见合理那就到此为止了,如果还是坚持可能不得不做了(除非领导给你安排了一个大东西,那就不好稀里糊涂的接了。可以想点对策比如求助其他有话语权的人,暴露出更多的问题,或者向领导要求更多的资源来完成此事)
对于自己手头上的任务要有合理安排,每个任务的大致方案,会花多少时间完成编码调试。然后再根据轻重缓急、是否依赖其他同事的任务等安排出优先顺序。每个 owner 都会觉得他们的项目最重要,要优先做他们的,但是我们还是要根据自己掌握的信息来判断先后。实在纠缠不下的话也可以说现在手头在做项目 A 抽不开身,想插队的话找 A 的 owner 商量,把锅甩出去。
只要不是线上的紧急问题很多是有缓冲余地的,并不是非得加班加点的赶。有些 PM 可能随意定了一个时间,但是找开发沟通后发现大家手中都有活,或者玩意实际没有想象中那样简单等等,说明这种 deadline 一开始就是不合理的。
当然如果最后插队成功的话还要通知其他项目的相关同事:你手上的活都要相应延后交付,让他们有个预期。
对没有接触过的代码、项目,在做出一定尝试后如果还是有一堆问题,不要一个人死磕,及时求助其他同事,他们一两句话可能就会节省下你的大量试错成本。
如果你是项目 owner,一个推荐的做法是用文档整理出每个人/每个模块需要做的事情,每周或每两周收集各方进度并记录文档。可以问的具体一点,目前实现了哪些功能,正在处理什么,哪些功能的处理遇到问题等等。有 block 的点及时发现并清除,作为 owner,你需要帮助其他人解决困难,自己处理不了的就要摇人来帮忙。
项目推进遇到阻碍,一定要及时提出来,比如某一方进度总是晚于预期,没有时间投入等。可以和你的领导反馈,由领导出面;或者直接向对方领导反馈,确保对方有足够的资源投入到项目中。通常到对方领导一级就可以解决了,如果对方领导也是混子,那就继续向上 escalate。
项目列表里经常会出现一些优化/重构性质的工作,要提前预估好是不是值得做。比如从老旧框架迁移到新框架,优化一类功能的调用链,这种算是比较立竿见影的。因为只要完成了第一步之后,其他同事便可基于你修改后的范式添加代码,形成规模效应。比如只要对比迁移前后,增加一个新功能时的代码修改量,这是有目共睹的。而其他一些只是修改内部代码结构之类模模糊糊的重构项目就不是特别看好,改动前后的效果也不容易衡量。而且重构本身也是一个高风险活动,没事就动老代码只能说还是太闲了。
同样也经常会有各种紧急的小改动,实现上只是 crud,传传数据而已,那种活尽量少接——特别是当你的手头有比它更重要的活时。就算你经验丰富,该花的时间还是少不了,需求分析、进度同步、编码测试,一套下来花不少时间,而产出却不值一提,大家都知道这东西纯纯体力活,都摆不上台面。当这类任务早已不适合你时,就不要一直陷在它们的泥潭中了。
救火的事可以积极做,不仅仅是利好团队、项目,还正是表现自己的好时候。比如接手一个略有挑战,又时间紧迫的修改,跟上面提到的 crud 还是有些区别。临危受命、力挽狂澜都是好剧本,算是一个奖励丰厚的支线任务,但切记不要搞砸了,哈哈。
观察观察组内同事在做什么项目。通常组内例会大家都会分享自己手头的活以及进度,可以在这时候好好听一听。如果有项目变动可以看看是否值得一做,让自己参与其中。或者有人在实现某个功能,而你正好需要或者它可以很大程度简化你的工作量,这个时候也可以果断用起来,不要浪费精力在同一件事情上。
主要就是降低日常一些重复劳动的东西,比如更新代码仓库,下载依赖包,dump 初步分析等等。思考下简单写个脚本能不能把一些手工活自动化了,累积下来就是你的开发小助手。
其他同事经常来问你的问题,比如询问接口规范、查问题分析日志等。对于碰到两次以上的,可以考虑写个简要的接口文档,或者列出某个问题应该查什么关键日志。这样问问题的人就可以通过关键字自己做个排查,说不定就发现原来问题是出在其他模块,就转头找别人去了。只是太低频的情况我觉得没必要一一写文档,费时间不说、还要持续维护,要是文档没能让人一下子读懂或者并不完全适用某个情况,最后还是要来问。
PS:代码的接口文档可以写在接口注释里,随时可以更新。
既然无法避免打工,那么至少打工时也能尽量保持良好心情心态,毕竟一天至少八小时的活动占了我们生命中的一大部分。希望大家在工作中都能顺顺利利的。
2025-07-26 02:00:02
VPS 需要定期续费,域名也是,万一我哪天嘎了,域名过期主机欠费,我的博客也就销声匿迹了。我希望它能活得久一点,毕竟是自己一手带大的。眼下最好的选择应该就是托管 github pages 了吧,比起被随意关停的产品,作为世界上最大的代码托管网站和开源社区,github 可以被转手,但绝不会轻易消失。除非哪天说要 archive 长期不活跃的仓库和账号,哈哈。不管怎么说,目前来看都是相当好的选择了。用户多、服务稳定还免费。
于是开始着手备份。之前听到过 Hugo 和 Hexo 这些静态网站框架,没多想,选了 Hexo,先上手搞起来再说。
首先到 wordpress 后台自带工具里导出所有数据,得到一个 xml 文件。
然后安装 hexo 还有导入工具 hexo-migrator-wordpress。并将 wordpress 的 xml 导入成 hexo 的文章。
npm install hexo-migrator-wordpress --save hexo migrate wordpress WordPress.xml --paragraph-fix --import-image --skipduplicate
导入完后其实还是要检查下。比如有些文章的图片链接没有识别出来,变成 markdown 后还是指向原站,就要查找替换成新站的图片目录。导入后的图片是散落在 source 目录下的,把图片归类之后又要批量替换掉 .md 里的所有链接。
代码块也要修复,还好是原生支持的,把标签替换成 {% code lang:php %} … {% endcode %} 就好了。
用 migrator 导入进来有个问题,wp 里代码块的换行全消失不生效了,应该是没处理换行符。所以副站现在的代码块还是一片狼藉。不知道是不是我导入时有什么参数没指定好,有机会再搞吧。
还有 post 的固定链接,导入后是以文章名为永久链接的,地址栏里一堆 %XX 看得我头疼。观察到导入的 .md 文件中含有 wp 的 id,比如文件开头就有文章元数据id: ‘2329’
,于是到 hexo 的配置文件 _config.yml 里找到 permalink 改掉就好 permalink: :id/
。
总之就是这样,一点点修改文章的数据和分类,让它尽量跟原来一样。
主题就选用了 Next。暂时没有太多需求,就先用着了。
至于评论,现在博客里的评论其实挺少。而且只是建一个备份站,并不是完全迁移,所以评论就先不处理了。等到哪一天主站也不用 wp 时再一块转移吧。
有一两篇文章里用了数学公式,这个暂时也没搞,似乎可以用 hexo-renderer-pandoc 这个插件。
最后再处理一下 SEO,因为现在原站和副站同时运行了,搜索引擎检查到重复内容可能会降权之类乱七八槽的,所以打算把副站禁用爬虫。
一开始我是添加了 canonical 规范,把副站的页面尽可能对应到原站页面,文章自不必说,还有分类目录、tags 和分页页面,都加上了原站地址。这里还要吐槽下,hexo 添加的 canonical 地址域名似乎只能是副站的地址(即 _config.yml
里的 url:
),导致我不得不再搞个脚本替换域名和一些 url path 上的差异。
然后又担心只设置 canonical 会不会有意外状况导致副站仍然被索引,万一搜索引擎不讲武德呢。要是两个页面同时出现那也挺头疼。所以最后又打算加上 noindex 和 robots.txt 限制。
robots.txt 里设置 Disallow。然后所有 html 页面的 head 里都加上
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet, noimageindex">
到这里就算差不多搭完了,push 到 github 上看看效果。
副站的网址也已经添加到网站底部了
2025-06-27 02:04:49
早上在步行街吃了驴肉火烧,味道挺不错。驴肉有嚼劲,但是又不像牛肉那样嚼得腮帮子酸,入口下肚非常丝滑,可以说不知不觉就吃完了。不过驴肉只吃了这一次,印象还没有那么强烈,主要是这里得手抓羊肉太香太可口了。
饭后就去雅丹地质公园。雅丹和玉门关是同一条路,玉门关比较近差不多就在半路,而且闭园时间比较晚,可以在雅丹回来后再去。在路上还看到了光棱塔(误),其实是个光电产业园。
1 点多到了玉门关。我们还是直接过去了,因为这时天气稍微变好,有蓝天也露了点太阳出来。这么几天下来总算有体会了,天气好的时间基本都在中午到下午一两点这段时间,也就是一天最热的时候。而到傍晚时分,云层通常就会变厚,大前天在月牙泉看到的估计就是唯一的日落了。如今云朵在高空的强风里摇曳,如素纱丝絮,夏空也伴随着阳光在这纤薄的云丝中显现。时不我待,鬼知道回来时还有没有这蓝天了,果断一把方向拐到停车场去。
当年汉武帝列四郡据两关,两关就是玉门关和阳关。两关与长城相连,还有河仓城为仓储,成为一个完整的军事体系。直到西夏占领河西走廊后,玉门关便销声匿迹。
玉门关的遗址就是小方盘城,到现在居然还能留下完整的四壁,简直神奇,也是多亏了人烟稀少和雨脚稀疏。城的北侧远处是疏勒河故道,那里长了很多梭梭草,一片绿洲景象。
当然,作为军事防御工程,玉门关不是单独存在的,连接它的有烽燧和长城。西边 5km 处有一段沉睡两千多年的汉长城遗址。在多年的风雨中它早已残破不堪,但仍有一段 20km 的城墙仍然保持了相对完整。和玉门关类似,长城虽也是夯筑而成,却没有全用黄泥,而是先用红柳芦苇编成框架,中间填上砾石,一层层叠压而成。
往东 12km 处就是曾经的河仓城了,它远比玉门关宏大,东西长 132 米,南北宽 17 米,墙壁上分布着通风用的洞口。三军未动,粮草先行,保存着粮草物资的城仓无疑是将士们抵御外敌的生死命脉。
外面太晒了,手机拿着拍照没一会就过热了。这次真的痛定思痛,必须搞个超广角镜头了,我的中焦镜头实在是应付不了这个。拍完继续赶路。
又沿着 303 省道开了一个多小时,才到地质公园,中间有很长一段区间测速限 80,但实际是不拍照的,法 q~
门票一人 120。地质公园很大,采取包车游览的模式,到一个打卡点就让游客下车花十几二十分钟拍照。出于对雅丹地貌的保护,大部分区域都已经围起来了,连靠近也不行,只有很有限的小路才能走走。
我还记得小时候看《十万个为什么》,里面就有沙漠中魔鬼城的介绍,让我好奇不已。雅丹之所以叫魔鬼城,是因为它的地貌形态异常诡谲,风化形成巨兽、妖魔等扭曲形象,而月光之下更宛如魔域废墟。而且当强风穿过狭窄岩缝或侵蚀孔洞时,因狭管效应产生尖锐呼啸声,类似哨音、嘶吼或哀鸣,尤其在夜晚更令人毛骨悚然。至于雅丹的本意源自维吾尔语“Yardang”,意为陡峭的土丘,是19 世纪瑞典探险家斯文·赫定在罗布泊考察后引入国际地理学界。
很难想象在风蚀的作用下竟能发展出如此千奇百怪的地貌体,可以说世界上的建筑,天坛金字塔狮身人面,动物人造物,海龟孔雀舰船,都能在这找到他们的缩影,大自然的杰作让人们不由得惊叹。
公园很大,东西跨度有 20km,延伸到了甘肃和新疆的边界。随着一次次下车打卡,其他游客也累了,下车的人越来越少,大家就在车上拍拍照,毕竟外面 35 度也晒得慌。外面连个信号也没,只能先拍一顿然后翻相册删照片了。
全部游览完用了将近两个小时。出来后就继续赶路回敦煌。回去路上也是困得一比,中午没买咖啡失策了,昨天还说要买呢结果光速打脸。于是换着开了一会,趁机休息休息。
晚上继续去中午的饭店吃饭,点了酿皮、手抓羊肉还有面皮汤。酿皮和凉皮看着没什么区别,但酿皮主要用麻酱,面也更筋道更厚。这家的羊肉虽然刚入口觉得有点柴,但是稍嚼一会后就会发现还是挺软嫩的,之前吃的羊肉可能煮得更久,所以肉会比较烂。这家的羊肉不仅没有膻味,羊肉的独特肉香也没有那么突出,所以平时不爱吃羊肉的人也很容易入口,也算做的挺有特点了。
之后我们又买了西瓜,马上就吃不到 1.5 元一斤的西瓜了,同样价钱回去就会缩水成四分之一的瓜。再买了一些杏干枸杞等特产,打算明天寄回去。
最后就是去画室把石板画做个收尾啦。
第二天早上收拾妥当,再去吃一顿兰州拉面。饭后再去买点零食备着,给车加满油就出发去机场了,顺便把车还了。
其实昨晚就收到短信说飞机延误了,回程的飞机分两趟,然后早上又收到短信,第二趟也延了……多等了 2 小时。今天又是赶路的一天。后来上了飞机到兰州,发现敦煌下冰雹了,下得挺猛,城里还积了点水,可惜没能体验一下。不仅市区在下,鸣沙山也雨露均沾,希望他们在沙山上能顶住冰雹。
7 天过来统计了下一共开了 1700+ km,对我来说算开得最猛的了,还好出发前看到攻略,说戴背背佳效果挺好。长途戴着确实舒服,简直开车神器。我到现在也没有明显的肩酸,以前开个 3、400 km 可就有症状了,大力推荐。然后就是墨镜/偏光镜,解放你的眼睛,当然游玩时也少不了它,不然要变眯眯眼了。
2025-06-25 03:13:38
今天准备去榆林窟,那边离敦煌有 160+ 公里,所以早一点起床了。早饭去吃的抿节,味道挺好的而且量大管饱。面加小菜只要 18 一人。首先店家会端一盘小菜和调料上来,然后每人都会逐一上玉米面、荞麦面、莜麦面等,只有吃完了上一碗才会端下一碗上来,只要吃得下,面是无限续的。不过 6 碗面我们只吃到第 3 碗就已经吃饱了。
吃完出发,路上经过 270 县道,有大汉天子和大地之子的雕塑,就停车参观了一下。大地之子还搞了个收费停车场,旁边还在建一个雕塑艺术长廊接待中心,也许后面会有更多雕塑在此处安家。目前还是空荡荡的,专程跑来看雕塑就没什么必要了。
差不多两点到达榆林窟。榆林窟位于榆林河两岸,榆林河是疏勒河水系一大支流,发源于祁连山脉。榆林窟的名字取自榆树,因河岸榆树成林,所以是“榆林”,跟某地级市没有任何关系。因为有了莫高窟,所以榆林窟总是显得不太起眼,大有”既生瑜何生亮“之感。
榆林窟规模不大,现存洞窟有 43 座,在峡谷里边分东西两崖。开放给游客的是东崖,这里有 32 座洞窟,对面则是西崖,有 11 座。但榆林窟的西崖从 1997 年开放到现在,从未对游客开放过。这里的门票很便宜,一人只要 40r。
11 窟是清代时期当地老百姓集资而建的,取名叫龙王洞,那显而易见,是当地百姓为了求雨而兴建的。
牌匾上有一列小字,写着嘉庆二十四年六月,也就是公元 1819 年。到了今年已经是第 206 年了,虽不久远,但它却是榆林窟为数不多有准确纪年的洞窟。这个窟布有太极等导管元素,但两侧却是佛教的十八罗汉。其实罗汉是 3 号窟搬过来的,因为它太高了,挡住了大型西夏经变,出于对文物的保护研究等需要就在 1989 年搬过来了。这些塑像没有一身的面部表情一模一样,神态各异,做得还是很生动的,它也是敦煌石窟中清代塑像的代表作,算是精品了。
第 12 窟的营建年代是五代,距今已经有 1,100 年了,但是壁画颜色历经上千年保存非常好,主要在于这个窟的甬道比较深,洞里自然光照射的比较少。榆林窟壁画的颜色整体保存现状比起莫高窟都相对鲜艳,原因就在这。但是看窟门附近的褪色也是比较厉害的。
壁画上弟子和菩萨的榜题仍清晰可辨,南无海天菩萨、南无药王菩萨、南无智山菩萨等,当时的”无“已经是简体字的”无“了,不过当时没有简化字而是叫异体字,毕竟四个披面上千佛加起来有 200 多尊,异体字比起繁体字笔画节约了 1600 多笔,这都是工作量。另外为了凸显阿弥陀佛的尊贵,他的面部和皮肤都贴了金箔,如今依旧金光灿灿。
另一边的壁画上是莫高窟中常见的《东方净土变》。古代很多人不识字,佛经要想很好的弘扬、传播,于是就把晦涩难懂的佛经内容以画面的形式表现出来,就叫经变化。所以一般经变画多是表现极乐世界的美好,由三大部分组成,上 1/3 木构建筑平台楼阁,中央佛讲经,下方歌舞升平,基本都是这么画的。所以整体来讲,当年是有流传下来的粉本,按照粉本去绘制,大差不差,基本上都是这种形态。
左边还有一部《天龙八部》,所表现的是佛陀的护法神,比如蓝皮肤的阿修罗,佛家讲六道轮回,其中一道便是修罗道。他有三只眼睛,在耳朵的后面左右还各有一颗头颅。他的两只手分别托举的是太阳和月亮,太阳里画的是三足金乌,月亮里面画有玉桂树的形象。
旁边的是夜叉部。佛教当中的夜叉有性别之分,敦煌石窟以公夜叉为主,母夜叉为辅。母夜叉的形象有,但比较少见,一般是怀里面抱着一个特别可爱的小孩,叫鬼子母像。像这种形象在山西很多寺庙中也能看到,但是敦煌石窟里的形象不一样,他的眼睛蹬得跟铜铃一般圆鼓鼓,还长了猪鼻子,嘴里冒着两颗尖尖的獠牙。但是他们跟天王的作用一样,都是护持佛法,保卫佛国世界的安宁。只是跟天王长得不一样,上半身赤裸,一丝不挂,就为了凸显男子的力量来,身上的肌肉特别发达。
整个 12 窟在历史中算是保存的比较好,在普窟中也算精品了,可以称为五代十国的代表窟,但是仅限于壁画。但是塑像是清代百姓重塑的,是唐代的药王孙思邈。
洞窟的年代是北宋初年,距今有 1000 年。榆林窟据统计有 13 个宋代洞窟。北宋初年、或者说西夏早期的壁画有个特点是非常的清爽,小清新,绿色用的极多。这个绿色就是产自瓜州当地的矿物质颜料孔雀石,性质稳定,价格低廉,用的量充足。除了绿以外还有个特点就是公式化,说白了就是千篇一律。这个洞窟里三面壁画,画的全是说法图,没有建筑,没有歌舞升平。而且以中央佛陀为中轴线,菩萨基本上对称,所以从菩萨的面部表情、轮廓、姿态、服饰,基本是一个模子里印的,所谓复制粘贴法。
也许当年是有工期要求,所以才有了这样一个方法。将菩萨在纸上画好后沿边线扎出许多小孔,然后把纸平铺在墙上并撒上粉末,最后连线画细节,一尊菩萨就画完了。非常高效模式化,但论创造性、艺术造诣就不如莫高窟的唐朝和榆林窟的西夏晚期了。毕竟宋朝的石窟发展是走下坡路的,而且宋代的政权没有到瓜州这边,当年的实际统治者曹氏归义军家族,后来党项羌族游民西夏灭曹以后又占领 189 年,在文化上是有影响的。另外海上丝路兴起,陆上丝路衰败,好的工匠和颜料都没有传播过来。
主室中心佛坛上是清代塑佛一铺,共三身,主尊佛像前还塑有一卧鹿。
第 17 窟是榆林窟中最早开凿的洞窟之一,建于初唐时期,距今有 1300 多年,但是壁画经过多朝重修,已经抹了一层又一层了,现在外面是宋朝的样板画。
石窟中央立有打大柱子,所以它的形式不是覆斗式而是中心塔柱式。这种石窟数量很少,莫高窟只有 28 个,榆林窟只有 3 个,因为它是从印度的支提式洞窟发展而来,在早期石窟中才比较常见。因为大面积的洞窟需要支撑柱才能保持结构的稳定,所以佛塔就变成了塔柱,然后在柱上开龛塑佛。四面立佛后就可以绕塔礼佛。一年前还可以进去,现在塔柱内侧剥落比较厉害就围住进不去了。
四身佛中央是现在佛释迦牟尼,左边是未来佛弥勒佛,右边是过去佛燃灯古佛,背后则是释迦牟尼立像。佛陀是清代重修的,所以也没了庄严妙像之感。毕竟石窟的佛像是木骨泥塑,经历千年难免又破损缺失,清代百姓觉得修佛像是功德无量,所以重做了头手给安了上去。另外身上的颜色虽然很鲜艳,但饱和度太高,跟千年的矿物颜料相比显得比较艳俗。
第 5 窟严格讲不是窟,它原本是露天放置的释迦牟尼卧像,就跟张掖大佛寺类似。不过张掖是木胎泥塑,这里是石胎泥塑,长度为 10.9 米。唐代时期造好后就这样露天放置,而瓜州风沙又大,再加上地处明朝嘉峪关外,无人居住,就这样埋了 300 多年,直到清代才有移民在此生活。
清朝有莫姓淘金工,当时得了尘肺,到了榆林窟后,于是就发愿清理窟内积沙,然后还组织百姓捐木头盖了屋檐木棚,并将此事记录在墙体上。当然当时的墙已经坍塌不复存在,现在的都是新糊的墙。
5 个窟前后讲了一小时,非常细致。虽说大老远跑一趟只为了看窟,但是看下来也非常值得,人少景好。看完普窟后也挺满意了,特窟就没有强行再去。而且听说特窟讲解更为细致,4 个窟下来得讲 2 小时。我们还要赶路回鸣沙山骑骆驼,得留时间出来。
驱车两小时回程,感觉是来体验开车的。路上还是有点小困,明天还是备点咖啡好了,不然有风险。
差不多 7 点骑上了骆驼。鸣沙山的骆驼都是劳模,一次又一次地驮着人类爬山。据说暑假旺季还会增加一倍的临时工骆驼,到时候山上密密麻麻不敢想。
骑在骆驼背上还是挺颠的,手机拍照基本是糊的,手持很难保持稳定。短时间骑一骑确实挺有趣,但设想一下在背上颠个几小时还是挺痛苦的。
骑完我们没在鸣沙山多做停留,而且今天的云层也很厚,没有蓝天看不到日落,不如回去找吃的。
晚饭后再接着去昨晚的泥画。今天涂色勾线都完成得差不多了,明天再请老板帮忙修一下人物细节吧。
洞窟的信息和解读均有数字化留存,可以在敦煌研究院网站上阅读。
第 11 窟,第 12 窟,第 13 窟,第 17 窟,第 5 窟
2025-06-24 20:25:11
今天的行程是莫高窟,我们中午起床,吃完午饭再过去。午饭吃的是胡羊焖饼。说是饼,其实是手工擀的薄面片,撕成小块后层层铺在羊肉上焖熟。焖完后既有面片的弹性又有羊汤的浓郁。
莫高窟的票价很高,常规票 238 每人,包括 8 个实体窟(180r)数字电影(48r)交通费(10r);应急票则是 100 每人,包括 4 个实体窟(90r)交通费(10r)从游客中心。按预约的常规票和应急票分流,某一天的常规票被预约完后就会放出应急票。六月是淡季,就算提前一个星期也还能约到常规票。这两天六月下旬看了看,不提前一个月确实是约不到常规票了。提高票价试图减少人数似乎并不奏效,不过好歹是创收了。
莫高窟位于敦煌东南方向的鸣沙山东麓断崖上,,始建于十六国时期。北魏、西魏和北周时统治者崇信佛教所以石窟建造得到支持,处于快速发展期。到了隋唐时期,得益于丝路的繁荣,莫高窟更是兴盛,武则天时期有千余个洞窟。安史之乱后敦煌虽先后被占领,但造像仍未受太大影响。到了北宋、西夏和元朝时莫高窟逐渐衰落,仅仅以重修前朝洞窟为主。元朝以后丝路废弃,造像活动也渐渐淡出世人的视野。而后直到清朝康熙四十年,莫高窟才重新引起人们注意。
莫高窟分南北两区,南区是主体,现存 487 个洞窟均有壁画和塑像;而北区主要为僧侣居住修行区,248 个洞窟里只有 5 个存在壁画塑像,目前是不对游客开放的。
改革开放之初,国内资金紧缺,文物保护也出极度困难的境地,许多洞窟只有残破不堪的木栅门,许多洞窟甚至门都没有。就是这种情况下邵逸夫先生捐款 1000w 港币用于文物保护。通过这款捐款才给莫高窟、榆林窟、西千佛洞中 500 多个洞窟装上了铝合金门,100 多个洞窟安装了玻璃屏风,减少了风沙和人为破坏。参观时听讲解说洞窟外的石壁上也修有一些裸露的壁画,那是五代和宋朝时期修建的,当时的崖壁没有开凿洞窟的条件,于是就画在山崖上了。
28 窟修建于晚唐时期,洞窟的形制是隋唐时期常见的覆斗形窟,塑像是一佛二弟子二菩萨。壁画则是在西夏时期重绘。古人画壁画也跟油画类似,先把原来的壁画打磨掉以增加泥土粘附力,然后盖上底料,最终再画上新画。但这无疑严重损坏了原画。
第 23 窟建于盛唐(704—780年),是敦煌盛唐时期最有代表性的洞窟之一。它位于崖面下层,这是一个标准的唐代覆斗形窟顶洞窟。正面开一佛龛。窟顶为团花藻井;西壁敞口龛内绘画和塑像相结合,表现佛及其眷属,但经过清代重修,失去唐代本身的面貌,两相比较,清代的塑像就相形见绌了。精华主要在于顶部和四周的壁画。洞窟的东、南、北壁及窟顶的南披均绘制法华经变,堪称“法华洞”。南顶及南壁西侧绘制的是《观音普门品》,《法华经》第25品《观世音菩萨普门品》曾以单行本流行,称为《观音经》,宣扬观世音菩萨救苦救难的场景。墙壁上绿色矿石颜料尤为鲜艳,至今没有褪色。
328 窟是开凿于初唐时期的代表洞窟。窟形平面为正方形,窟顶是覆斗形。中心绘交杵莲花藻井图案,四披绘棋格团花图案。西壁敞口龛内绘塑结合,表现佛、弟子、菩萨,龛顶绘弥勒说法图;南壁北壁及东壁上方均为净土变,东壁下方为西夏时期的八身供养菩萨。
在莫高窟现存的两千多身彩塑中,各个时代保留的雕塑原作有一百四十余身,其余大都经过后代重绘或重塑。第328窟西壁佛龛内的群像,均为唐代原作。
佛龛中,释迦牟尼结跏趺坐于莲花宝座上,造型丰润,神情威严而端庄,给人一种亲切感。佛陀的衣纹褶皱十分细致,让人联想到丝绸般的柔软。
佛像两侧是两位弟子迦叶和阿难。左侧为迦叶,他是释迦牟尼十大弟子之首,因少欲知足被称为“头陀第一”。这身塑像端严直立,双手合十,双眉紧缩,表现出一位老年高僧庄严虔敬的神情。右侧为阿难像。阿难是释迦牟尼佛的堂弟,他 19 岁皈依佛门,侍佛 25 年,多闻佛法,长于记忆,被称为“多闻第一”。此身阿难像身躯微斜,两手笼于袖内,昂首侍立,面貌丰润,双目微睁,似在出神聆听。
墙上的壁画已经斑驳,特别是人脸氧化的厉害,已经由肤色氧化成了黑色。四周的壁画也是西夏时期盖画上去的。
329 窟在初唐时开凿,窟形平面为正方形,窟顶是覆斗形顶,四面斜披内收至中心形成一个方形倒斗,所以称作覆斗顶。西壁的敞口龛内塑有一佛、二弟子、四菩萨,这些塑像经清代重修,已非唐代塑像原貌。可以看出佛像的做工还是比较粗糙。
龛内的壁画描述了释迦牟尼降生和脱离人生走向成佛的情节。
窟顶是莲花飞天藻井,它是莫高窟现存最精美的藻井壁画之一,藻井井心以淡蓝色作地,象徵天空,中心绘有一大朵莲花。佛教认为莲花是西方净土的象徵。围绕着莲花是四身执花飞天,在蓝天的映衬下,长巾飘举,遨游曼舞,周围浮云流动。最外层是一组伎乐飞天,他们手握琵琶、箜篌、腰鼓等,淡黄的底色,与内层的蓝色相呼应,气氛热烈欢快。
飞天又名乾达婆、香音神。是佛教八部护法神之一,是歌舞散花之神。窟顶藻井中心有围绕莲花旋转的四身飞天,她们都是按逆时针方向转动,动作犹如水中畅游的仙子般舒展自由。辗转的飘带,洋洋洒洒,周围飘动的流云与飞天飞行的方向一致,旋转的律动感更加强烈。
藻井的外围也有一组 12 身飞天,他们手持各类天乐,有琵琶、箜篌、腰鼓、笙、古筝、横笛等。与内层的 4 身飞天遥相呼应,他们的飘带,翻卷略平直,飞的节奏似乎很快,洞窟西壁佛龛顶部也有 12 身飞天,他们或手握天乐,侧身吹奏;或手捧供品飘然而下,或扬手撒花,与窟顶飞天的整齐排列的形式迥然不同,显得更为潇洒、自由。
16 窟为现存的大型洞窟之一,有 268 平方米。主室设马蹄形佛坛,后有通顶背屏,坛上塑像均为清代重塑。四壁壁画为重层,表层为北宋(或西夏)所绘绿底千佛。底层可见晚唐壁画,该画色彩如新,线条清晰。举世闻名的敦煌“藏经洞”(第 17 窟)即发现于此窟甬道北壁。
洞窟四壁绘有千佛。千佛壁画在敦煌壁画中的所占比例很大,有壁画的 492 个洞窟中,343 个洞窟中都有千佛图像。因此,莫高窟在民间也被称为千佛洞。
佛经中说,信佛、念佛、礼拜佛、书写佛名、画佛像都有无量的功德,敦煌莫高窟藏经洞发现的有关佛名的佛经抄本就有七百多卷。千佛图像不仅是佛教徒修禅观想的对象,同时,对于出资开凿洞窟的供养人来说,也是他们所做功德的表现。
296 窟是北周的代表窟之一,主室为覆斗型顶,西壁开一圆券形龛,龛内有彩塑五尊,一佛二弟子二菩萨,都经过清代重修。北周时期的塑像衣服比较单薄,风格朴实厚重,有西域佛教的特色。壁画中的飞天也是男性形象,眼睛细长,姿势略显生硬,给人粗犷笨拙的感觉。
四周的壁画则画满了故事,有《五百强盗成佛姻缘》、《须阇提太子本生》、《微妙比丘尼故事》、《善事太子入海》。
61 窟是五代晚期河西归义军节度使曹元忠及夫人开凿的功德窟,也是一个家族窟。
此窟又称 “文殊堂”,主要是供奉文殊菩萨而修的,文殊菩萨在佛国世界是无穷的智慧,传说他的道场在山西“五台山。文殊是佛教知识分子的代表,唐代又是一个崇尚文化的盛世,所以文殊在唐代达到极盛时期,五台山也就成了中国最大的一处道场,不断有印度、西域、东南亚、以及日本、朝鲜等僧侣前来朝拜文殊圣地。
《五台山图》是莫高窟最大的佛教史迹画,长 13.4 米,高 3.4 米。图中展示了一千多年前的各式各样的建筑形象,包括城垣、寺院、草庵、佛塔、桥梁,由于现存唐、五代的建筑实物极为稀少,这些建筑形象显的非常珍贵。
《五台山图》不同于其它经变画,它描绘的是当时五台山一带的社会生活场面,具有一定的历史真实性。正因为它的存在才能让我们看到曾经的五台山风貌。也使我们看到了古代现实生活的一个方面,如推磨、舂米、拜佛者、送供者、牵驼者等,对研究古代社会生活民俗等方面来说是不可多得的珍贵资料。
96 窟是敦煌莫高窟的标志性洞窟,因外部建有九层木构窟檐而俗称“九层楼”,高达 33 米,是莫高窟的视觉中心。窟内空间呈方形,下宽上窄,以容纳巨型弥勒佛像,走进洞窟后可以从下方仰望弥勒佛坐像,因仰视透视需要,工匠刻意放大上半身比例(尤其是胸部与肩部),压缩下半身,使袈裟在观众视角下呈现均衡舒展的视觉效果。楼外还开了两条通道,既可以就近观赏大佛,也给大佛头部和腰部带来了光照。
佛像高 35.5 米,石胎泥塑彩绘,是国内仅次于乐山大佛和容县大佛的第三大坐佛。佛像面容丰圆,有典型的初唐风格,因此被解读为武则天“母仪天下”的象征。弥勒大佛也经历过后代的多次修复,只有佛脚仍是初唐时代的遗作。唐代的佛像袈裟贴金彩绘,衣纹简洁,至于上面绘制的龙纹图案,则属于清代风格。
晚上有点累,先回一了趟酒店,之后再出去找吃的。在一条小巷子里发现一家非遗手工制作的店铺,店里提供泥土画板和壁画的线稿,可以自己把线稿描到泥板上,再用国画颜料上色就好了。看上去挺有意思,于是吃完饭后我们就跑到那里画画,一直搞到半夜十二点才回去,当然这也才上色到一半,准备明天晚上继续去画。
洞窟的信息和解读均有数字化留存,可以在敦煌研究院网站上阅读。
第 23 窟,第 328 窟,第 329 窟,第 16 窟,第 296 窟,第 61 窟