Làm cách nào tôi có thể xây dựng một bản phân phối tùy chỉnh để chạy trình duyệt web đơn giản?


18

Chúng tôi đang lắp ráp một số máy nhẹ với mục đích rõ ràng là hiển thị một trang web duy nhất trên một màn hình lớn. Tôi cần máy về cơ bản để khởi động nhẹ và nhanh nhất có thể và về cơ bản là nó chạy trình duyệt (WebKit?) Trên toàn màn hình, tải một trang sẽ được điều khiển động bằng JavaScript. Tôi sẽ sử dụng bộ xử lý lõi kép Intel D525 với GPU tích hợp, vì vậy tôi không cần thiết lập bất kỳ trình điều khiển đồ họa độc quyền nào. Khi tôi nhận được một trong những máy này được thiết lập đúng cách, tôi sẽ chỉ có thể đưa ddổ cứng vào máy tính của mình và sau đó đổ nó vào từng máy mới.

Tôi có các câu hỏi sau:

  1. Làm cách nào tôi có thể tạo một "bản phân phối" chỉ bao gồm những gì tôi cần? Tôi cho rằng tôi sẽ cần kernel (;]), X và một trình duyệt web nào đó, nhưng không thực sự quá nhiều. Tôi có thể lấy một cái gì đó như Ubuntu Server và chỉ cần cài đặt X Server và tìm cách để máy tự động đăng nhập, khởi động X và khởi động trình duyệt web, không có câu hỏi nào được hỏi? Có một cuốn sách tôi có thể đọc hoặc một bài báo hoặc một cái gì đó?

  2. Tôi có thể sử dụng gì cho một trình duyệt web rút gọn, đẹp mắt, về cơ bản chạy "Chromium không màu?" Những máy này sẽ không chấp nhận đầu vào của người dùng. Nếu tôi cần quản lý chúng, tôi sẽ sử dụng SSH.

Câu trả lời:


12

Nhiều bản phân phối có một số cơ sở để cài đặt tối thiểu; về cơ bản, nơi bạn chỉ chọn thủ công những gói mà bạn rõ ràng muốn cài đặt. Debian có khả năng này và sẽ là một lựa chọn tốt hơn, trong tình huống của bạn, hơn là đối thủ tối thiểu rõ ràng khác, Arch Linux.

Trạng thái phát hành cuộn của Arch có thể cung cấp một mức độ phức tạp liên tục mà bạn muốn tránh. Debian sẽ cung cấp cơ sở đơn giản, tối thiểu mà bạn đang tìm kiếm cộng với sự ổn định. Có một bài đăng trên blog về việc sử dụng Debian làm kiosk có thể cung cấp một số mẹo hữu ích.

Đối với một trình duyệt, như beav_35 gợi ý, Uzbl là một lựa chọn tốt. Đề xuất của tôi sẽ là Vimprobable , một trình duyệt WebKit có thể viết script , điều khiển bằng bàn phím và có thể được kiểm soát hiệu quả qua SSH.

Là người quản lý cửa sổ, tôi muốn giới thiệu dwm : ở mức dưới 2000 SLOC, nó cực kỳ nhẹ và có thể dễ dàng cấu hình cho thiết lập kiểu kiosk.


dwm có vẻ tuyệt vời cho mục đích này và dù sao tôi cũng quen thuộc hơn với các hệ thống dựa trên Debian, vì vậy có lẽ tôi sẽ sử dụng Debian. Bạn nghĩ tôi có thể làm cho hệ điều hành nhỏ đến mức nào? Và làm cách nào tôi có thể xây dựng bản phân phối Debian?
Naftuli Kay

Khi bạn tiến hành cài đặt, khi bạn đạt đến bước chọn gói, thay vì Laptop, Standard, v.v., hãy chọn "Thủ công" và chỉ chọn các gói đó (như X) bạn cần cho một minimium trần: bắt đầu tại đây debian.org/CD / netinst / # businesscard-ổn định
jasonwryan

5

