15 điểm bởi GN⁺ 2025-09-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Driver ftape là driver kernel Linux mã nguồn mở duy nhất có thể khôi phục dữ liệu từ các băng sao lưu (QIC-80) của thập niên 1990
  • Tuy nhiên, driver này đã không còn được bảo trì từ sau năm 2000, nên chỉ có thể dùng trong các môi trường Linux cũ
  • Tác giả đã dùng Claude Code để refactor mã nguồn cũ cho phù hợp với kernel Linux hiện đại, và chuyển đổi thành công nó thành một mô-đun kernel độc lập
  • Trong quá trình đó, Claude tự động chuyển các hàm và cấu trúc lỗi thời sang API mới, còn người dùng phân tích thủ công kết quả đầu ra để sửa một số lỗi cấu hình
  • Thông qua trải nghiệm sử dụng AI coding agent, tác giả rút ra được insight về việc khuếch đại năng lực của lập trình viên và cách onboarding nhanh vào công nghệ, framework mới

Bối cảnh: khôi phục băng sao lưu cũ và driver ftape

  • Khôi phục dữ liệu từ các hộp băng từ như QIC-80 là một trong những sở thích của tác giả
  • Các băng này phần lớn cần ổ băng chuyên dụng kết nối với bộ điều khiển floppy
    • Những ổ này chủ yếu được doanh nghiệp nhỏ hoặc cá nhân trong thập niên 1990 dùng để sao lưu
    • Cách dùng bộ điều khiển floppy giúp triển khai rẻ hơn mà không cần adapter SCSI riêng, nhưng tồn tại nhiều nhược điểm như giới hạn tốc độ (500Kbps) và giao thức phi tiêu chuẩn
  • Để giao tiếp với thiết bị băng này, trên Linux bắt buộc phải có driver kernel ftape
    • Vì chỉ có ftape mới đọc được dữ liệu nhị phân thô thuần túy, nên nó là thành phần bắt buộc cho việc khôi phục
  • Nhưng driver ftape đã không được bảo trì kể từ khoảng năm 2000, nên không thể dùng trên kernel Linux hiện đại
    • Vì vậy, mỗi lần cần khôi phục dữ liệu, tác giả đều phải tự khởi động một bản Linux cũ (như CentOS 3.5)

Bắt đầu hiện đại hóa driver kernel với Claude Code

  • Tác giả yêu cầu Claude Code, kèm theo phần mô tả repository, "hiện đại hóa driver để có thể build trên kernel mới nhất"
  • Claude tìm và thay thế các hàm và cấu trúc lỗi thời cho phù hợp với API và cấu trúc kernel hiện tại
    • Sau nhiều vòng phản hồi và hiệu chỉnh thủ công, tác giả hoàn thiện được mã driver biên dịch không lỗi
  • Ban đầu mã chỉ có thể build bên trong toàn bộ cây mã nguồn kernel, nhưng qua yêu cầu bổ sung, Claude đã tự động tạo hệ thống build mô-đun ngoài độc lập
    • Nhờ đó có thể tạo riêng file mô-đun kernel .ko và bắt đầu thử nghiệm kết nối với phần cứng thực tế

Quá trình xử lý sự cố

  • Mô-đun kernel được nạp bình thường, nhưng phát sinh vấn đề nhận diện và giao tiếp với ổ đĩa
    • Do đây là tác vụ cần quyền sudo nên Claude không thể tự lặp lại trực tiếp, tác giả phải gửi thủ công log dmesg để lần theo vấn đề
  • Thông qua việc so sánh log với các trường hợp thành công trước đó, Claude phát hiện lỗi liên quan đến địa chỉ cổng I/O mặc định chưa được thiết lập và khởi tạo tham số
    • Giá trị mặc định bị chuyển từ -1 thành 0xffff làm việc dò tìm thất bại; sau khi đặt lại đúng địa chỉ thì vấn đề được giải quyết
  • Cuối cùng, mô-đun hoạt động bình thường và dump dữ liệu từ băng thử nghiệm thành công

