Trước khi đi sâu về mặt kỹ thuật, bạn cần hiểu lý do nào mà tôi cần phải tinh gọn, việc tạo ram file system image (initramfs.img) là mặc định khi update Fedora. Những việc này, người dùng như tôi, thường không phải đụng tay vào. Hoặc rất đen mới phải đụng tay vào.
Tuy nhiên, mọi thứ phát sinh sau khi tôi update lên kernel 6.16.5-200.fc42.x86_64, việc build initramfs tự động tạo ra file initramfs-6.16.5-200.fc42.x86_64.img với dung lượng hơn 300MB, và nó là quá nhiều với /boot vốn khi cài đặt mặc định chỉ có 1GB mà thôi.
Bạn thấy chứ, có gì đó đã xảy ra, initramfs-6.16.5-200.fc42.x86_64.img có dung lượng cao đột biến so với các .img tiền nhiệm. Tôi có sử dụng nvidia driver tôi nghi ngờ rằng, nvidia driver đã được tích hợp vào initramfs theo cách không cần thiết, và thêm nữa, nó quá chiếm dung lượng.
Vốn dĩ, initramfs.img chỉ dùng ban đầu như là một bước mồi trước khi chroot (change root). Nó thực sự không cần:
Hình ảnh (nvidia, amd)
Âm thanh
Bluetooth
Internet
Nhân tiện, việc build initramfs.image sử dụng command dracut.
II. Cách liệt kê những module tích hợp trong initramfs
Cách 1: lsinitrd file.img
Ở cách này, chúng ta đã có file .img rồi, chúng ta muốn khám xem trong .img đang có cái gì.
Một lần nữa, initramfs.img không cần graphic, những module này là không cần thiết.
Cách 2: Vào /lib/modules/KERNEL_VERSION/extra/
Mặc định, những module .ko (kernel object) phụ sẽ nằm ở /lib/modules/KERNEL_VERSION/extra/.
$ ls /lib/modules/6.16.5-200.fc42.x86_64/extra
nvidia-drm.ko.xz
nvidia.ko.xz
nvidia-modeset.ko.xz
nvidia-peermem.ko.xz
nvidia-uvm.ko.xz
Tôi không hiểu hay quan tâm tại sao nvidia-peermem và nvidia-uvm không xuất hiện trong .img. Tuy nhiên, nó là đủ để hiểu dracut lấy các file kernel object nvidia từ đâu.
3. Cách bỏ qua/omit những module không cần thiết khi tạo initramfs
Để build .img mà bỏ qua những driver không cần thiết, ta sử dụng flag --omit-drivers trong dracut. Dưới đây là command build .img có loại trừ các driver sau:
Tất nhiên việc cứ tạo initramfs.img thủ công sau mỗi lần kernel update là rất bất tiện. Để can thiệp vào bước tự động hóa đang có, ta sẽ cần vào thư mục /etc/dracut.conf.d/ và tạo file omit-driver-nvidia.conf với nội dung như sau:
Sau khi tạo xong, việc chạy dracut sẽ không cần đến flag --omit-drivers nữa. Bên cạnh đó, khi Fedora OS update, nó cũng sẽ bỏ qua việc tích hợp nvidia module khi tạo initramfs.img.
Just có mục đích tối thượng là giúp giảm thời gian dev gõ command. Để làm việc đó, nó sẽ cho phép bọc nhiều shell command
lại, và tạo command tương đương, là tôi thì tôi sẽ gọi là alias command. Trong repo, những thiết lập này nằm trong justfile.
[doc('Run mix deps.get for the given project')]
deps project:
#!/usr/bin/env bash
cd apps/
mix deps.get
just command được tạo ra sẽ có tên là deps, nó bọc lại một danh sách các shell command sau:
cd apps/
mix deps.get
Điều này có nghĩa là nếu bạn siêng, bạn sẽ gõ 2 lệnh, còn nếu bạn dùng just, bạn sẽ chỉ cần chạy just deps project.
Cá nhân tôi, lần đầu biết đến just, mix project của tôi thường nằm ngay repo root / thành ra chưa có nhu cầu. Tuy nhiên,
đáng để ghi nhớ.
Trường hợp ở trên, mix project nằm ở trong /apps/, thành ra khá bất tiện.
2. Zig
Zig thì là một ngôn ngữ lập trình luôn! Tôi không hiểu tại sao cái repo 99% là viết bằng elixir, nhưng lại cần đến zig.
Đoạn này tôi mù mịt rồi rồi nên phải nhờ chatGPT.
Zig chỉ đóng vai trò hỗ trợ khi đóng gói/bundling, cụ thể là với burrito(tôi sẽ nói ở ngay sau)
Nếu mà chỉ cần tạo ra release với mix release đơn thuần (cái loại mà tạo ra nhiều thư mục, file, kèm theo runtime), Zig
là hoàn toàn không cần thiết.
3. Burrito
Burrito có mục đích lớn nhất là tạo ra một file executable duy nhất cho mix project. Bạn nhớ cái mix release truyền thống chứ,
nó bao gồm (erlang runtime, nhiều file, thư mục đi kèm), Burrito thì ngược lại, nó sẽ build ra chỉ một file executable duy nhất.
Bạn còn nhớ thằng Zig ở trên chứ, nó giúp Burrito tạo ra executable file phù hợp cho đa nền tảng (linux, mac, window). Zig nó kết nối(link),
đóng gói những header .h và file liên quan vào.
Lời đầu tiên, anh muốn nói lời cảm ơn em Nguyễn Xuân Mai (Bống) đã ghi chép lại câu chuyện của ông ngoại. Bài viết
này chỉ đơn giản là phiên bản số hóa từ ghi chép của em Bống.
Tôi có bốn người cậu, hai cậu đã hi sinh trong cuộc kháng chiến chống Pháp.
Cậu Hoàng Viên đã tốt nghiệp trường Trung học Albert Sarraut,
tham gia Vệ Quốc Đoàn, đóng lại làng Chèm, hi sinh năm 1946.
Cậu Hoàng Tâm,tốt nghiệp trường trung học Chu Văn An, hi sinh tại chiến trường Cao-Bắc-Lạng.
Năm 1946, phát xít Nhật đầu hàng quân đồng minh. Quân đội Tưởng Giới Thạch kéo vào Đông Dương, giải giáp vũ khí Nhật.
Quân Tưởng với khẩu hiệu: "Diệt Cộng Cầm Hồ". Chúng cướp bóc, sát hại phụ nữ, trẻ thơ Việt Nam.
Hành động của chúng đã lọt vào mắt người biệt động thành Hoàng Lan (bí danh)
Bọn Tưởng lừa bà con vào sân đình, lôi ra một người nông dân 35 tuổi và một em bé 14 tuổi, hãm hiếp cho tới chết và vứt
xác xuống ao. Bà Hoàng Lan cùng cậu Hoàng Viên bày kế hoạch bắt chúng trả nợ máu.
Sáng hôm sau, trong vai người bán rượu, bà mời cho bọn Tưởng uống say và trói chúng, thu vũ khí và vứt xác xuống sông.
Có một điều không ngờ đã xảy ra, một tên Tưởng cới trói được về báo cáo với bọn Tưởng. Chính phủ cụ Hồ quyết định tử hình
bảy người tại bến Chèm.
Đêm hôm trước thi hành án, bố tôi, cụ Nguyễn Xuân Tuyết (lão thành cách mạng), cụ Lưu Quyên (trưởng ban tạp chí
Cộng Sản) đã có ý định giải thoát cho cậu tôi, bằng cách thay thế người khác. Cậu Hoàng Viên trả lời: “Em làm em chịu,
cho em hỏi thăm Hoàng Lan”.
Cuộc hành hình diễn ra sáng hôm sau tại bến Chèm, có sự chứng kiến của mợ Lan, cụ Nguyễn Xuân Tuyết, cụ Lưu Quyên.
Sau này, cậu Hoàng Viên được công nhận là liệt sĩ và quy tập về nghĩa trang Mai Dịch, Hà Nội.
Tháng 10 năm 1953, tôi tình cờ gặp được mợ Hoàng Lan tại nhà bà ngoại. Một người phụ nữ mảnh mai, rắn rỏi, đôi mắt sáng
hiền và đượm buồn man mác.
Mợ Hoàng Lan nói với bà ngoại tôi: “Con xin làm con dâu của mẹ”
Bà ngoại trả lời: “Thằng Viên nó chết vì dân, vì nước. Con phải lập gia đình để có người trả thù cho nó”
Mợ Lan khóc trong khói hương, nước mắt chảy trên gò má
Từ ngày đó qua đi, tôi không còn được gặp mợ, thấy mợ
Tôi có trở lại làng Chèm, hỏi thăm vài bà cùng trang lứa với mợ, họ cho biết bà là biệt động thành, sau này không lấy
chồng và đi tu tại chùa Yên Tử.
Câu chuyện này con viết ra đây, nếu mợ còn sống hãy cho con biết được nhé. Con, Hoàng Nhu, giảng viên Vật Lý Đại Học
Quốc Gia, số nhà 28, ngõ 255, Nguyễn Khang, Hà Nội.
Tôi tìm được một người đồng đội với cậu tôi là ông Quý, xóm Tre, làng Cót, Yên Hòa, Cầu Giấy, biết chuyện này.
Tập sau xin đăng tiếp.
Hoàng Nhu
27/7/2019
II. Thơ: Đi tìm cậu
Lên cao ngắm nhìn trời
Mây trôi nước trôi
Cả một dòng đời
Trôi theo thời gian
Trôi mãi
Công sự ngày xưa lô cốt ngày xưa
Tan thành hết
Xa xa phía chân trời
Cậu nằm lại
Cho đất trời giao nhau
Cho đôi lứa chụm đầu
Cho tình yêu dịu ngọt
Cho đất trời đắm say
Mợ đứng đợi
Cây vọng phu - thời đại
Hoàng Nhu
27/7//2019
MPV is my favorite open source media player. On Fedora 42, the default display manager
is Wayland (as a replacement for X11). MPV does not play well with Wayland, playing videos is delay/lagging.
In addition, I am using an NVIDIA graphic card 3080. it could be a reason that my video playing is delay.
This post is all about customize mpv’s flags to work with Wayland and NVIDIA graphic card.
II. How to do?
Go to ~/.local/share/applications and create a new file named mpvfast.desktop.
Damn man, I really expected that after install dnf install autojump-zsh, everything should run without any modification, I can start using j
command. But no, command j not found. This post is all about installing autojump on Fedora.
Each user has their favorite shell, I am using zsh. this guide is all about setup autojump on zsh. The methodology is the same for fish or bash.
Hi, I am running Firefox on Fedora 41, my display manager is wayland by default. While using Firefox, sometime, I
can’t do mouse click on Firefox. This post will help you save 5 minutes.
First of all, the key point here is environment variable MOZ_ENABLE_WAYLAND=1. We need it before running firefox.
You can test by running this command. If it works, you can read futher, else, stop wasting your time reading my post.
$ export MOZ_ENABLE_WAYLAND=1
$ firefox
I assume that you have play with your firefox smoothly. Now, we will edit .desktop file. So what is it?
it’s a application shortcut for GNOME. You can find it /usr/share/applications.
Now, edit /usr/share/applications/org.mozilla.firefox.desktop, add env MOZ_ENABLE_WAYLAND=1 on Exec= line.
Remember that there are many places need to update.