Trước hết, bạn có thể không muốn phát minh lại bánh xe ... Có một số phân phối tập trung vào kiosk. Một trong số đó có thể giúp bạn tiết kiệm rất nhiều công việc.

Thứ hai, nếu bạn đã quen thuộc với Kickstart trên Fedora và RHEL (hoặc CentOS hoặc Khoa học Linux), bạn có thể sử dụng các công cụ Fedora để tạo ra bất kỳ phân phối nào của riêng bạn. Các tài liệu là một chút rải rác, nhưng bắt đầu ở đây .


Tương đương Debian / Ubuntu: FAI (Cài đặt hoàn toàn tự động)
Gilles 'SO- ngừng trở nên xấu xa'

4

Bắt đầu với một bản phân phối tối thiểu như Arch Linux , sau đó cài đặt các gói bạn cần. Đối với một trình duyệt web đơn giản, hãy thử Uzbl .


uzbl là tuyệt vời. +1
Naftuli Kay

3

Đây là một câu hỏi khá liên quan và vì dự án của bạn không hoàn toàn rõ ràng, một số đề xuất này có thể không đúng, nhưng hãy xem xét chúng những điều cần đánh giá.

  • Bạn có thể không cần trình duyệt web trên từng máy tính là một phần của mảng hiển thị. Nếu bạn đang cố gắng hiển thị một trang duy nhất trên nhiều màn hình, rất có thể bạn sẽ muốn sử dụng một loại công nghệ hiển thị hàng loạt. Có một số biến thể của Xorg chuyên tạo một màn hình lớn từ các thiết bị video trên một số máy.

  • Ngay cả khi bạn sử dụng các máy chủ X riêng biệt trên mỗi máy, bạn có thể sử dụng chuyển tiếp X để gửi dữ liệu hiển thị từ một hoặc nhiều máy tính khác, vì vậy các trình duyệt vẫn không phải chạy cục bộ.

  • Bạn sẽ muốn hoàn toàn không sử dụng trình quản lý cửa sổ và sử dụng thông số kỹ thuật hình học để khởi chạy toàn màn hình ứng dụng của bạn hoặc sử dụng trình quản lý cửa sổ khung hoặc khung có thể định cấu hình (như awesome) để quản lý các cửa sổ trên mỗi màn hình X. Những thứ này giúp dễ dàng sắp xếp và kiểm soát các cửa sổ toàn màn hình và có tính kịch bản cao.

  • Đối với một trình duyệt, tôi nghĩ uzblcó khả năng là sự lựa chọn rõ ràng.

  • Đây có thể là một ứng dụng tốt để khởi động mạng. Bạn có thể thiết lập máy chủ với kernel netbook có sẵn thông qua TFTP và hệ thống tệp có sẵn qua nfs. Tất cả các khách hàng của bạn cần làm là sử dụng một máy ảo có khả năng netboot để liên hệ với máy chủ này, tải xuống kernel của họ và đi. Không có ổ cứng liên quan! Và bảo trì dễ dàng. Tất cả các máy có khả năng có thể khởi động cùng một hình ảnh.

  • "Bản phân phối" của bạn có lẽ nên bao gồm hai thứ. 1) Một tập hợp gói và 2) một tập hợp các tệp cấu hình. Bộ gói là một danh sách các gói cần được cài đặt. Điều này thường có thể được tập hợp trong một tệp văn bản và sau đó bạn có thể sử dụng hầu hết các trình quản lý gói của distro để cài đặt danh sách các gói này vào mục tiêu (ổ cứng hoặc thư mục sẽ là điểm gắn kết nfs của bạn). Các tệp cấu hình có thể phải được giữ trong githoặc một hệ thống kiểm soát nguồn khác và chứa một vài tập lệnh và bất kỳ mod cấu hình nào cần được thực hiện cho hệ thống cơ sở được cài đặt cùng với bộ gói. Xây dựng một hệ thống mới sau đó trở thành:

    • Ổ đĩa gắn kết hoặc thư mục đích
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (hoặc nếu không kiểm tra mã cấu hình của bạn đến thư mục gốc của hệ thống)
    • Cài đặt bộ tải khởi động nếu ổ đĩa hoặc thêm cấu hình PXE nếu netboot
    • khởi động.

