Switch Debian from legacy to UEFI boot mode

I updated the Sea BIOS for my DELL Chromebook today, which only supports UEFI boot mode. I don't want to reinstall the system, I thought there must be a way I could convert the legacy mode to UEFI mode. Yes, I found it. this article and this answer helped me out.

可以让Linux在Chromebook上运行的与ChromeOS 一样快吗?

我前两天在Facebook Market上又捡了一台电子垃圾:$50买了一台 Dell Chromebook 11 3120,配置是 2GB 内存,16GB硬盘。卖家之前已刷了Sea BIOS,安装了CloudReady系统,但没有搞定声卡驱动,所以没有声音,也因此他才愿意便宜出售。


我在这台Chromebook 上安装了Debian 11系统,目前没有遇到大的问题,声音,蓝牙,wifi,hdmi都能正常工作,除了觉得有点慢,以及从suspend状态复原时系统变得极度缓慢,几乎没有响应。


  1. 禁用Wayland
  2. 删除SWAP分区
  3. 升级到最新内核

今天打算再设置下 ZRAM内存压缩。没想到极其简单,有ZRAM Tools加持,一分钟就设置好了。照抄的例子,给ZRAM分配了60%的物理内存。Reference 那就看后续使用效果了,我会过两天再更新这个文章。

「25-05-2023更新」 我卸掉了gnome3,装上了xfce4。这是我在移情gnome之前最喜欢的桌面环境。2G内存毕竟太少了,而gnome太贪心,它吃掉了太多的内存。为了更好的性能,我转向了xfce4,而它也确实没有让我失望。这台小机器现在能做很多事,并且跑得很流畅。我很开心啦!

English Version (Thanks ChatGPT)

I picked up another piece of electronic junk on Facebook Marketplace a couple of days ago: a Dell Chromebook 11 3120 for $50. It came with 2GB of RAM and a 16GB hard drive. The seller had previously flashed Sea BIOS and installed CloudReady, but couldn't get the sound card driver working, so there was no audio. That's why he was willing to sell it cheap.

I like the smoothness of ChromeOS but dislike the limitations when it comes to installing software. So, I wondered if it would be possible to install Linux on the Chromebook and have it run almost as fast as ChromeOS. I wasn't sure and knew it was unlikely, but I wanted to give it a try anyway.

I installed Debian 11 on this Chromebook, and so far, I haven't encountered any major issues. The sound, Bluetooth, Wi-Fi, and HDMI all work fine. The only drawbacks are that it feels a bit slow, and the system becomes extremely sluggish when resuming from suspend, almost unresponsive.

Here are the things I've tried on this Chromebook so far:

  • Disable Wayland in /etc/gdm3/daemon.conf
  • Removing the SWAP partition
  • Upgrading to the latest kernel

Today, I'm planning to set up ZRAM memory compression. Surprisingly, it was incredibly simple with the help of ZRAM Tools. I allocated 60% of the physical memory to ZRAM, following an example I found at Debian Wiki. We'll see how it performs in practice, and I'll update this article in a couple of days.

Update on 25-05-2023: I have uninstalled GNOME 3 and installed XFCE4. This is my favorite desktop environment before switching to GNOME. With only 2GB of memory, it was just too little, and GNOME was too resource-intensive, consuming a significant amount of memory. In order to improve performance, I turned to XFCE4, and it has not let me down. This little machine can now handle many tasks and runs smoothly. I am very happy!"

Don't change the inode when editing a file with Vim

I keep my config files on github, and I use hard-link for most of the config files. It's convenient, as I can check the new changes easily and submit some of the changes when necessary. However, the default behavior of vim troubles me. It always changed the inode when I save the config file!

tldr; the solution is: put the following line in your .vimrc

set backupcopy=yes

PS Though this way fixed Vim's behavior, I sadly found that git pull will change the config file's inode as well. So there is actually no feasible solution. I have abandoned this hard link approach. If you have better solutions to maintain all your config files in one repository, please let me know!

How to delete all bin/obj folders in a complex solution in GitBash

Sometimes we need to delete all the bin/obj folders in a solution to resolve issues in Rider or Visual Studio. I assume you already have your preferred method for this task, but I would like to share my approach here in case someone else is unaware of how to do it in GitBash or MSys terminal:

cat ~/bin/delBinObj
set -e
find . -iname "bin" -print0 | xargs -0 echo
find . -iname "obj" -print0 | xargs -0 echo
read -p "The above folders are going to be deleted, are you sure? " -n 1 -r
echo    # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]; then
    find . -iname "bin" -print0 | xargs -0 rm -rfv
    find . -iname "obj" -print0 | xargs -0 rm -rfv
    echo done
    echo no
    exit 1

Alternative to Oracle Regular expression for word boundaries

You might already know that Oracle regular expression doesn't support \b. However, we need it. So the answer is