Hàm ý từ trải nghiệm cộng tác với AI coding agent

  • Tương tác với Claude Code mang lại cảm giác như "cộng tác với một lập trình viên junior" hơn là làm việc với công cụ thuần túy
    • Người dùng vẫn phải chủ động dẫn dắt các quyết định kiến trúc, phát hiện vấn đề và định hướng xử lý
  • Càng đưa ra từ khóa chuyên biệt theo domain và yêu cầu cụ thể thì hiệu quả càng cao
  • AI agent có thể làm năng suất tăng vọt khi được giao đúng loại công việc, vì vậy cần có cảm nhận tốt về giới hạn và điểm mạnh của nó
  • AI giúp khuếch đại năng lực cá nhân lên nhiều lần. Nếu làm thủ công thì công việc này có thể mất vài tuần, nhưng chỉ với trao đổi thường ngày và phản hồi, tác giả đã hoàn thành trong vài ngày
    • Trong quá trình đó, tác giả cũng học được nhiều kỹ năng hữu ích thực sự như thực hành phát triển kernel hiện đại, kiến trúc x86, các công cụ dòng lệnh mới
  • Tác giả nhấn mạnh rằng AI đặc biệt giúp tăng tốc mạnh giai đoạn onboarding và thích nghi ban đầu với các framework mới như Rust, Flutter

Kết luận: ftape sống lại

  • Sau 25 năm, ftape một lần nữa có thể build và sử dụng trên Linux hiện đại
  • Tác giả đang tiếp tục cải tiến tính năng và thử nghiệm thêm, đồng thời đã xác nhận hỗ trợ thiết bị dùng cổng song song bên cạnh các ổ dùng floppy
  • Thiết bị vật lý gần như không đổi so với trước đây, nhưng hệ điều hành đã chuyển từ CentOS 3.5 sang Xubuntu 24.04

Tham khảo

  • Mã nguồn dự án ftape được công khai trên GitHub
  • Danh sách thiết bị sưu tầm của tác giả cùng thông tin khác có thể xem trên blog cá nhân