Những gì bạn sử dụng làm cơ sở nên phụ thuộc vào những gì bạn cảm thấy thoải mái nhất. Tôi sẽ sử dụng PLD-Linux cho bản thân mình, nhưng có lẽ đề xuất ArchLinux như một hệ thống tài liệu tương tự nhưng tốt hơn cho người mới làm việc. Không có lý do gì Debian , Fedora hoặc Gentoo không hoạt động cho việc này.


khi khởi động mạng: nghe có vẻ TUYỆT VỜI và sẽ khiến mọi thứ dễ bảo trì hơn nhiều. Tuy nhiên, mỗi máy cần tải một URL khác nhau, vì chúng sẽ tìm nạp thông tin duy nhất cho máy. Điều đó có làm được không? Mọi thứ khác dường như vẫn giữ nguyên, mặc dù tôi có thể định cấu hình mỗi máy sử dụng một người dùng / mật khẩu khác nhau để xác thực HTTP-Basic như một phương tiện bảo mật nhỏ.
Naftuli Kay

trên "Bạn có thể không cần trình duyệt web trên mọi máy tính là một phần của mảng hiển thị": Tôi thực sự nghĩ rằng tôi sẽ làm được. Mỗi một trong số các máy này sẽ ở một vị trí khác nhau, điều khiển một màn hình qua VGA hoặc HDMI, hiển thị một trang web duy nhất cho máy đó. (mặc dù chúng tôi có thể cung cấp một URL thay đổi nội dung trên người dùng / mật khẩu).
Naftuli Kay

trên các trình quản lý cửa sổ: Có lẽ tôi chỉ cần sử dụng một cái rất nhẹ như dwmhoặc awesome. Làm cách nào tôi có thể yêu cầu người quản lý cửa sổ khởi động ứng dụng mà không có thanh tiêu đề ở chế độ toàn màn hình?
Naftuli Kay

trên distro nên bao gồm những gì: vì vậy tất cả những gì tôi thực sự cần là tạo một repo git, giữ một danh sách gói và các tệp cấu hình, sau đó tạo ISO bằng cách nào đó. Làm cách nào để có được bản phân phối Debian nhỏ nhất và sau đó hoạt động từ đó? Làm cách nào để lấy các tệp cấu hình này và tạo ISO có thể ghi được? Tôi sẽ sử dụng apt-gethoặc aptitudetrên Debian.
Naftuli Kay

trên chuyển tiếp X: thực sự không cần thiết, vì tôi sẽ lái một màn hình cho mỗi máy. Có lẽ tôi sẽ phải tìm cách để máy phát ra kết nối SSH ngược để máy tính của tôi có thể kết nối với nó, nhưng có thể có cách để tự động hóa việc này. Có cách nào để máy tính A mở kết nối TCP với máy tính B và sau đó máy tính B kết nối qua kết nối đó với máy tính A qua SSH không? Mặt khác, tôi phải lấy tên DNS động cho mỗi bộ định tuyến: không thú vị / dễ dàng.
Naftuli Kay

2

Buildroot 2016.05 + Midori

Buildroot là một công cụ tuyệt vời để xây dựng các bản phát hành tối thiểu:

  • bạn cho nó một .configtập tin
  • nó tải xuống và biên dịch tất cả các phần mềm và phụ thuộc cần thiết, và tạo ra một hình ảnh

Midori một trình duyệt dựa trên WebKit tối giản và Buildroot có gói Midori tích hợp.

.configtệp được sử dụng: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

Cách tạo tập tin cấu hình đó:

  1. Theo dõi: Cách cài đặt X11 trên hệ thống Linux Buildroot của riêng tôi? | Unix & Linux Stack Exchange để tạo một hình ảnh với X11.
  2. make menuconfig
    1. Toolchain
      1. Thư viện C
        1. glibc (cho midori)
    2. Gói mục tiêu
      1. Thư viện đồ họa và ứng dụng
        1. mesa3d
          1. chọn tất cả các trình điều khiển Gallium và DRI vì tôi không hiểu cái nào là cần thiết (đối với OpenGL EGL)
          2. OpenGL EGL (cho libgtk3)
      2. Thư viện
        1. Đồ họa 1. libgtk3 (cho midori)

Làm sạch bản dựng vì chúng tôi đã thay đổi chuỗi công cụ và xây dựng lại:

rm -rf output
make BR2_JLEVEL=$(nproc)

Chờ giờ. Sau đó, thông thường:

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

Và từ bên trong QEMU:

root
startx

và từ GUI X11, nhấp vào xtermcửa sổ và chạy:

midori

Kết quả:

nhập mô tả hình ảnh ở đây

Kích thước hình ảnh: 220M! So sánh với 28M của hệ thống X11 trần Cách cài đặt X11 trên hệ thống Linux Buildroot của riêng tôi? - Trao đổi ngăn xếp Unix & Linux . Có thể vì phụ thuộc WebKit + GTK3.

Đã thử nghiệm trên máy chủ Ubuntu 16.04, QEMU 2.5.0.

NetSurf

Được viết bằng SDL, hỗ trợ fbdev: http://www.netsurf-browser.org/about/screencreen/#framebuffer

fbdev là một giao diện cấp thấp hơn được cung cấp bởi mô-đun hạt nhân Linux không đi qua X11 (tôi nghĩ X11 có thể tùy chọn sử dụng nó làm phụ trợ). Về cơ bản, bạn chỉ cần ghi vào bộ nhớ và nó hiển thị trên màn hình.

Để sử dụng fbdev trên Ubuntu, bạn phải sử dụng TTY (ví dụ: Ctrl + Alt + F1).

Vì vậy, bạn có thể có thể thoát khỏi một cách hình ảnh nhỏ hơn Midori.

Buildroot 2016.05 có một gói netsurf-buildsystemsẽ cung cấp nó, nhưng tôi chưa thử nghiệm. Nếu ai đó quản lý để chạy nó, vui lòng chỉnh sửa trong một liên kết đến .config, ảnh chụp màn hình và kích thước hình ảnh.


1

Tôi đã viết một tập lệnh bash nhỏ một lần lấy Arch Linux ISO và tạo ISO mới với hình ảnh gốc được sửa đổi, cài đặt hoàn toàn tự động. Điều này bao gồm phân vùng cũng như thiết lập và định cấu hình hệ thống với Xorg, FVWM và Chromium. Hệ thống được cài đặt sẽ tự động đăng nhập và khởi động Chromium. Chỉ cần đặt ISO mới vào ổ flash USB và ngả người ra sau. ;-)

Tuyên bố miễn trừ trách nhiệm: tập lệnh được cung cấp nguyên trạng, không bảo hành. Tôi đã không sử dụng nó trong một thời gian, vì vậy nó có thể cần một tinh chỉnh ở đây hoặc ở đó. Sửa đổi khi cần thiết.

#!/bin/bash
# Helpful pages:
#
#   * [ArchWiki topic][1] that explains the options of an AIF configuration
#     file.
#
#   * [Status of automated installation][2], a topic in the Arch Linux Forums
#     that contains the original basic install script by *mhertz*.
#
# [1]: https://wiki.archlinux.org/index.php/AIF_Configuration_File
# [2]: https://bbs.archlinux.org/viewtopic.php?id=111925

TMP_DIR=/tmp/arch-install

# Read command line parameters for input and output ISO files.
if [ -z "$1" ]; then
    echo 'No input file specified, aborting.'
    exit 1
elif [ ! -f "$1" ]; then
    echo 'Input file "'$INPUT_ISO'" not found, aborting.'
    exit 1