1 bình luận

 
GN⁺ 2025-09-08
Ý kiến trên Hacker News
  • Tôi đã tự tải module và liên tục sao chép thủ công đầu ra dmesg để dán cho Claude
    Một trong những lý do chính tôi dùng Claude là vì nó có thể khởi chạy các tiến trình chạy lâu và đọc đầu ra của chúng để gỡ lỗi
    Ở đây có nhiều cách “hack” khác nhau để bỏ qua bước thủ công đó — ví dụ như pipe dmesg sang một cổng UDP cục bộ rồi để Claude khởi động listener

  • Tôi nghĩ đây là một ví dụ hay
    Tôi thấy khi dùng những công cụ kiểu này sẽ có hai hiệu ứng chính
    Thứ nhất, với những framework tôi đã quen, Claude có thể nhanh chóng pattern matching phần lặp đi lặp lại và tăng năng suất lên rất nhiều
    Thứ hai, ngay cả khi học framework mới, tôi cũng có thể onboard nhanh hơn rất nhiều — điểm này đặc biệt hữu ích ở các tập đoàn lớn dùng nhiều stack khác nhau
    Muốn thật sự đánh giá đúng năng lực của AI thì phải đầu tư khá nhiều thời gian vào các công nghệ và framework đang thay đổi rất nhanh
    Nếu bạn chưa dùng Claude Code hay Claude 4.0 hơn 100 giờ thì có thể vẫn chưa hiểu hết tiềm năng của nó
    Kịch bản “người không biết lập trình code theo cảm tính rồi sa lầy” có lẽ rất phổ biến trên X (trước đây là Twitter), nhưng với các developer có kinh nghiệm chịu bỏ thời gian đều đặn thì trải nghiệm sẽ hoàn toàn khác

    • Đây đúng là điểm mấu chốt
      Tôi dùng Claude Code mỗi ngày như công cụ chính để sửa đổi codebase hiện có
      Qua quá trình thử sai, tôi đã xây dựng được quy trình riêng cho mình, nhờ đó năng suất và mức độ sẵn sàng thực hiện các thử nghiệm lớn đều tăng mạnh
      Tôi đặc biệt thích việc sau khi tự thiết kế trước cấu trúc dữ liệu, schema và API nội bộ, Claude Code có thể làm UI cho công cụ nội bộ gần như chuẩn ngay từ lần đầu
      Nó cho phép tôi tập trung vào tư duy trừu tượng thay vì các việc lặp lại đơn điệu hay độ phức tạp của framework, và đó là một bước ngoặt lớn trong 16 năm sự nghiệp của tôi

    • Đúng vậy
      Tác giả về cơ bản đã yêu cầu Claude port driver Linux 2.4 lên 6.8
      Vì trên mạng có đủ tài liệu liên quan nên phần lớn công việc Claude xử lý được, và chỉ ở những phần cốt lõi thật sự phức tạp mới cần đến chuyên môn của tác giả
      Câu “dùng AI như công cụ khuếch đại bùng nổ kỹ năng của bản thân” thực sự rất đúng ở đây
      Nếu năng lực sẵn có của bạn là 0 thì dù nhân với AI cũng vẫn gần như là 0, thậm chí còn có thể ra năng suất âm

    • Trong nhóm chúng tôi cũng có những người mạnh dạn thử sức ở lĩnh vực mới nhờ LLM, nhưng ngay cả khi cho mọi người dùng Claude 4 thinking agent thì vẫn thường sinh ra rất nhiều đoạn code kỳ quặc
      Nếu phần lớn sự nghiệp lập trình của bạn vốn đã quen với pattern matching, thì LLM agent chỉ là một lớp pattern matching nữa chồng lên trên, còn với những thành viên không có trải nghiệm đó thì lại càng rắc rối
      LLM agent làm pattern matching mà con người có thể làm với tốc độ nhanh hơn nhiều, nhưng nhìn chung thì tôi không thấy nó vượt trội hẳn so với con người

    • Không chỉ hữu ích khi khám phá framework mới mà còn cả ngôn ngữ mới
      Nhóm chúng tôi dùng Ruby, mà Ruby thì dễ đọc, nên không cần thật sự học cú pháp vẫn có thể để LLM viết code rồi tự mình chỉ đưa ra quyết định
      Dù không biết Ruby, bạn vẫn có thể ngay lập tức viết ra code đạt mức chấp nhận được của nhóm, từ đó làm việc hiệu quả ngay trong môi trường xa lạ
      (Lưu ý: các thành viên trong nhóm sẽ review Pull Request)

    • Câu “công cụ khuếch đại bùng nổ kỹ năng của bản thân” tuần này tôi cảm nhận rất rõ khi làm đi làm lại một dự án nhỏ đến 10 lần
      Nó phát huy giá trị thực sự ở công đoạn tôi thêm định hướng vào những thứ AI tạo ra còn lộn xộn, rồi dọn dẹp và hợp nhất markup, style, JS, v.v.
      Trong môi trường như startup, nơi coding convention còn lỏng lẻo, rất khó áp dụng các yêu cầu pattern matching, nhưng tôi hình dung với những codebase mạnh và trưởng thành thì hiệu quả sẽ hoàn toàn khác

  • Tôi nghĩ phải viết prompt càng cụ thể càng tốt bằng các từ khóa chuyên biệt theo domain
    Nếu thiếu hiểu biết kỹ thuật về một ngôn ngữ hay framework cụ thể thì prompt sẽ trở nên mơ hồ, và LLM sẽ tự ý lấp vào chỗ trống đó nên rất dễ tạo ra kết quả lệch với ý định ban đầu
    Chính sự mơ hồ này là nguồn gốc của bug
    Đó là mặt trái của “khuếch đại bùng nổ”

    • Nếu chỉ nói “lớp C cần một tuple constructor”, tôi mong Claude sẽ đáp lại kiểu “khoan đã đã…”
  • Đọc những bài như thế này làm tôi nghĩ rằng trước khi có LLM, lượng công việc thực sự được xử lý đã thấp hơn rất nhiều so với nhu cầu tồn tại trên thực tế

    • Tôi vẫn nghĩ nút thắt không phải là “thực thi” mà là “ý tưởng có thị trường”
      Không có quá nhiều việc mà mọi người thật sự sẵn sàng trả tiền

    • Vấn đề không phải lúc nào cũng là thiếu việc để làm, mà là thiếu người có nền tảng kỹ thuật và kinh nghiệm đi trước để làm việc đó
      Nếu không có kinh nghiệm phát triển kernel thì dù viết prompt giỏi đến đâu cũng khó đạt kết quả như tác giả
      Về mặt lý thuyết, có vẻ như sức mạnh của LLM có thể giúp “hiện đại hóa” mọi driver cũ sang kernel mới, nhưng trên thực tế vẫn bắt buộc phải có sự giám sát của con người (người có tay nghề), và số chuyên gia như vậy quá ít so với số lượng driver cần duy trì
      Có một cuộc thảo luận và phỏng vấn rất hay của Alan Kay và Joe Armstrong, trong đó họ nhắc đến những vấn đề phát sinh vì phần lớn code không được phát triển theo kiểu chỉ đổi target rồi biên dịch lại mà không có đặc tả
      Nếu tồn tại một đặc tả chính thức bên ngoài code, thì việc chuyển driver sang target kernel mới sẽ dễ hơn nhiều, giống như “biên dịch lại đặc tả”
      Nhưng hiện nay ta dựa vào code cũ chứ không phải đặc tả, nên trong quá trình chuyển code cũ sang code hiện đại, LLM chỉ đang pattern matching với những đoạn code tương tự chứ không thật sự hiểu và đảm bảo được ý nghĩa — vì vậy kỹ năng của con người là điều bắt buộc

  • Tôi từng có cảm giác rằng AI sẽ làm giảm rào cản gia nhập việc kernel hacking
    Và tôi liên tục thấy điều đó là đúng
    Có lẽ sắp tới hỗ trợ phần cứng embedded/ARM sẽ mở rộng mạnh hơn, và cũng có thể sẽ xuất hiện các OS mới cho thiết bị thông minh nhẹ

    • Nếu dùng AI đúng cách thì có thể nâng trình rất nhanh
      Chỉ là đa số mọi người lại yêu cầu AI “xây luôn cả căn nhà”, trong khi thực ra hiệu quả hơn nếu dùng nó như “người giúp cầm búa”
  • Tôi nghĩ đây là một ví dụ tốt về một developer hiểu rõ vai trò và giới hạn của AI, rồi dùng nó một cách phù hợp
    Tôi đặc biệt ấn tượng với việc nhờ có sự hoài nghi mang tính phản biện mà tác giả đã làm driver thành một module riêng

  • Tôi muốn chỉ ra một “manh mối quan trọng” mà người khác chưa nhắc đến
    Tác giả đã nói rất rõ rằng “không nên thổi phồng kết quả của Claude vì tôi có một chút kinh nghiệm với kernel module và khá vững C”
    Tức là không phải cứ hỏi ba lần là kernel module hoàn thành ngay, mà đã có nhiều vòng trao đổi qua lại và nhiều lần tự tay sửa code
    Tác giả nói rằng nếu không hiểu cấu trúc bên trong cơ bản của kernel module thì tuyệt đối không thể hiện đại hóa được — đây là bối cảnh phải luôn ghi nhớ, bất kể dùng công cụ sinh code nào
    Ngoài ra, tác giả còn viết rằng cảm giác cộng tác với Claude Code “giống như làm việc với một kỹ sư junior”, kiểu giao gì cũng làm, bị chỉ ra lỗi thì lập tức xin lỗi rồi tâng bốc, nên trông giống một phong cách nịnh nọt hơn là một kỹ sư thực thụ
    Cuối cùng, ở chỗ tác giả nói rằng “nếu thật sự muốn thì tôi vẫn có thể tự làm việc này một mình, nhưng sẽ phải học lại cách phát triển kernel của 25 năm trước”
    Điều đó một lần nữa nhắc lại rằng bản chất của việc hiện đại hóa là “hiểu chính xác legacy solution và nắm được mình cần gì”
    Và việc lợi ích lại đến từ chỗ có thể bỏ qua khâu học lại cũng là một điểm khá thú vị

    • Thái độ kiểu gatekeeping là có hại
      Tôi thấy rất thích việc agent có thể giải thích cho tôi những dự án mà tôi chưa biết
      Gần đây tôi clone source của Firefox rồi dùng qwen-code để hỏi về các tính năng AI của Firefox và cách chúng được triển khai, và tôi đã học được rất nhiều theo cách rất tuyệt
      Cách học bây giờ ngầu hơn rất nhiều
  • Tôi nghĩ đây là một thay đổi giúp trao thêm sức mạnh cho mọi người
    Tác giả là người đã làm side project với đam mê trong thời gian dài, và việc nâng cấp công cụ rõ ràng là điều rất tốt
    Dù vậy, nếu lĩnh vực quá ngách thì cộng đồng có thể thiếu hỗ trợ, và đó là lúc LLM giúp xử lý các vấn đề tùy biến
    Rào cản gia nhập đang dần hạ thấp, và sẽ đến lúc cả những người có ít nền tảng kỹ thuật hơn cũng có thể tự giải quyết những bài toán tình huống đặc thù nhưng đơn giản hơn
    Đây là một thay đổi tích cực, giúp nhiều người có thể thử sức hơn

  • Tôi tò mò sau khi nâng cấp thì tốc độ đã thay đổi thế nào

    • Vẫn là cùng phần cứng được điều khiển bằng cùng driver đó, nên tốc độ chắc sẽ y hệt thôi