elif [ -z "$2" ]; then
    echo 'No output file specified, aborting.'
    exit 1
elif [ -f "$2" ]; then
    echo 'Output file "'$OUTPUT_ISO'" already exists, aborting.'
    exit 1
fi

# Determine full paths to input and output ISO files.
INPUT_ISO=$(readlink -f "$1")
OUTPUT_ISO=$(readlink -f "$2")

# Set some variables for convenience.
SOURCE_DIR=$TMP_DIR/source
DEST_DIR=$TMP_DIR/dest
ROOT_DIR=$TMP_DIR/squashfs-root
BOOT_CFG=$DEST_DIR/boot/isolinux/isolinux.cfg

# Extract ISO image and root image.
mkdir -p $SOURCE_DIR
mount -o loop "$INPUT_ISO" $SOURCE_DIR
cp -a $SOURCE_DIR $DEST_DIR
umount $SOURCE_DIR
rmdir $SOURCE_DIR
unsquashfs -d $ROOT_DIR $DEST_DIR/root-image.sqfs
rm $DEST_DIR/root-image.sqfs

# Modify the root image as needed.
cat >> $ROOT_DIR/etc/aif.conf <<EOF
SOURCE=cd
FILE_URL=file:///src/core/pkg
SYNC_URL=http://ftp.tu-chemnitz.de/pub/linux/archlinux/\$repo/os/\$arch
HARDWARECLOCK=UpTC
TIMEZONE=Europe/Vienna
RUNTIME_REPOSITORIES=
RUNTIME_PACKAGES=
TARGET_GROUPS=base
TARGET_PACKAGES_EXCLUDE=
TARGET_PACKAGES='openssh xorg xcursor-vanilla-dmz-aa'

worker_runtime_network () {
    dhcpcd eth0
}

worker_configure_system () {
    prefill_configs
    sed -i '/^HOSTNAME/ s/"myhost"/"arch"/' \$var_TARGET_DIR/etc/rc.conf
    sed -i '/^password/ s/pam_permit\.so/pam_unix.so md5 shadow/' \$var_TARGET_DIR/etc/pam.d/chpasswd
    sed -i '\|Server = http://ftp\.tu-chemnitz\.de/| s/^#//' \$var_TARGET_DIR/etc/pacman.d/mirrorlist
    sed -i '/id:3:initdefault:/ s/^/#/' \$var_TARGET_DIR/etc/inittab
    sed -i '/id:5:initdefault:/ s/^#//' \$var_TARGET_DIR/etc/inittab
    sed -i '\|x:5:respawn:/usr/bin/xdm| s/^/#/' \$var_TARGET_DIR/etc/inittab
    echo "x:5:respawn:/bin/su -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' myuser" >> \$var_TARGET_DIR/etc/inittab
    sed -i 's/^timeout .*$/timeout 0/' \$var_TARGET_DIR/boot/grub/menu.lst
    cp /etc/rc.local.firstboot \$var_TARGET_DIR/etc/rc.local
}

# Mandatory variables.
GRUB_DEVICE=/dev/sda
PARTITIONS='/dev/sda 20:ext2:+ 512:swap 2500:xfs *:xfs'
BLOCKDATA='/dev/sda1 raw no_label ext2;yes;/boot;target;no_opts;no_label;no_params
/dev/sda2 raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params
/dev/sda3 raw no_label xfs;yes;/;target;no_opts;no_label;no_params
/dev/sda4 raw no_label xfs;yes;/home;target;no_opts;no_label;no_params'
EOF

cat >> $ROOT_DIR/etc/rc.local <<EOF
aif -p automatic -c /etc/aif.conf
reboot
EOF

cat >> $ROOT_DIR/etc/rc.local.firstboot <<EOF
echo root:rootpassword | chpasswd
useradd -m myuser
echo myuser:myuser | chpasswd
cat >> /home/myuser/.xinitrc <<EOT
#!/bin/sh
exec fvwm2
EOT
cat >> /home/myuser/.Xdefaults <<EOT
Xcursor.theme: Vanilla-DMZ-AA
EOT
mkdir -p /home/myuser/.fvwm
cat >> /home/myuser/.fvwm/config <<EOT
DeskTopSize 1x1
DesktopName 0 Main
DestroyFunc StartFunction
AddToFunc StartFunction
 + I Test (Init) Exec exec xsetroot -solid '#303030'
 + I Test (Init) Exec exec chromium 'http://www.stackoverflow.com'
DestroyMenu RootMenu
AddToMenu RootMenu "Menu" Title
 + "Terminal" Exec exec xterm
 + "Browser" Exec exec chromium 'https://www.stackoverflow.com'
 + "" Nop
 + "Log off" Quit
 + "Reboot" Exec exec sudo /sbin/reboot
 + "Shutdown" Exec exec sudo /sbin/halt
OpaqueMoveSize unlimited
Style * ClickToFocus, ResizeOpaque
Style chromium !Title, !Border, !Handles
CursorStyle root top_left_arrow
CursorStyle stroke hand2
IgnoreModifiers L25
Key Help R A -
Key F1 R A -
Key Tab A M -
Key Escape A MC -
Mouse 1 R A -
Mouse 1 T A Move
Mouse 1 FS A Resize
Mouse 1 I A Iconify Off
Mouse 2 FST A -
Mouse 3 R A Menu RootMenu Nop
EOT
mkdir -p /home/myuser/.config/chromium/Default
touch /home/myuser/.config/chromium/First\ Run
cat >> /home/myuser/.config/chromium/Default/Preferences <<EOT
{
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "custom_chrome_frame": true,
      "enable_spellchecking": false
   },
   "default_search_provider": {
       "enabled": true,
       "encodings": "UTF-8",
       "icon_url": "about:blank",
       "id": "2",
       "instant_url": "",
       "keyword": "google.com",
       "name": "Google",
       "prepopulate_id": "1",
       "search_url": "{google:baseURL}search?ie={inputEncoding}&q={searchTerms}",
       "suggest_url": ""
   },
   "devtools": {
      "disabled": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "download": {
      "directory_upgrade": true
   },
   "extensions": {
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
      }
   },
   "geolocation": {
      "default_content_setting": 2
   },
   "google": {
      "services": {
         "username": ""
      }
   },
   "homepage": "https://www.stackoverflow.com",
   "homepage_is_newtabpage": false,
   "intl": {
      "accept_languages": "en",
      "charset_default": "ISO-8859-1"
   },
   "ntp": {
      "pref_version": 3
   },
   "profile": {
      "clear_site_data_on_exit": true,
      "content_settings": {
         "pref_version": 1
      },
      "default_content_settings": {
         "plugins": 1
      },
      "exited_cleanly": true,
      "notifications_default_content_setting": 2,
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "tabs": {
      "use_vertical_tabs": false
   },
   "translate": {
      "enabled": false
   }
}
EOT
chown -R myuser:myuser /home/myuser
pacman -Sy
pacman -S --noconfirm pacman
pacman -S --noconfirm fvwm-devel chromium sudo
echo 'myuser arch=NOPASSWD: /sbin/halt,/sbin/reboot' > /etc/sudoers.d/start_stop
chmod 0440 /etc/sudoers.d/start_stop
rm /etc/rc.local
EOF

# Create the new root image.
mksquashfs $TMP_DIR/squashfs-root $TMP_DIR/dest/root-image.sqfs
rm -rf $TMP_DIR/squashfs-root

# Configure the boot loader.
sed -i 's/TIMEOUT 3000/TIMEOUT 100/' $BOOT_CFG
sed -i '/APPEND hd0 0/d' $BOOT_CFG
sed -i 's/archisolabel=[^ ]*/archisolabel=ARCH/' $BOOT_CFG

# Create the new ISO image.
genisoimage -l -R -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table -V ARCH \
    -o "$OUTPUT_ISO" $DEST_DIR
rm -rf $TMP_DIR
isohybrid "$OUTPUT_ISO"

0

Đối với một hệ thống như thế này, tôi khuyên bạn nên dùng Puppy .

Mặc dù bạn có thể xây dựng bản phân phối của mình bằng bất kỳ phiên bản Linux nào, Puppy giúp dễ dàng xây dựng các hình ảnh có thể khởi động tùy chỉnh, được thiết kế nhỏ gọn và hỗ trợ hệ thống tệp lớp phủ tuyệt vời.

Tôi chỉ có thể dd ổ cứng

Không - Tôi muốn giới thiệu và xây dựng một hình ảnh có thể khởi động mà bạn có thể duy trì một cách hợp lý - cách tiếp cận mà bạn đề xuất sẽ quay lại và cắn bạn.


Vấn đề là, tôi sẽ chạy hệ điều hành trên một ổ USB. Tôi thậm chí sẽ không có ổ đĩa để cài đặt HĐH.
Naftuli Kay

0
  • Một số người đã đề cập đến uzbl và tôi đồng ý rằng đó là một lựa chọn tốt - nhưng bạn có thể thấy luakit thậm chí còn tốt hơn.

  • Như Caleb đã đề cập, bạn không thực sự cần bất kỳ trình quản lý cửa sổ nào . Đây là tập lệnh mẫu mà tôi đã tạo để chạy máy chủ Xorg không có WM với trình duyệt luakit tối đa hóa:

    #!/bin/sh
    XDCMD="xdotool search --class luakit windowsize %3 100% 100%"
    while [ 1 ]
    do
        ( sleep 0.5; $XDCMD || sleep 0.2 && $XDCMD || sleep 5 && $XDCMD ) &
        /usr/bin/luakit $@
    done
    

    Nó sử dụng xdotool để tối đa hóa cửa sổ ngay sau khi luakit đã bắt đầu. Có lẽ có một giải pháp tốt hơn cho điều đó mặc dù ...

  • Đối với cơ sở của hệ thống như vậy, tôi chắc chắn muốn giới thiệu Gentoo. Điều đó không chỉ bởi vì tôi biết nó tốt nhất;) mà còn bởi vì nó sử dụng một cách tiếp cận khá độc đáo là quản lý toàn cầu các tùy chọn thời gian xây dựng của tất cả các phần mềm đã cài đặt. Ý tôi là những lá cờ USE . Sử dụng các tính năng đó, bạn xác định bộ tính năng / thư viện / tiêu chuẩn được sử dụng bởi tất cả các chương trình hỗ trợ chúng - vì vậy, ví dụ, nếu bạn muốn chương trình của mình sử dụng ALSA và không cần thêm phụ trợ âm thanh như esd, jack hoặc pulseaudio, bạn đặt alsa -jack -esd -pulseaudiotrong số các cờ USE của bạn. Sau đó, mỗi phần mềm bạn xây dựng có thểsử dụng các phụ trợ âm thanh bổ sung ngoài ALSA sẽ được xây dựng mà không có sự hỗ trợ cho những thứ đó. Vì điều này xảy ra ở cấp cấu hình / bản dựng, bạn kết thúc với phần mềm mỏng hơn đáng kể. Vì vậy, đây là một triết lý xây dựng (trong khi tôn trọng tất cả các phụ thuộc) thay vì tước xuống (cuối cùng có thể là lỗi và rất khó để duy trì).


0

Tôi sẽ đề cập đến điều này bởi vì tôi ngạc nhiên không ai khác có.

Linux từ Scratch là một cuốn sách (pdf) hướng dẫn bạn thông qua việc tạo phân phối Linux của riêng bạn. Nó có thể là quá mức cho những gì bạn đang cố gắng thực hiện (thực ra, nó đang thấy như bạn đã có các công cụ bạn cần), nhưng nó có thể chứng tỏ là một công cụ vô giá để hiểu cách hệ thống hoạt động. Nó thực sự không khó và không có lập trình liên quan.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.